summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/llvm-objdump
diff options
context:
space:
mode:
authorSimon Atanasyan <simon@atanasyan.com>2014-02-24 22:12:11 +0000
committerSimon Atanasyan <simon@atanasyan.com>2014-02-24 22:12:11 +0000
commit2b614e1163cd368848bee644b869f3fe5f592ea6 (patch)
treef7221a409d41f292d846ce21a4c6200424b0cb9b /llvm/test/tools/llvm-objdump
parent6a162d850bb21a0b93c8bfca789c0654a2169807 (diff)
downloadbcm5719-llvm-2b614e1163cd368848bee644b869f3fe5f592ea6.tar.gz
bcm5719-llvm-2b614e1163cd368848bee644b869f3fe5f592ea6.zip
llvm-objdump: Do not attempt to disassemble symbols outside of section
boundaries. It is possible to create an ELF executable where symbol from say .text section 'points' to the address outside the section boundaries. It does not have a sense to disassemble something outside the section. Without this fix llvm-objdump prints finite or infinite (depends on the executable file architecture) number of 'invalid instruction encoding' warnings. llvm-svn: 202083
Diffstat (limited to 'llvm/test/tools/llvm-objdump')
-rw-r--r--llvm/test/tools/llvm-objdump/Inputs/out-of-section-sym.elf-i386bin0 -> 4450 bytes
-rw-r--r--llvm/test/tools/llvm-objdump/Inputs/out-of-section-sym.s15
-rw-r--r--llvm/test/tools/llvm-objdump/out-of-section-sym.test13
3 files changed, 28 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-objdump/Inputs/out-of-section-sym.elf-i386 b/llvm/test/tools/llvm-objdump/Inputs/out-of-section-sym.elf-i386
new file mode 100644
index 00000000000..4c7158498ba
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/Inputs/out-of-section-sym.elf-i386
Binary files differ
diff --git a/llvm/test/tools/llvm-objdump/Inputs/out-of-section-sym.s b/llvm/test/tools/llvm-objdump/Inputs/out-of-section-sym.s
new file mode 100644
index 00000000000..9a1349c426f
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/Inputs/out-of-section-sym.s
@@ -0,0 +1,15 @@
+// $ cat out-of-section-sym.ld
+// SECTIONS
+// {
+// . = 0x10;
+// .text : { _ftext = . ; *(.text) }
+// . = 0x20;
+// .data : { _fdata = . ; *(.data) }
+// }
+// as --32 out-of-section-sym.s -o out-of-section-sym.o
+// ld -m elf_i386 -Tout-of-section-sym.ld -o out-of-section-sym.elf-i386 \
+// out-of-section-sym.o
+
+.text
+_start:
+ ret
diff --git a/llvm/test/tools/llvm-objdump/out-of-section-sym.test b/llvm/test/tools/llvm-objdump/out-of-section-sym.test
new file mode 100644
index 00000000000..f70dce6a8ed
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/out-of-section-sym.test
@@ -0,0 +1,13 @@
+// Check that llvm-objdump does not attempt to disassemble symbols outside
+// of section boundaries.
+// RUN: llvm-objdump -d -t %p/Inputs/out-of-section-sym.elf-i386 | FileCheck %s
+
+CHECK: Disassembly of section .text:
+CHECK-NEXT: _start:
+CHECK-NEXT: 10: c3 retl
+CHECK-NEXT: SYMBOL TABLE:
+CHECK-NEXT: 00000000 *UND* 00000000
+CHECK-NEXT: 00000010 l d .text 00000000 .text
+CHECK-NEXT: 00000010 .text 00000000 _start
+CHECK-NEXT: 00000020 .text 00000000 _fdata
+CHECK-NEXT: 00000010 .text 00000000 _ftext
OpenPOWER on IntegriCloud