[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