[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