diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-06-04 15:01:05 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-06-04 15:01:05 +0000 |
commit | 7884c95c7e8441bc8f30ac7bd02db465af6e75cc (patch) | |
tree | 4ba01bb0a304735bb9915977e9dad8a854518524 | |
parent | f08fadfe2b9bc752745192f3d3f7fa61254cf0d8 (diff) | |
download | bcm5719-llvm-7884c95c7e8441bc8f30ac7bd02db465af6e75cc.tar.gz bcm5719-llvm-7884c95c7e8441bc8f30ac7bd02db465af6e75cc.zip |
Disassemble the start of sections even if there is no symbol there.
We already handled a section with no symbols, extend that to also handle a
section with symbols that don't include the section start.
llvm-svn: 239039
-rw-r--r-- | llvm/test/Object/Inputs/no-start-symbol.elf-x86_64 | bin | 0 -> 544 bytes | |||
-rw-r--r-- | llvm/test/Object/no-start-symbol.test | 9 | ||||
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.cpp | 8 |
3 files changed, 12 insertions, 5 deletions
diff --git a/llvm/test/Object/Inputs/no-start-symbol.elf-x86_64 b/llvm/test/Object/Inputs/no-start-symbol.elf-x86_64 Binary files differnew file mode 100644 index 00000000000..b2c9edc300d --- /dev/null +++ b/llvm/test/Object/Inputs/no-start-symbol.elf-x86_64 diff --git a/llvm/test/Object/no-start-symbol.test b/llvm/test/Object/no-start-symbol.test new file mode 100644 index 00000000000..ea8e6db8dbf --- /dev/null +++ b/llvm/test/Object/no-start-symbol.test @@ -0,0 +1,9 @@ +RUN: llvm-objdump -d %p/Inputs/no-start-symbol.elf-x86_64 | FileCheck %s + +Test that we disassemble the start of the section. + +CHECK: Disassembly of section .text: +CHECK-NEXT: .text: +CHECK-NEXT: 0: 90 nop +CHECK: foo: +CHECK-NEXT: 1: 90 nop diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index d03556c4615..58600f62f4d 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -809,11 +809,9 @@ static void DisassembleObject(const ObjectFile *Obj, bool InlineRelocs) { outs() << SegmentName << ","; outs() << name << ':'; - // If the section has no symbols just insert a dummy one and disassemble - // the whole section. - if (Symbols.empty()) - Symbols.push_back(std::make_pair(0, name)); - + // If the section has no symbol at the start, just insert a dummy one. + if (Symbols.empty() || Symbols[0].first != 0) + Symbols.insert(Symbols.begin(), std::make_pair(0, name)); SmallString<40> Comments; raw_svector_ostream CommentStream(Comments); |