aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Object/ObjectFile.cpp
diff options
context:
space:
mode:
authorJordan Rupprecht <rupprecht@google.com>2018-12-13 19:40:12 +0000
committerJordan Rupprecht <rupprecht@google.com>2018-12-13 19:40:12 +0000
commit4888c4aba5a1eaca0f0b9f4ec2ab7008c2fc103b (patch)
tree60601deeeb47026598cf47487b8fcb596b392450 /llvm/lib/Object/ObjectFile.cpp
parent35cb7e9fe83852713c22f966a9856a4999bc2bd7 (diff)
downloadllvm-4888c4aba5a1eaca0f0b9f4ec2ab7008c2fc103b.zip
llvm-4888c4aba5a1eaca0f0b9f4ec2ab7008c2fc103b.tar.gz
llvm-4888c4aba5a1eaca0f0b9f4ec2ab7008c2fc103b.tar.bz2
[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/lib/Object/ObjectFile.cpp')
-rw-r--r--llvm/lib/Object/ObjectFile.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/llvm/lib/Object/ObjectFile.cpp b/llvm/lib/Object/ObjectFile.cpp
index db0ff22..cf63b89 100644
--- a/llvm/lib/Object/ObjectFile.cpp
+++ b/llvm/lib/Object/ObjectFile.cpp
@@ -77,6 +77,14 @@ bool ObjectFile::isSectionBitcode(DataRefImpl Sec) const {
bool ObjectFile::isSectionStripped(DataRefImpl Sec) const { return false; }
+bool ObjectFile::isBerkeleyText(DataRefImpl Sec) const {
+ return isSectionText(Sec);
+}
+
+bool ObjectFile::isBerkeleyData(DataRefImpl Sec) const {
+ return isSectionData(Sec);
+}
+
section_iterator ObjectFile::getRelocatedSection(DataRefImpl Sec) const {
return section_iterator(SectionRef(Sec, this));
}