diff options
author | Simon Atanasyan <simon@atanasyan.com> | 2014-02-24 22:12:11 +0000 |
---|---|---|
committer | Simon Atanasyan <simon@atanasyan.com> | 2014-02-24 22:12:11 +0000 |
commit | 341d0f4b9e8219024093a9cc35dd7b321eaaa0f1 (patch) | |
tree | e552d8cb0d9ef9f1485e8e308d849bf5f5d4138c /test/tools/llvm-objdump | |
parent | e5f1c6d3dae658cbdd19bf3ab5eea0573c95a531 (diff) | |
download | llvm-341d0f4b9e8219024093a9cc35dd7b321eaaa0f1.tar.gz llvm-341d0f4b9e8219024093a9cc35dd7b321eaaa0f1.tar.bz2 llvm-341d0f4b9e8219024093a9cc35dd7b321eaaa0f1.tar.xz |
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@202083 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/tools/llvm-objdump')
-rw-r--r-- | test/tools/llvm-objdump/Inputs/out-of-section-sym.elf-i386 | bin | 0 -> 4450 bytes | |||
-rw-r--r-- | test/tools/llvm-objdump/Inputs/out-of-section-sym.s | 15 | ||||
-rw-r--r-- | test/tools/llvm-objdump/out-of-section-sym.test | 13 |
3 files changed, 28 insertions, 0 deletions
diff --git a/test/tools/llvm-objdump/Inputs/out-of-section-sym.elf-i386 b/test/tools/llvm-objdump/Inputs/out-of-section-sym.elf-i386 Binary files differnew file mode 100644 index 0000000000..4c7158498b --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/out-of-section-sym.elf-i386 diff --git a/test/tools/llvm-objdump/Inputs/out-of-section-sym.s b/test/tools/llvm-objdump/Inputs/out-of-section-sym.s new file mode 100644 index 0000000000..9a1349c426 --- /dev/null +++ b/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/test/tools/llvm-objdump/out-of-section-sym.test b/test/tools/llvm-objdump/out-of-section-sym.test new file mode 100644 index 0000000000..f70dce6a8e --- /dev/null +++ b/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 |