[llvm] r333726 - Implemented sane default for llvm-objdump's relocation Value format
Daniel Cederman via llvm-commits
llvm-commits at lists.llvm.org
Thu May 31 22:31:58 PDT 2018
Author: dcederman
Date: Thu May 31 22:31:58 2018
New Revision: 333726
URL: http://llvm.org/viewvc/llvm-project?rev=333726&view=rev
Log:
Implemented sane default for llvm-objdump's relocation Value format
Summary:
"Unknown" for platforms that were not manually added into the switch
did not make sense at all. Now it prints Target + addend for all
elf-machines that were not explicitly mentioned.
Addresses PR21059 and PR25124.
Original author: fedor.sergeev
Reviewers: jyknight, espindola, fedor.sergeev
Reviewed By: jyknight
Subscribers: eraman, dcederman, jfb, dschuff, aheejin, llvm-commits
Differential Revision: https://reviews.llvm.org/D36464
Modified:
llvm/trunk/test/DebugInfo/X86/DW_AT_location-reference.ll
llvm/trunk/test/MC/Sparc/sparc-tls-relocations.s
llvm/trunk/test/MC/X86/abs8.s
llvm/trunk/test/Object/X86/objdump-disassembly-inline-relocations.test
llvm/trunk/test/Object/objdump-relocations.test
llvm/trunk/test/Object/objdump-shndx.test
llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp
Modified: llvm/trunk/test/DebugInfo/X86/DW_AT_location-reference.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/DW_AT_location-reference.ll?rev=333726&r1=333725&r2=333726&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/DW_AT_location-reference.ll (original)
+++ llvm/trunk/test/DebugInfo/X86/DW_AT_location-reference.ll Thu May 31 22:31:58 2018
@@ -49,7 +49,7 @@
; Check we have a relocation for the debug_loc entry in Linux output.
; LINUX: RELOCATION RECORDS FOR [.rela.debug_info]
; LINUX-NOT: RELOCATION RECORDS
-; LINUX: R_X86_64{{.*}} .debug_loc+0
+; LINUX: R_X86_64{{.*}} .debug_loc
; ModuleID = 'simple.c'
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n32"
Modified: llvm/trunk/test/MC/Sparc/sparc-tls-relocations.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Sparc/sparc-tls-relocations.s?rev=333726&r1=333725&r2=333726&view=diff
==============================================================================
--- llvm/trunk/test/MC/Sparc/sparc-tls-relocations.s (original)
+++ llvm/trunk/test/MC/Sparc/sparc-tls-relocations.s Thu May 31 22:31:58 2018
@@ -28,13 +28,13 @@ foo:
! First sequence uses LE_HIX22/LE_LOX10
! OBJDUMP: {{[0-9,a-f]+}}: 31 00 00 00 sethi 0, %i0
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LE_HIX22 Unknown
+! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LE_HIX22 Head
! ASM: sethi %tle_hix22(Head), %i0 ! encoding: [0x31,0x00,0x00,0x00]
! ASM: ! fixup A - offset: 0, value: %tle_hix22(Head), kind: fixup_sparc_tls_le_hix22
sethi %tle_hix22(Head), %i0
! OBJDUMP: {{[0-9,a-f]+}}: b0 1e 20 00 xor %i0, 0, %i0
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LE_LOX10 Unknown
+! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LE_LOX10 Head
! ASM: xor %i0, %tle_lox10(Head), %i0 ! encoding: [0xb0,0x1e,0x20,0x00]
! ASM: ! fixup A - offset: 0, value: %tle_lox10(Head), kind: fixup_sparc_tls_le_lox10
xor %i0, %tle_lox10(Head), %i0
@@ -44,19 +44,19 @@ foo:
! It uses LDO_HIX22/LDO_LOX10/LDO_ADD/LDM_HI22/LDM_LO10/LDM_ADD/LDM_CALL
! OBJDUMP: {{[0-9,a-f]+}}: 33 00 00 00 sethi 0, %i1
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LDO_HIX22 Unknown
+! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LDO_HIX22 Head
! ASM: sethi %tldo_hix22(Head), %i1 ! encoding: [0x33,0b00AAAAAA,A,A]
! ASM: ! fixup A - offset: 0, value: %tldo_hix22(Head), kind: fixup_sparc_tls_ldo_hix22
sethi %tldo_hix22(Head), %i1
! OBJDUMP: {{[0-9,a-f]+}}: 35 00 00 00 sethi 0, %i2
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LDM_HI22 Unknown
+! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LDM_HI22 Head
! ASM: sethi %tldm_hi22(Head), %i2 ! encoding: [0x35,0b00AAAAAA,A,A]
! ASM: ! fixup A - offset: 0, value: %tldm_hi22(Head), kind: fixup_sparc_tls_ldm_hi22
sethi %tldm_hi22(Head), %i2
! OBJDUMP: {{[0-9,a-f]+}}: b4 06 a0 00 add %i2, 0, %i2
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LDM_LO10 Unknown
+! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LDM_LO10 Head
! ASM: add %i2, %tldm_lo10(Head), %i2 ! encoding: [0xb4,0x06,0b101000AA,A]
! ASM: ! fixup A - offset: 0, value: %tldm_lo10(Head), kind: fixup_sparc_tls_ldm_lo10
add %i2, %tldm_lo10(Head), %i2
@@ -65,7 +65,7 @@ foo:
! add %i0, %i2, %o0, %tldm_add(Head)
! OBJDUMP: {{[0-9,a-f]+}}: b0 1e 60 00 xor %i1, 0, %i0
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LDO_LOX10 Unknown
+! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LDO_LOX10 Head
! ASM: xor %i1, %tldo_lox10(Head), %i0 ! encoding: [0xb0,0x1e,0b011000AA,A]
! ASM: ! fixup A - offset: 0, value: %tldo_lox10(Head), kind: fixup_sparc_tls_ldo_lox10
xor %i1, %tldo_lox10(Head), %i0
Modified: llvm/trunk/test/MC/X86/abs8.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/X86/abs8.s?rev=333726&r1=333725&r2=333726&view=diff
==============================================================================
--- llvm/trunk/test/MC/X86/abs8.s (original)
+++ llvm/trunk/test/MC/X86/abs8.s Thu May 31 22:31:58 2018
@@ -4,5 +4,5 @@
// 32: 0: 83 ff 00 cmpl $0, %edi
// 32: 00000002: R_386_8 foo
// 64: 0: 83 ff 00 cmpl $0, %edi
-// 64: 0000000000000002: R_X86_64_8 foo+0
+// 64: 0000000000000002: R_X86_64_8 foo
cmp $foo at ABS8, %edi
Modified: llvm/trunk/test/Object/X86/objdump-disassembly-inline-relocations.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Object/X86/objdump-disassembly-inline-relocations.test?rev=333726&r1=333725&r2=333726&view=diff
==============================================================================
--- llvm/trunk/test/Object/X86/objdump-disassembly-inline-relocations.test (original)
+++ llvm/trunk/test/Object/X86/objdump-disassembly-inline-relocations.test Thu May 31 22:31:58 2018
@@ -91,12 +91,12 @@ ELF-x86-64: main:
ELF-x86-64: 0: 48 83 ec 08 subq $8, %rsp
ELF-x86-64: 4: c7 44 24 04 00 00 00 00 movl $0, 4(%rsp)
ELF-x86-64: c: bf 00 00 00 00 movl $0, %edi
-ELF-x86-64: d: R_X86_64_32S .rodata.str1.1+0
+ELF-x86-64: d: R_X86_64_32S .rodata.str1.1
ELF-x86-64: 11: e8 00 00 00 00 callq 0
-ELF-x86-64: 12: R_X86_64_PC32 puts-4-P
+ELF-x86-64: 12: R_X86_64_PC32 puts-4
ELF-x86-64: 16: 30 c0 xorb %al, %al
ELF-x86-64: 18: e8 00 00 00 00 callq 0
-ELF-x86-64: 19: R_X86_64_PC32 SomeOtherFunction-4-P
+ELF-x86-64: 19: R_X86_64_PC32 SomeOtherFunction-4
ELF-x86-64: 1d: 8b 44 24 04 movl 4(%rsp), %eax
ELF-x86-64: 21: 48 83 c4 08 addq $8, %rsp
ELF-x86-64: 25: c3 ret
Modified: llvm/trunk/test/Object/objdump-relocations.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Object/objdump-relocations.test?rev=333726&r1=333725&r2=333726&view=diff
==============================================================================
--- llvm/trunk/test/Object/objdump-relocations.test (original)
+++ llvm/trunk/test/Object/objdump-relocations.test Thu May 31 22:31:58 2018
@@ -60,9 +60,9 @@ ELF-MIPSEL: R_MIPS_CALL16 puts
ELF-MIPSEL: R_MIPS_CALL16 SomeOtherFunction
WASM: CODE
-WASM-NEXT: R_WEBASSEMBLY_MEMORY_ADDR_SLEB .L.str+0
-WASM-NEXT: R_WEBASSEMBLY_FUNCTION_INDEX_LEB puts+0
-WASM-NEXT: R_WEBASSEMBLY_FUNCTION_INDEX_LEB SomeOtherFunction+0
+WASM-NEXT: R_WEBASSEMBLY_MEMORY_ADDR_SLEB .L.str
+WASM-NEXT: R_WEBASSEMBLY_FUNCTION_INDEX_LEB puts
+WASM-NEXT: R_WEBASSEMBLY_FUNCTION_INDEX_LEB SomeOtherFunction
ELF-complex-x86-64: .text
ELF-complex-x86-64-NEXT: R_X86_64_8 .data-4
@@ -70,6 +70,6 @@ ELF-complex-x86-64-NEXT: R_X86_64_16 .da
ELF-complex-x86-64-NEXT: R_X86_64_32 .data-4
ELF-complex-x86-64-NEXT: R_X86_64_32S .data-4
ELF-complex-x86-64-NEXT: R_X86_64_64 .data-4
-ELF-complex-x86-64-NEXT: R_X86_64_PC32 .data-4-P
-ELF-complex-x86-64-NEXT: R_X86_64_32 .data+0
+ELF-complex-x86-64-NEXT: R_X86_64_PC32 .data-4
+ELF-complex-x86-64-NEXT: R_X86_64_32 .data
ELF-complex-x86-64-NEXT: R_X86_64_32 .data+4
Modified: llvm/trunk/test/Object/objdump-shndx.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Object/objdump-shndx.test?rev=333726&r1=333725&r2=333726&view=diff
==============================================================================
--- llvm/trunk/test/Object/objdump-shndx.test (original)
+++ llvm/trunk/test/Object/objdump-shndx.test Thu May 31 22:31:58 2018
@@ -5,4 +5,4 @@ symbol that has st_shndx == SHN_XINDEX.
has to use the shndx section.
CHECK: RELOCATION RECORDS FOR [.rela.text]:
-CHECK-NEXT: 0000000000000000 R_X86_64_32 bar+0
+CHECK-NEXT: 0000000000000000 R_X86_64_32 bar
Modified: llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp?rev=333726&r1=333725&r2=333726&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp (original)
+++ llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp Thu May 31 22:31:58 2018
@@ -430,8 +430,6 @@ static std::error_code getRelocationValu
if (!StrTabOrErr)
return errorToErrorCode(StrTabOrErr.takeError());
StringRef StrTab = *StrTabOrErr;
- uint8_t type = RelRef.getType();
- StringRef res;
int64_t addend = 0;
switch (Sec->sh_type) {
default:
@@ -464,76 +462,16 @@ static std::error_code getRelocationValu
return errorToErrorCode(SymName.takeError());
Target = *SymName;
}
- switch (EF.getHeader()->e_machine) {
- case ELF::EM_X86_64:
- switch (type) {
- case ELF::R_X86_64_PC8:
- case ELF::R_X86_64_PC16:
- case ELF::R_X86_64_PC32: {
- std::string fmtbuf;
- raw_string_ostream fmt(fmtbuf);
- fmt << Target << (addend < 0 ? "" : "+") << addend << "-P";
- fmt.flush();
- Result.append(fmtbuf.begin(), fmtbuf.end());
- } break;
- case ELF::R_X86_64_8:
- case ELF::R_X86_64_16:
- case ELF::R_X86_64_32:
- case ELF::R_X86_64_32S:
- case ELF::R_X86_64_64: {
- std::string fmtbuf;
- raw_string_ostream fmt(fmtbuf);
- fmt << Target << (addend < 0 ? "" : "+") << addend;
- fmt.flush();
- Result.append(fmtbuf.begin(), fmtbuf.end());
- } break;
- default:
- res = "Unknown";
- }
- break;
- case ELF::EM_LANAI:
- case ELF::EM_AVR:
- case ELF::EM_AARCH64: {
- std::string fmtbuf;
- raw_string_ostream fmt(fmtbuf);
- fmt << Target;
- if (addend != 0)
- fmt << (addend < 0 ? "" : "+") << addend;
- fmt.flush();
- Result.append(fmtbuf.begin(), fmtbuf.end());
- break;
- }
- case ELF::EM_386:
- case ELF::EM_IAMCU:
- case ELF::EM_ARM:
- case ELF::EM_HEXAGON:
- case ELF::EM_MIPS:
- case ELF::EM_BPF:
- case ELF::EM_RISCV:
- res = Target;
- break;
- case ELF::EM_WEBASSEMBLY:
- switch (type) {
- case ELF::R_WEBASSEMBLY_DATA: {
- std::string fmtbuf;
- raw_string_ostream fmt(fmtbuf);
- fmt << Target << (addend < 0 ? "" : "+") << addend;
- fmt.flush();
- Result.append(fmtbuf.begin(), fmtbuf.end());
- break;
- }
- case ELF::R_WEBASSEMBLY_FUNCTION:
- res = Target;
- break;
- default:
- res = "Unknown";
- }
- break;
- default:
- res = "Unknown";
- }
- if (Result.empty())
- Result.append(res.begin(), res.end());
+
+ // Default scheme is to print Target, as well as "+ <addend>" for nonzero
+ // addend. Should be acceptable for all normal purposes.
+ std::string fmtbuf;
+ raw_string_ostream fmt(fmtbuf);
+ fmt << Target;
+ if (addend != 0)
+ fmt << (addend < 0 ? "" : "+") << addend;
+ fmt.flush();
+ Result.append(fmtbuf.begin(), fmtbuf.end());
return std::error_code();
}
More information about the llvm-commits
mailing list