diff options
author | Jordan Rupprecht <rupprecht@google.com> | 2018-12-13 19:40:12 +0000 |
---|---|---|
committer | Jordan Rupprecht <rupprecht@google.com> | 2018-12-13 19:40:12 +0000 |
commit | 4888c4aba5a1eaca0f0b9f4ec2ab7008c2fc103b (patch) | |
tree | 60601deeeb47026598cf47487b8fcb596b392450 /llvm/tools/llvm-size | |
parent | 35cb7e9fe83852713c22f966a9856a4999bc2bd7 (diff) | |
download | bcm5719-llvm-4888c4aba5a1eaca0f0b9f4ec2ab7008c2fc103b.tar.gz bcm5719-llvm-4888c4aba5a1eaca0f0b9f4ec2ab7008c2fc103b.zip |
[llvm-size][libobject] Add explicit "inTextSegment" methods similar to "isText" section methods to calculate size correctly.
Summary:
llvm-size uses "isText()" etc. which seem to indicate whether the section contains code-like things, not whether or not it will actually go in the text segment when in a fully linked executable.
The unit test added (elf-sizes.test) shows some types of sections that cause discrepencies versus the GNU size tool. llvm-size is not correctly reporting sizes of things mapping to text/data segments, at least for ELF files.
This fixes pr38723.
Reviewers: echristo, Bigcheese, MaskRay
Reviewed By: MaskRay
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D54369
llvm-svn: 349074
Diffstat (limited to 'llvm/tools/llvm-size')
-rw-r--r-- | llvm/tools/llvm-size/llvm-size.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/tools/llvm-size/llvm-size.cpp b/llvm/tools/llvm-size/llvm-size.cpp index a92a8ab25a1..be1e5bb7268 100644 --- a/llvm/tools/llvm-size/llvm-size.cpp +++ b/llvm/tools/llvm-size/llvm-size.cpp @@ -457,8 +457,8 @@ static void printObjectSectionSizes(ObjectFile *Obj) { // Make one pass over the section table to calculate sizes. for (const SectionRef &Section : Obj->sections()) { uint64_t size = Section.getSize(); - bool isText = Section.isText(); - bool isData = Section.isData(); + bool isText = Section.isBerkeleyText(); + bool isData = Section.isBerkeleyData(); bool isBSS = Section.isBSS(); if (isText) total_text += size; |