Skip to content

Commit

Permalink
Implement MachOObjectFile::isSectionData() and MachOObjectFile::isSec…
Browse files Browse the repository at this point in the history
…tionBSS

so that llvm-size will total up all the sections in the Berkeley format.  This
allows for rough categorizations for Mach-O sections.  And allows the total of
llvm-size’s Berkeley and System V formats to be the same.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209158 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
enderby committed May 19, 2014
1 parent ca162fa commit 86ad7b7
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 6 deletions.
18 changes: 12 additions & 6 deletions lib/Object/MachOObjectFile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -686,15 +686,21 @@ MachOObjectFile::isSectionText(DataRefImpl Sec, bool &Res) const {
return object_error::success;
}

error_code MachOObjectFile::isSectionData(DataRefImpl DRI, bool &Result) const {
// FIXME: Unimplemented.
Result = false;
error_code MachOObjectFile::isSectionData(DataRefImpl Sec, bool &Result) const {
uint32_t Flags = getSectionFlags(this, Sec);
unsigned SectionType = Flags & MachO::SECTION_TYPE;
Result = !(Flags & MachO::S_ATTR_PURE_INSTRUCTIONS) &&
!(SectionType == MachO::S_ZEROFILL ||
SectionType == MachO::S_GB_ZEROFILL);
return object_error::success;
}

error_code MachOObjectFile::isSectionBSS(DataRefImpl DRI, bool &Result) const {
// FIXME: Unimplemented.
Result = false;
error_code MachOObjectFile::isSectionBSS(DataRefImpl Sec, bool &Result) const {
uint32_t Flags = getSectionFlags(this, Sec);
unsigned SectionType = Flags & MachO::SECTION_TYPE;
Result = !(Flags & MachO::S_ATTR_PURE_INSTRUCTIONS) &&
(SectionType == MachO::S_ZEROFILL ||
SectionType == MachO::S_GB_ZEROFILL);
return object_error::success;
}

Expand Down
Binary file added test/Object/Inputs/macho-text-data-bss.macho-x86_64
Binary file not shown.
15 changes: 15 additions & 0 deletions test/Object/size-trivial-macho.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
RUN: llvm-size -A %p/Inputs/macho-text-data-bss.macho-x86_64 \
RUN: | FileCheck %s -check-prefix A
RUN: llvm-size -B %p/Inputs/macho-text-data-bss.macho-x86_64 \
RUN: | FileCheck %s -check-prefix B

A: section size addr
A: __text 12 0
A: __data 4 12
A: __bss 4 112
A: __compact_unwind 32 16
A: __eh_frame 64 48
A: Total 116

B: text data bss dec hex filename
B: 12 100 4 116 74

0 comments on commit 86ad7b7

Please sign in to comment.