[PATCH] D53403: [llvm-objdump] Fix --file-headers (-f) option

Miloš Stojanović via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 18 08:26:33 PDT 2018


mstojanovic created this revision.
mstojanovic added reviewers: paulsemel, echristo, jhenderson, petarj.
Herald added subscribers: atanasyan, arichardson, sdardis.

Changed the format call to match the surrounding code. Previously it was printing an unsigned int while the return type being printed was long unsigned int or wider. This caused problems for big-endian systems which were discovered on mips64.
Also, the printed address had less characters than it should because the character count was directly obtained from the number of bytes in the address. The tests were adapted to fit this fix and now use longer addresses.


https://reviews.llvm.org/D53403

Files:
  test/tools/llvm-objdump/file-headers-coff.test
  test/tools/llvm-objdump/file-headers-elf.test
  test/tools/llvm-objdump/file-headers-pe.test
  tools/llvm-objdump/llvm-objdump.cpp


Index: tools/llvm-objdump/llvm-objdump.cpp
===================================================================
--- tools/llvm-objdump/llvm-objdump.cpp
+++ tools/llvm-objdump/llvm-objdump.cpp
@@ -2220,8 +2220,11 @@
   Expected<uint64_t> StartAddrOrErr = o->getStartAddress();
   if (!StartAddrOrErr)
     report_error(o->getFileName(), StartAddrOrErr.takeError());
+
+  StringRef Fmt = o->getBytesInAddress() > 4 ? "%016" PRIx64 : "%08" PRIx64;
+  uint64_t address = StartAddrOrErr.get();
   outs() << "start address: "
-         << format("0x%0*x", o->getBytesInAddress(), StartAddrOrErr.get())
+         << "0x" << format(Fmt.data(), address)
          << "\n";
 }
 
Index: test/tools/llvm-objdump/file-headers-pe.test
===================================================================
--- test/tools/llvm-objdump/file-headers-pe.test
+++ test/tools/llvm-objdump/file-headers-pe.test
@@ -7,7 +7,7 @@
   Machine: IMAGE_FILE_MACHINE_I386
   Characteristics: [ IMAGE_FILE_DEBUG_STRIPPED ]
 OptionalHeader:
-  AddressOfEntryPoint: 0x1234
+  AddressOfEntryPoint: 0x123456
 # Unfortunately, all these flags are mandatory to set AddressOfEntryPoint.
 # All the values are randomly picked. They can't interfere in what
 # we are testing here.
@@ -30,4 +30,4 @@
 symbols:
 
 # CHECK: architecture: i386
-# CHECK: start address: 0x1234
+# CHECK: start address: 0x00123456
Index: test/tools/llvm-objdump/file-headers-elf.test
===================================================================
--- test/tools/llvm-objdump/file-headers-elf.test
+++ test/tools/llvm-objdump/file-headers-elf.test
@@ -8,7 +8,7 @@
   Data:            ELFDATA2LSB
   Type:            ET_REL
   Machine:         EM_X86_64
-  Entry:           0x123456
+  Entry:           0x123456789abcde
 
 # CHECK: architecture: x86_64
-# CHECK: start address: 0x00123456
+# CHECK: start address: 0x00123456789abcde
Index: test/tools/llvm-objdump/file-headers-coff.test
===================================================================
--- test/tools/llvm-objdump/file-headers-coff.test
+++ test/tools/llvm-objdump/file-headers-coff.test
@@ -10,4 +10,4 @@
 symbols:
 
 # CHECK: architecture: i386
-# CHECK: start address: 0x0000
+# CHECK: start address: 0x00000000


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D53403.170089.patch
Type: text/x-patch
Size: 2220 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181018/e93ee991/attachment.bin>


More information about the llvm-commits mailing list