Index: llvm/trunk/test/DebugInfo/X86/DW_AT_location-reference.ll =================================================================== --- llvm/trunk/test/DebugInfo/X86/DW_AT_location-reference.ll +++ llvm/trunk/test/DebugInfo/X86/DW_AT_location-reference.ll @@ -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" Index: llvm/trunk/test/MC/Sparc/sparc-tls-relocations.s =================================================================== --- llvm/trunk/test/MC/Sparc/sparc-tls-relocations.s +++ llvm/trunk/test/MC/Sparc/sparc-tls-relocations.s @@ -28,13 +28,13 @@ ! 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 @@ ! 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 @@ ! 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 Index: llvm/trunk/test/MC/X86/abs8.s =================================================================== --- llvm/trunk/test/MC/X86/abs8.s +++ llvm/trunk/test/MC/X86/abs8.s @@ -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@ABS8, %edi Index: llvm/trunk/test/Object/X86/objdump-disassembly-inline-relocations.test =================================================================== --- llvm/trunk/test/Object/X86/objdump-disassembly-inline-relocations.test +++ llvm/trunk/test/Object/X86/objdump-disassembly-inline-relocations.test @@ -91,12 +91,12 @@ 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 Index: llvm/trunk/test/Object/objdump-relocations.test =================================================================== --- llvm/trunk/test/Object/objdump-relocations.test +++ llvm/trunk/test/Object/objdump-relocations.test @@ -60,9 +60,9 @@ 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_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 Index: llvm/trunk/test/Object/objdump-shndx.test =================================================================== --- llvm/trunk/test/Object/objdump-shndx.test +++ llvm/trunk/test/Object/objdump-shndx.test @@ -5,4 +5,4 @@ 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 Index: llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp =================================================================== --- llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp +++ llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp @@ -430,8 +430,6 @@ 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 @@ 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 "+ " 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(); }