From 0eaa6f675cafb2bb1b6a6210797c1d7b3da3ff9f Mon Sep 17 00:00:00 2001 From: Alexey Samsonov Date: Tue, 16 Apr 2013 10:53:11 +0000 Subject: [PATCH] llvm-objdump: Don't print contents of BSS sections: it makes no sense and crashes llvm-objdump on relocated objects with large bss git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179589 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Object/objdump-section-content.test | 5 +++++ tools/llvm-objdump/llvm-objdump.cpp | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/test/Object/objdump-section-content.test b/test/Object/objdump-section-content.test index f9c4f43f0be..e0199b329d1 100644 --- a/test/Object/objdump-section-content.test +++ b/test/Object/objdump-section-content.test @@ -1,6 +1,8 @@ RUN: yaml2obj %p/Inputs/COFF/i386.yaml | llvm-objdump -s - | FileCheck %s -check-prefix COFF-i386 RUN: llvm-objdump -s %p/Inputs/trivial-object-test.elf-i386 \ RUN: | FileCheck %s -check-prefix ELF-i386 +RUN: llvm-objdump -s %p/Inputs/shared-object-test.elf-i386 \ +RUN: | FileCheck %s -check-prefix BSS COFF-i386: file format COFF-i386: Contents of section .text: @@ -17,3 +19,6 @@ ELF-i386: 0010 0000e8fc ffffffe8 fcffffff 8b442408 .............D$. ELF-i386: 0020 83c40cc3 .... ELF-i386: Contents of section .rodata.str1.1: ELF-i386: 0024 48656c6c 6f20576f 726c6421 00 Hello World!. + +BSS: Contents of section .bss: +BSS-NEXT: diff --git a/tools/llvm-objdump/llvm-objdump.cpp b/tools/llvm-objdump/llvm-objdump.cpp index 5a0519ddc11..6f4b101c308 100644 --- a/tools/llvm-objdump/llvm-objdump.cpp +++ b/tools/llvm-objdump/llvm-objdump.cpp @@ -468,11 +468,19 @@ static void PrintSectionContents(const ObjectFile *o) { StringRef Name; StringRef Contents; uint64_t BaseAddr; + bool BSS; if (error(si->getName(Name))) continue; if (error(si->getContents(Contents))) continue; if (error(si->getAddress(BaseAddr))) continue; + if (error(si->isBSS(BSS))) continue; outs() << "Contents of section " << Name << ":\n"; + if (BSS) { + outs() << format("\n", BaseAddr, + BaseAddr + Contents.size()); + continue; + } // Dump out the content as hex and printable ascii characters. for (std::size_t addr = 0, end = Contents.size(); addr < end; addr += 16) { -- 2.34.1