mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
Fix an off-by-one bug in the target independent llvm-objdump.
It would prevent the display of a single byte instruction before a label. Patch by Steve King! llvm-svn: 215837
This commit is contained in:
parent
42246e7f06
commit
c4b48a6a79
BIN
test/Object/Inputs/trivial-label-test.elf-x86-64
Normal file
BIN
test/Object/Inputs/trivial-label-test.elf-x86-64
Normal file
Binary file not shown.
10
test/Object/X86/objdump-label.test
Normal file
10
test/Object/X86/objdump-label.test
Normal file
@ -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
|
||||
|
@ -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";
|
||||
|
Loading…
x
Reference in New Issue
Block a user