From 0e48a6385b785a551de05a31cd45328ed7c8258c Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Tue, 3 Mar 2020 16:59:33 -0800 Subject: [PATCH] [llvm-objdump] --syms: print st_size as "%016" PRIx64 instead of "%08" PRIx64 for 64-bit objects This is GNU objdump's behavior and it is reasonable to match. Reviewed By: grimar Differential Revision: https://reviews.llvm.org/D75588 --- test/MC/AArch64/inst-directive.s | 6 ++-- test/MC/AArch64/mapping-across-sections.s | 6 ++-- test/tools/llvm-objdump/X86/adjust-vma.test | 6 ++-- test/tools/llvm-objdump/X86/demangle.s | 2 +- test/tools/llvm-objdump/symbol-table-elf.test | 30 ++++++++++++------- tools/llvm-objdump/llvm-objdump.cpp | 2 +- 6 files changed, 30 insertions(+), 22 deletions(-) diff --git a/test/MC/AArch64/inst-directive.s b/test/MC/AArch64/inst-directive.s index e4ccf788b0e..9911c39421b 100644 --- a/test/MC/AArch64/inst-directive.s +++ b/test/MC/AArch64/inst-directive.s @@ -30,6 +30,6 @@ aarch64_inst: // CHECK-OBJ-NEXT: 0000: 2040105E // CHECK-OBJ-NEXT: ) -// CHECK-SYMS-NOT: 0000000000000000 .inst.aarch64_inst 00000000 $d -// CHECK-SYMS: 0000000000000000 .inst.aarch64_inst 00000000 $x -// CHECK-SYMS-NOT: 0000000000000000 .inst.aarch64_inst 00000000 $d +// CHECK-SYMS-NOT: 0000000000000000 .inst.aarch64_inst 0000000000000000 $d +// CHECK-SYMS: 0000000000000000 .inst.aarch64_inst 0000000000000000 $x +// CHECK-SYMS-NOT: 0000000000000000 .inst.aarch64_inst 0000000000000000 $d diff --git a/test/MC/AArch64/mapping-across-sections.s b/test/MC/AArch64/mapping-across-sections.s index 3d32c1dfb40..66574cd767d 100644 --- a/test/MC/AArch64/mapping-across-sections.s +++ b/test/MC/AArch64/mapping-across-sections.s @@ -21,8 +21,8 @@ // + .starts_data to have $d at 0 -// CHECK: 00000000 .starts_data 00000000 $d -// CHECK-NEXT: 00000000 .text 00000000 $x -// CHECK-NEXT: 00000000 .wibble 00000000 $x +// CHECK: 0000000000000000 .starts_data 0000000000000000 $d +// CHECK-NEXT: 0000000000000000 .text 0000000000000000 $x +// CHECK-NEXT: 0000000000000000 .wibble 0000000000000000 $x // CHECK-NOT: ${{[adtx]}} diff --git a/test/tools/llvm-objdump/X86/adjust-vma.test b/test/tools/llvm-objdump/X86/adjust-vma.test index 00eaffa50af..1b84cda1fa4 100644 --- a/test/tools/llvm-objdump/X86/adjust-vma.test +++ b/test/tools/llvm-objdump/X86/adjust-vma.test @@ -28,9 +28,9 @@ # ADJUST-NEXT: 8 .shstrtab 0000003c 0000000000000000 # COMMON: SYMBOL TABLE: -# COMMON-NEXT: 0000000000000001 l F .text 00000000 func -# COMMON-NEXT: 0000000000000000 .text 00000000 sym -# COMMON-NEXT: 0000000000000000 l d .text 00000000 .text +# COMMON-NEXT: 0000000000000001 l F .text 0000000000000000 func +# COMMON-NEXT: 0000000000000000 .text 0000000000000000 sym +# COMMON-NEXT: 0000000000000000 l d .text 0000000000000000 .text # NOADJUST: 0000000000000000 sym: # NOADJUST-NEXT: 0: {{.*}} nop diff --git a/test/tools/llvm-objdump/X86/demangle.s b/test/tools/llvm-objdump/X86/demangle.s index 98088763675..0c5e177b410 100644 --- a/test/tools/llvm-objdump/X86/demangle.s +++ b/test/tools/llvm-objdump/X86/demangle.s @@ -3,7 +3,7 @@ ## Check we demangle symbols when printing symbol table. # CHECK: SYMBOL TABLE: -# CHECK-NEXT: 0000000000000000 g F .text 00000000 foo() +# CHECK-NEXT: 0000000000000000 g F .text 0000000000000000 foo() ## Check we demangle symbols when printing relocations. # CHECK: 000000000000001 R_X86_64_PLT32 foo()-0x4 diff --git a/test/tools/llvm-objdump/symbol-table-elf.test b/test/tools/llvm-objdump/symbol-table-elf.test index ab35a7d8a26..b6c27330aef 100644 --- a/test/tools/llvm-objdump/symbol-table-elf.test +++ b/test/tools/llvm-objdump/symbol-table-elf.test @@ -1,18 +1,26 @@ -# RUN: yaml2obj %s -o %t -# RUN: llvm-objdump --syms %t > %t1 -# RUN: llvm-objdump -t %t > %t2 -# RUN: cmp %t1 %t2 -# RUN: FileCheck %s --input-file=%t1 +# RUN: yaml2obj -D BITS=32 %s -o %t.32 +# RUN: llvm-objdump --syms %t.32 > %t.32.txt +# RUN: llvm-objdump -t %t.32 | cmp - %t.32.txt +# RUN: FileCheck --check-prefix=ELF32 %s --input-file=%t.32.txt -# CHECK: SYMBOL TABLE: -# CHECK-NEXT: 0000000000001004 l F .text 00000000 lfoo -# CHECK-NEXT: 0000000000001008 l O .text 00000000 lbar -# CHECK-NEXT: 0000000000001004 g F .text 00000000 foo -# CHECK-NEXT: 0000000000001008 g O .text 00000000 bar +# RUN: yaml2obj -D BITS=64 %s -o %t.64 +# RUN: llvm-objdump --syms %t.64 | FileCheck --check-prefix=ELF64 %s + +# ELF32: SYMBOL TABLE: +# ELF32-NEXT: 00001004 l F .text 00000000 lfoo +# ELF32-NEXT: 00001008 l O .text 00000000 lbar +# ELF32-NEXT: 00001004 g F .text 00000000 foo +# ELF32-NEXT: 00001008 g O .text 00000000 bar + +# ELF64: SYMBOL TABLE: +# ELF64-NEXT: 0000000000001004 l F .text 0000000000000000 lfoo +# ELF64-NEXT: 0000000000001008 l O .text 0000000000000000 lbar +# ELF64-NEXT: 0000000000001004 g F .text 0000000000000000 foo +# ELF64-NEXT: 0000000000001008 g O .text 0000000000000000 bar !ELF FileHeader: - Class: ELFCLASS64 + Class: ELFCLASS[[BITS]] Data: ELFDATA2LSB Type: ET_EXEC Machine: EM_X86_64 diff --git a/tools/llvm-objdump/llvm-objdump.cpp b/tools/llvm-objdump/llvm-objdump.cpp index c07a4ecfe43..c9dec65d155 100644 --- a/tools/llvm-objdump/llvm-objdump.cpp +++ b/tools/llvm-objdump/llvm-objdump.cpp @@ -1943,7 +1943,7 @@ void printSymbolTable(const ObjectFile *O, StringRef ArchiveName, if (Common || isa(O)) { uint64_t Val = Common ? Symbol.getAlignment() : ELFSymbolRef(Symbol).getSize(); - outs() << format("\t%08" PRIx64, Val); + outs() << '\t' << format(Fmt, Val); } if (isa(O)) {