mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-12 13:30:51 +00:00
llvm-objdump: Handle BSS sections larger than the object file
The size of the uninitialized sections, like BSS, can exceed the size of the object file. Do not attempt to grab the contents of such sections. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212953 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9e251d6d41
commit
e3aafccae9
BIN
test/tools/llvm-objdump/Inputs/large-bss.obj.coff-i386
Normal file
BIN
test/tools/llvm-objdump/Inputs/large-bss.obj.coff-i386
Normal file
Binary file not shown.
6
test/tools/llvm-objdump/coff-large-bss.test
Normal file
6
test/tools/llvm-objdump/coff-large-bss.test
Normal file
@ -0,0 +1,6 @@
|
||||
RUN: llvm-objdump -s %p/Inputs/large-bss.obj.coff-i386 | FileCheck %s
|
||||
|
||||
; CHECK: Contents of section .text:
|
||||
: CHECK-NEXT: Contents of section .data:
|
||||
: CHECK-NEXT: Contents of section .bss:
|
||||
: CHECK-NEXT: <skipping contents of bss section at [0000, 010f)>
|
@ -628,8 +628,6 @@ static void PrintSectionContents(const ObjectFile *Obj) {
|
||||
bool BSS;
|
||||
if (error(Section.getName(Name)))
|
||||
continue;
|
||||
if (error(Section.getContents(Contents)))
|
||||
continue;
|
||||
if (error(Section.getAddress(BaseAddr)))
|
||||
continue;
|
||||
if (error(Section.isBSS(BSS)))
|
||||
@ -637,12 +635,18 @@ static void PrintSectionContents(const ObjectFile *Obj) {
|
||||
|
||||
outs() << "Contents of section " << Name << ":\n";
|
||||
if (BSS) {
|
||||
uint64_t Size;
|
||||
if (error(Section.getSize(Size)))
|
||||
continue;
|
||||
outs() << format("<skipping contents of bss section at [%04" PRIx64
|
||||
", %04" PRIx64 ")>\n", BaseAddr,
|
||||
BaseAddr + Contents.size());
|
||||
", %04" PRIx64 ")>\n",
|
||||
BaseAddr, BaseAddr + Size);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (error(Section.getContents(Contents)))
|
||||
continue;
|
||||
|
||||
// Dump out the content as hex and printable ascii characters.
|
||||
for (std::size_t addr = 0, end = Contents.size(); addr < end; addr += 16) {
|
||||
outs() << format(" %04" PRIx64 " ", BaseAddr + addr);
|
||||
|
Loading…
Reference in New Issue
Block a user