From 31579e9d1932a6052f31abc30cab2ea8c1872e80 Mon Sep 17 00:00:00 2001 From: Kristina Brooks Date: Wed, 31 Oct 2018 09:34:08 +0000 Subject: [PATCH] [llvm-objdump] Add --reloc alias for -r (PR39407) This addresses PR39407 (https://bugs.llvm.org/show_bug.cgi?id=39407) improving compatibility with GNU binutils counterparts. Reviewed By: kristina Patch by Higuoxing (Xing). Differential Revision: https://reviews.llvm.org/D53804 llvm-svn: 345703 --- .../tools/llvm-objdump/relocations-elf.test | 73 +++++++++++++++++++ llvm/tools/llvm-objdump/llvm-objdump.cpp | 6 +- 2 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 llvm/test/tools/llvm-objdump/relocations-elf.test diff --git a/llvm/test/tools/llvm-objdump/relocations-elf.test b/llvm/test/tools/llvm-objdump/relocations-elf.test new file mode 100644 index 000000000000..a29b3e6a6fba --- /dev/null +++ b/llvm/test/tools/llvm-objdump/relocations-elf.test @@ -0,0 +1,73 @@ +# RUN: yaml2obj %s > %t +# RUN: llvm-objdump --reloc %t | FileCheck %s +# RUN: llvm-objdump -r %t | FileCheck %s + +# CHECK: RELOCATION RECORDS FOR [.rel.text]: +# CHECK: 0000000000000001 R_X86_64_32 glob1 +# CHECK: 0000000000000001 R_X86_64_32S glob2 +# CHECK: 0000000000000002 R_X86_64_64 loc1 + +# CHECK: RELOCATION RECORDS FOR [.rela.text]: +# CHECK: 0000000000000001 R_X86_64_32 glob1+1 +# CHECK: 0000000000000001 R_X86_64_32S glob2+2 +# CHECK: 0000000000000002 R_X86_64_64 loc1+3 + +!ELF +FileHeader: !FileHeader + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_X86_64 + +Sections: +- Name: .text + Type: SHT_PROGBITS + Content: "0000000000000000" + AddressAlign: 16 + Flags: [SHF_ALLOC] + +- Name: .rel.text + Type: SHT_REL + Info: .text + AddressAlign: 4 + Relocations: + - Offset: 0x1 + Symbol: glob1 + Type: R_X86_64_32 + - Offset: 0x1 + Symbol: glob2 + Type: R_X86_64_32S + - Offset: 0x2 + Symbol: loc1 + Type: R_X86_64_64 + +- Name: .rela.text + Type: SHT_RELA + Link: .symtab + Info: .text + AddressAlign: 4 + Relocations: + - Offset: 0x1 + Addend: 1 + Symbol: glob1 + Type: R_X86_64_32 + - Offset: 0x1 + Addend: 2 + Symbol: glob2 + Type: R_X86_64_32S + - Offset: 0x2 + Addend: 3 + Symbol: loc1 + Type: R_X86_64_64 + +Symbols: + Local: + - Name: loc1 + - Name: loc2 + Global: + - Name: glob1 + Section: .text + Value: 0x0 + Size: 4 + - Name: glob2 + diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index 4ad29d2143f4..18fcfef514e3 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -106,7 +106,11 @@ DisassembleFunctions("df", static StringSet<> DisasmFuncsSet; cl::opt -llvm::Relocations("r", cl::desc("Display the relocation entries in the file")); +llvm::Relocations("reloc", + cl::desc("Display the relocation entries in the file")); +static cl::alias RelocationsShort("r", cl::desc("Alias for --reloc"), + cl::NotHidden, + cl::aliasopt(llvm::Relocations)); cl::opt llvm::DynamicRelocations("dynamic-reloc",