From: Hans Wennborg Date: Mon, 2 Oct 2017 17:44:47 +0000 (+0000) Subject: CodeView symbol dumper: use symbolic names for registers X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=669e5cb88da323f46bffb12525f98ded0974beb1;p=llvm CodeView symbol dumper: use symbolic names for registers https://reviews.llvm.org/D38469 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@314690 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/DebugInfo/CodeView/SymbolDumper.cpp b/lib/DebugInfo/CodeView/SymbolDumper.cpp index 62e73acc72d..e64404be6dc 100644 --- a/lib/DebugInfo/CodeView/SymbolDumper.cpp +++ b/lib/DebugInfo/CodeView/SymbolDumper.cpp @@ -317,7 +317,8 @@ Error CVSymbolDumperImpl::visitKnownRecord( Error CVSymbolDumperImpl::visitKnownRecord( CVSymbol &CVR, DefRangeRegisterRelSym &DefRangeRegisterRel) { - W.printNumber("BaseRegister", DefRangeRegisterRel.Hdr.Register); + W.printEnum("BaseRegister", uint16_t(DefRangeRegisterRel.Hdr.Register), + getRegisterNames()); W.printBoolean("HasSpilledUDTMember", DefRangeRegisterRel.hasSpilledUDTMember()); W.printNumber("OffsetInParent", DefRangeRegisterRel.offsetInParent()); @@ -330,7 +331,8 @@ Error CVSymbolDumperImpl::visitKnownRecord( Error CVSymbolDumperImpl::visitKnownRecord( CVSymbol &CVR, DefRangeRegisterSym &DefRangeRegister) { - W.printNumber("Register", DefRangeRegister.Hdr.Register); + W.printEnum("Register", uint16_t(DefRangeRegister.Hdr.Register), + getRegisterNames()); W.printNumber("MayHaveNoName", DefRangeRegister.Hdr.MayHaveNoName); printLocalVariableAddrRange(DefRangeRegister.Range, DefRangeRegister.getRelocationOffset()); @@ -340,7 +342,8 @@ Error CVSymbolDumperImpl::visitKnownRecord( Error CVSymbolDumperImpl::visitKnownRecord( CVSymbol &CVR, DefRangeSubfieldRegisterSym &DefRangeSubfieldRegister) { - W.printNumber("Register", DefRangeSubfieldRegister.Hdr.Register); + W.printEnum("Register", uint16_t(DefRangeSubfieldRegister.Hdr.Register), + getRegisterNames()); W.printNumber("MayHaveNoName", DefRangeSubfieldRegister.Hdr.MayHaveNoName); W.printNumber("OffsetInParent", DefRangeSubfieldRegister.Hdr.OffsetInParent); printLocalVariableAddrRange(DefRangeSubfieldRegister.Range, @@ -393,7 +396,7 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, FrameCookie.getRelocationOffset(), FrameCookie.CodeOffset, &LinkageName); } - W.printHex("Register", FrameCookie.Register); + W.printEnum("Register", uint16_t(FrameCookie.Register), getRegisterNames()); W.printEnum("CookieKind", uint16_t(FrameCookie.CookieKind), getFrameCookieKindNames()); W.printHex("Flags", FrameCookie.Flags); diff --git a/test/DebugInfo/COFF/fp-stack.ll b/test/DebugInfo/COFF/fp-stack.ll index 77af8fe4f17..73585e1e169 100644 --- a/test/DebugInfo/COFF/fp-stack.ll +++ b/test/DebugInfo/COFF/fp-stack.ll @@ -12,7 +12,7 @@ entry: ; ASM: .cv_def_range Lfunc_begin0 Lfunc_end0, "A\021\200\000\000\000" ; OBJ: DefRangeRegisterSym { -; OBJ: Register: 128 +; OBJ: Register: 0x80 ; OBJ: MayHaveNoName: 0 ; OBJ: LocalVariableAddrRange { ; OBJ: OffsetStart: .text+0x0 diff --git a/test/DebugInfo/COFF/local-variable-gap.ll b/test/DebugInfo/COFF/local-variable-gap.ll index fbd23579102..1fc56bf1e14 100644 --- a/test/DebugInfo/COFF/local-variable-gap.ll +++ b/test/DebugInfo/COFF/local-variable-gap.ll @@ -73,7 +73,7 @@ ; OBJ-NOT: LocalSym { ; OBJ: DefRangeRegisterSym { ; OBJ-NEXT: Kind: -; OBJ-NEXT: Register: 23 +; OBJ-NEXT: Register: ESI (0x17) ; OBJ-NEXT: MayHaveNoName: 0 ; OBJ-NEXT: LocalVariableAddrRange { ; OBJ-NEXT: OffsetStart: .text+0x{{.*}} diff --git a/test/DebugInfo/COFF/local-variables.ll b/test/DebugInfo/COFF/local-variables.ll index 80b8814e2ec..e34b7d129d0 100644 --- a/test/DebugInfo/COFF/local-variables.ll +++ b/test/DebugInfo/COFF/local-variables.ll @@ -111,7 +111,7 @@ ; OBJ: VarName: param ; OBJ: } ; OBJ: DefRangeRegisterRelSym { -; OBJ: BaseRegister: 335 +; OBJ: BaseRegister: RSP (0x14F) ; OBJ: HasSpilledUDTMember: No ; OBJ: OffsetInParent: 0 ; OBJ: BasePointerOffset: 52 @@ -128,7 +128,7 @@ ; OBJ: VarName: a ; OBJ: } ; OBJ: DefRangeRegisterRelSym { -; OBJ: BaseRegister: 335 +; OBJ: BaseRegister: RSP (0x14F) ; OBJ: HasSpilledUDTMember: No ; OBJ: OffsetInParent: 0 ; OBJ: BasePointerOffset: 40 @@ -145,7 +145,7 @@ ; OBJ: VarName: b ; OBJ: } ; OBJ: DefRangeRegisterRelSym { -; OBJ: BaseRegister: 335 +; OBJ: BaseRegister: RSP (0x14F) ; OBJ: HasSpilledUDTMember: No ; OBJ: OffsetInParent: 0 ; OBJ: BasePointerOffset: 36 @@ -173,7 +173,7 @@ ; OBJ: VarName: v ; OBJ: } ; OBJ: DefRangeRegisterRelSym { -; OBJ: BaseRegister: 335 +; OBJ: BaseRegister: RSP (0x14F) ; OBJ: HasSpilledUDTMember: No ; OBJ: OffsetInParent: 0 ; OBJ: BasePointerOffset: 44 @@ -203,7 +203,7 @@ ; OBJ: VarName: v ; OBJ: } ; OBJ: DefRangeRegisterRelSym { -; OBJ: BaseRegister: 335 +; OBJ: BaseRegister: RSP (0x14F) ; OBJ: HasSpilledUDTMember: No ; OBJ: OffsetInParent: 0 ; OBJ: BasePointerOffset: 48 diff --git a/test/DebugInfo/COFF/pieces.ll b/test/DebugInfo/COFF/pieces.ll index 9a90300bb99..9e1d7408b84 100644 --- a/test/DebugInfo/COFF/pieces.ll +++ b/test/DebugInfo/COFF/pieces.ll @@ -113,14 +113,14 @@ ; OBJ: VarName: o ; OBJ: } ; OBJ: DefRangeSubfieldRegisterSym { -; OBJ: Register: 24 +; OBJ: Register: EDI (0x18) ; OBJ: MayHaveNoName: 0 ; OBJ: OffsetInParent: 0 ; OBJ: LocalVariableAddrRange { ; OBJ: } ; OBJ: } ; OBJ: DefRangeSubfieldRegisterSym { -; OBJ: Register: 23 +; OBJ: Register: ESI (0x17) ; OBJ: MayHaveNoName: 0 ; OBJ: OffsetInParent: 4 ; OBJ: LocalVariableAddrRange { @@ -143,7 +143,7 @@ ; OBJ: VarName: o ; OBJ: } ; OBJ: DefRangeSubfieldRegisterSym { -; OBJ: Register: 18 +; OBJ: Register: ECX (0x12) ; OBJ: MayHaveNoName: 0 ; OBJ: OffsetInParent: 4 ; OBJ: LocalVariableAddrRange { @@ -166,7 +166,7 @@ ; OBJ: VarName: o ; OBJ: } ; OBJ: DefRangeSubfieldRegisterSym { -; OBJ: Register: 18 +; OBJ: Register: ECX (0x12) ; OBJ: MayHaveNoName: 0 ; OBJ: OffsetInParent: 0 ; OBJ: LocalVariableAddrRange { @@ -193,7 +193,7 @@ ; OBJ: VarName: o ; OBJ: } ; OBJ: DefRangeRegisterRelSym { -; OBJ: BaseRegister: 330 +; OBJ: BaseRegister: RCX (0x14A) ; OBJ: HasSpilledUDTMember: No ; OBJ: OffsetInParent: 0 ; OBJ: BasePointerOffset: 0 @@ -204,7 +204,7 @@ ; OBJ: VarName: p ; OBJ: } ; OBJ: DefRangeSubfieldRegisterSym { -; OBJ: Register: 17 +; OBJ: Register: EAX (0x11) ; OBJ: MayHaveNoName: 0 ; OBJ: OffsetInParent: 4 ; OBJ: LocalVariableAddrRange { @@ -228,7 +228,7 @@ ; OBJ: VarName: o ; OBJ: } ; OBJ: DefRangeRegisterRelSym { -; OBJ: BaseRegister: 335 +; OBJ: BaseRegister: RSP (0x14F) ; OBJ: HasSpilledUDTMember: Yes ; OBJ: OffsetInParent: 4 ; OBJ: BasePointerOffset: 36 diff --git a/test/DebugInfo/COFF/register-variables.ll b/test/DebugInfo/COFF/register-variables.ll index 493728c8f78..52c447d7723 100644 --- a/test/DebugInfo/COFF/register-variables.ll +++ b/test/DebugInfo/COFF/register-variables.ll @@ -92,7 +92,7 @@ ; OBJ: VarName: p ; OBJ: } ; OBJ: DefRangeRegisterSym { -; OBJ: Register: 18 +; OBJ: Register: ECX (0x12) ; OBJ: LocalVariableAddrRange { ; OBJ: OffsetStart: .text+0x0 ; OBJ: ISectStart: 0x0 @@ -100,7 +100,7 @@ ; OBJ: } ; OBJ: } ; OBJ: DefRangeRegisterSym { -; OBJ: Register: 23 +; OBJ: Register: ESI (0x17) ; OBJ: LocalVariableAddrRange { ; OBJ: OffsetStart: .text+0x7 ; OBJ: ISectStart: 0x0 @@ -114,7 +114,7 @@ ; OBJ: VarName: a ; OBJ: } ; OBJ: DefRangeRegisterSym { -; OBJ: Register: 17 +; OBJ: Register: EAX (0x11) ; OBJ: LocalVariableAddrRange { ; OBJ: OffsetStart: .text+0xC ; OBJ: ISectStart: 0x0 @@ -128,7 +128,7 @@ ; OBJ: VarName: c ; OBJ: } ; OBJ: DefRangeRegisterSym { -; OBJ: Register: 17 +; OBJ: Register: EAX (0x11) ; OBJ: LocalVariableAddrRange { ; OBJ: OffsetStart: .text+0xC ; OBJ: ISectStart: 0x0 @@ -142,7 +142,7 @@ ; OBJ: VarName: b ; OBJ: } ; OBJ: DefRangeRegisterSym { -; OBJ: Register: 17 +; OBJ: Register: EAX (0x11) ; OBJ: MayHaveNoName: 0 ; OBJ: OffsetStart: .text+0x13 ; OBJ: ISectStart: 0x0 @@ -162,7 +162,7 @@ ; OBJ: VarName: a ; OBJ: } ; OBJ: DefRangeRegisterSym { -; OBJ: Register: 17 +; OBJ: Register: EAX (0x11) ; OBJ: LocalVariableAddrRange { ; OBJ: OffsetStart: .text+0xC ; OBJ: ISectStart: 0x0 @@ -176,7 +176,7 @@ ; OBJ: VarName: b ; OBJ: } ; OBJ: DefRangeRegisterSym { -; OBJ: Register: 17 +; OBJ: Register: EAX (0x11) ; OBJ: LocalVariableAddrRange { ; OBJ: OffsetStart: .text+0x13 ; OBJ: ISectStart: 0x0 diff --git a/test/DebugInfo/COFF/types-array.ll b/test/DebugInfo/COFF/types-array.ll index 1a4afa8bd21..601f64aef15 100644 --- a/test/DebugInfo/COFF/types-array.ll +++ b/test/DebugInfo/COFF/types-array.ll @@ -68,7 +68,7 @@ ; CHECK: VarName: a ; CHECK: } ; CHECK: DefRangeRegisterRelSym { -; CHECK: BaseRegister: 22 +; CHECK: BaseRegister: EBP (0x16) ; CHECK: HasSpilledUDTMember: No ; CHECK: OffsetInParent: 0 ; CHECK: BasePointerOffset: -20 diff --git a/test/DebugInfo/X86/dbg-declare-inalloca.ll b/test/DebugInfo/X86/dbg-declare-inalloca.ll index e8a310856c1..894ffb8ddc0 100644 --- a/test/DebugInfo/X86/dbg-declare-inalloca.ll +++ b/test/DebugInfo/X86/dbg-declare-inalloca.ll @@ -67,7 +67,7 @@ ; OBJ: VarName: a ; OBJ: } ; OBJ: DefRangeRegisterRelSym { -; OBJ: BaseRegister: 21 +; OBJ: BaseRegister: ESP (0x15) ; OBJ: BasePointerOffset: 12 ; OBJ: } ; OBJ: LocalSym { @@ -78,7 +78,7 @@ ; OBJ: VarName: b ; OBJ: } ; OBJ: DefRangeRegisterRelSym { -; OBJ: BaseRegister: 21 +; OBJ: BaseRegister: ESP (0x15) ; OBJ: BasePointerOffset: 16 ; OBJ: } ; FIXME: Retain unused. @@ -90,7 +90,7 @@ ; OBJ: VarName: c ; OBJ: } ; OBJ: DefRangeRegisterRelSym { -; OBJ: BaseRegister: 21 +; OBJ: BaseRegister: ESP (0x15) ; OBJ: BasePointerOffset: 24 ; OBJ: } ; OBJ-LABEL: ProcEnd { diff --git a/test/MC/COFF/cv-def-range-gap.s b/test/MC/COFF/cv-def-range-gap.s index 29f2def8e1b..2a1a179b430 100644 --- a/test/MC/COFF/cv-def-range-gap.s +++ b/test/MC/COFF/cv-def-range-gap.s @@ -9,7 +9,7 @@ # CHECK-NOT: LocalSym { # CHECK: DefRangeRegisterSym { # CHECK-NEXT: Kind: S_DEFRANGE_REGISTER (0x1141) -# CHECK-NEXT: Register: 23 +# CHECK-NEXT: Register: ESI (0x17) # CHECK-NEXT: MayHaveNoName: 0 # CHECK-NEXT: LocalVariableAddrRange { # CHECK-NEXT: OffsetStart: .text+0x5 @@ -23,7 +23,7 @@ # CHECK-NEXT: } # CHECK-NEXT: DefRangeRegisterSym { # CHECK-NEXT: Kind: S_DEFRANGE_REGISTER (0x1141) -# CHECK-NEXT: Register: 23 +# CHECK-NEXT: Register: ESI (0x17) # CHECK-NEXT: MayHaveNoName: 0 # CHECK-NEXT: LocalVariableAddrRange { # CHECK-NEXT: OffsetStart: .text+0x10015 @@ -33,7 +33,7 @@ # CHECK-NEXT: } # CHECK-NEXT: DefRangeRegisterSym { # CHECK-NEXT: Kind: S_DEFRANGE_REGISTER (0x1141) -# CHECK-NEXT: Register: 23 +# CHECK-NEXT: Register: ESI (0x17) # CHECK-NEXT: MayHaveNoName: 0 # CHECK-NEXT: LocalVariableAddrRange { # CHECK-NEXT: OffsetStart: .text+0x2001B @@ -43,7 +43,7 @@ # CHECK-NEXT: } # CHECK-NEXT: DefRangeRegisterSym { # CHECK-NEXT: Kind: S_DEFRANGE_REGISTER (0x1141) -# CHECK-NEXT: Register: 23 +# CHECK-NEXT: Register: ESI (0x17) # CHECK-NEXT: MayHaveNoName: 0 # CHECK-NEXT: LocalVariableAddrRange { # CHECK-NEXT: OffsetStart: .text+0x2001C