summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/llvm-objdump
diff options
context:
space:
mode:
authorSid Manning <sidneym@quicinc.com>2019-11-05 11:13:18 -0800
committerFangrui Song <maskray@google.com>2019-11-05 11:14:12 -0800
commit6cd47f9dd7dd664ff855fb0d1ed26bf5e4bb77fc (patch)
tree14e23da581acc68fcb6095d0c73c9290339e1b4d /llvm/test/tools/llvm-objdump
parentf1b4c4bfd0b55c3c0abbc73e1159117f8533aca3 (diff)
downloadbcm5719-llvm-6cd47f9dd7dd664ff855fb0d1ed26bf5e4bb77fc.tar.gz
bcm5719-llvm-6cd47f9dd7dd664ff855fb0d1ed26bf5e4bb77fc.zip
[llvm-objdump] Fix spurious "The end of the file was unexpectedly encountered" if a SHT_NOBITS sh_offset is larger than the file size
llvm-objdump -D this file: int a[100000]; int main() { return 0; } Will produce an error: "The end of the file was unexpectedly encountered". This happens because of a check in Binary.h checkOffset. (Addr + Size > M.getBufferEnd()). The sh_offset and sh_size fields can be ignored for SHT_NOBITS sections. Fix the error by changing ELFObjectFile<ELFT>::getSectionContents to use the file base for SHT_NOBITS sections. Reviewed By: grimar, MaskRay Differential Revision: https://reviews.llvm.org/D69192
Diffstat (limited to 'llvm/test/tools/llvm-objdump')
-rw-r--r--llvm/test/tools/llvm-objdump/X86/elf-disassemble-bss.test37
1 files changed, 37 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-objdump/X86/elf-disassemble-bss.test b/llvm/test/tools/llvm-objdump/X86/elf-disassemble-bss.test
new file mode 100644
index 00000000000..01d3a49c9b5
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/X86/elf-disassemble-bss.test
@@ -0,0 +1,37 @@
+## Check that when BSS is larger than the file llvm-objdump doesn't
+## assert with an unexpected end of file error.
+# RUN: yaml2obj --docnum=1 %s > %t
+# RUN: yaml2obj --docnum=2 %s > %t.2
+# RUN: llvm-objdump -D %t | FileCheck %s
+# RUN: llvm-objdump -D %t.2 | FileCheck %s
+
+# CHECK: Disassembly of section .bss:
+# CHECK: .bss:
+# CHECK-NEXT: ...
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
+Sections:
+ - Name: .bss
+ Type: SHT_NOBITS
+ Flags: [ SHF_WRITE, SHF_ALLOC ]
+ Size: 0x0000000000001000
+...
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
+Sections:
+ - Name: .bss
+ Type: SHT_NOBITS
+ Flags: [ SHF_WRITE, SHF_ALLOC ]
+ Size: 0x0000000000001000
+ ShOffset: 0x0000000080000000
+...
OpenPOWER on IntegriCloud