diff options
-rw-r--r-- | llvm/test/Object/Inputs/trivial-label-test.elf-x86-64 | bin | 0 -> 741 bytes | |||
-rw-r--r-- | llvm/test/Object/X86/objdump-label.test | 10 | ||||
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.cpp | 15 |
3 files changed, 15 insertions, 10 deletions
diff --git a/llvm/test/Object/Inputs/trivial-label-test.elf-x86-64 b/llvm/test/Object/Inputs/trivial-label-test.elf-x86-64 Binary files differnew file mode 100644 index 00000000000..76f4499a834 --- /dev/null +++ b/llvm/test/Object/Inputs/trivial-label-test.elf-x86-64 diff --git a/llvm/test/Object/X86/objdump-label.test b/llvm/test/Object/X86/objdump-label.test new file mode 100644 index 00000000000..f8b933451e5 --- /dev/null +++ b/llvm/test/Object/X86/objdump-label.test @@ -0,0 +1,10 @@ +RUN: llvm-objdump -d %p/../Inputs/trivial-label-test.elf-x86-64 \ +RUN: | FileCheck %s -check-prefix ELF-x86-64 + +ELF-x86-64: file format ELF64-x86-64 +ELF-x86-64: Disassembly of section .text: +ELF-x86-64: foo: +ELF-x86-64: 0: 90 nop +ELF-x86-64: bum: +ELF-x86-64: 1: 90 nop + diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index ebcee3b7f63..d7c9df1d6e7 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -494,17 +494,12 @@ static void DisassembleObject(const ObjectFile *Obj, bool InlineRelocs) { std::vector<RelocationRef>::const_iterator rel_end = Rels.end(); // Disassemble symbol by symbol. for (unsigned si = 0, se = Symbols.size(); si != se; ++si) { + uint64_t Start = Symbols[si].first; - uint64_t End; - // The end is either the size of the section or the beginning of the next - // symbol. - if (si == se - 1) - End = SectSize; - // Make sure this symbol takes up space. - else if (Symbols[si + 1].first != Start) - End = Symbols[si + 1].first - 1; - else - // This symbol has the same address as the next symbol. Skip it. + // The end is either the section end or the beginning of the next symbol. + uint64_t End = (si == se - 1) ? SectSize : Symbols[si + 1].first; + // If this symbol has the same address as the next symbol, then skip it. + if (Start == End) continue; outs() << '\n' << Symbols[si].second << ":\n"; |