summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Enderby <enderby@apple.com>2016-04-27 23:43:00 +0000
committerKevin Enderby <enderby@apple.com>2016-04-27 23:43:00 +0000
commit8eccdad5ecf64ee5e7de261879fc78210d7769e1 (patch)
tree84f3bdbd50e5ff27075328967425ab100d21b8c2
parent1822af542f49c8efc09fb51f122f58599496b6d1 (diff)
downloadbcm5719-llvm-8eccdad5ecf64ee5e7de261879fc78210d7769e1.tar.gz
bcm5719-llvm-8eccdad5ecf64ee5e7de261879fc78210d7769e1.zip
Fix bugs in llvm-objdump printing the last word for -section in non i386 and x86 files.
Two problems, 1) for the last 4 bytes it would print them as separate bytes not a word and 2) it would print the same last byte for those bytes less than a word. rdar://25938224 llvm-svn: 267819
-rw-r--r--llvm/test/tools/llvm-objdump/Inputs/section.macho-armv7bin232 -> 308 bytes
-rw-r--r--llvm/test/tools/llvm-objdump/macho-sections.test6
-rw-r--r--llvm/tools/llvm-objdump/MachODump.cpp4
3 files changed, 7 insertions, 3 deletions
diff --git a/llvm/test/tools/llvm-objdump/Inputs/section.macho-armv7 b/llvm/test/tools/llvm-objdump/Inputs/section.macho-armv7
index 456cd3e5f69..810d5c52d33 100644
--- a/llvm/test/tools/llvm-objdump/Inputs/section.macho-armv7
+++ b/llvm/test/tools/llvm-objdump/Inputs/section.macho-armv7
Binary files differ
diff --git a/llvm/test/tools/llvm-objdump/macho-sections.test b/llvm/test/tools/llvm-objdump/macho-sections.test
index a7e2e81be5d..7b0d89ce505 100644
--- a/llvm/test/tools/llvm-objdump/macho-sections.test
+++ b/llvm/test/tools/llvm-objdump/macho-sections.test
@@ -4,4 +4,8 @@
# RUN: llvm-objdump -macho -section=__data %p/Inputs/section.macho-armv7 | FileCheck -check-prefix CHECK-ADDR %s
-# CHECK-ADDR: 00000004 00000001
+# CHECK-ADDR: 00000004 00000001 00000002
+
+# RUN: llvm-objdump -macho -section=__const %p/Inputs/section.macho-armv7 | FileCheck -check-prefix CHECK-BYTES %s
+
+# CHECK-BYTES: 0000000c 00000003 04 05 06
diff --git a/llvm/tools/llvm-objdump/MachODump.cpp b/llvm/tools/llvm-objdump/MachODump.cpp
index 3d5c6eceada..bcce08ec51b 100644
--- a/llvm/tools/llvm-objdump/MachODump.cpp
+++ b/llvm/tools/llvm-objdump/MachODump.cpp
@@ -1004,7 +1004,7 @@ static void DumpRawSectionContents(MachOObjectFile *O, const char *sect,
outs() << format("%08" PRIx64, addr) << "\t";
for (j = 0; j < 4 * sizeof(int32_t) && i + j < size;
j += sizeof(int32_t)) {
- if (i + j + sizeof(int32_t) < size) {
+ if (i + j + sizeof(int32_t) <= size) {
uint32_t long_word;
memcpy(&long_word, sect + i + j, sizeof(int32_t));
if (O->isLittleEndian() != sys::IsLittleEndianHost)
@@ -1012,7 +1012,7 @@ static void DumpRawSectionContents(MachOObjectFile *O, const char *sect,
outs() << format("%08" PRIx32, long_word) << " ";
} else {
for (uint32_t k = 0; i + j + k < size; k++) {
- uint8_t byte_word = *(sect + i + j);
+ uint8_t byte_word = *(sect + i + j + k);
outs() << format("%02" PRIx32, (uint32_t)byte_word) << " ";
}
}
OpenPOWER on IntegriCloud