diff options
author | George Rimar <grimar@accesssoftek.com> | 2017-05-26 12:46:41 +0000 |
---|---|---|
committer | George Rimar <grimar@accesssoftek.com> | 2017-05-26 12:46:41 +0000 |
commit | 732f268aa08644854c3ce9418b31ee706f1d372a (patch) | |
tree | 289809275da9912466f0d11538890949b9a2a91a /llvm/lib/Object/MachOObjectFile.cpp | |
parent | 0f62ed2bbee011e01ddbd2aa021c7ddd129785d2 (diff) | |
download | bcm5719-llvm-732f268aa08644854c3ce9418b31ee706f1d372a.tar.gz bcm5719-llvm-732f268aa08644854c3ce9418b31ee706f1d372a.zip |
[DWARF] - Make collectAddressRanges() return section index in addition to Low/High PC
This change is intended to use for LLD in D33183.
Problem we have in LLD when building .gdb_index is that we need to know section
which address range belongs to.
Previously it was solved on LLD side by providing fake section addresses
with use of llvm::LoadedObjectInfo interface. We assigned file offsets as addressed.
Then after obtaining ranges lists, for each range we had to find section ID's.
That not only was slow, but also complicated implementation and was the reason
of incorrect behavior when
sections share the same offsets, like D33176 shows.
This patch makes DWARF parsers to return section index as well.
That solves problem mentioned above.
Differential revision: https://reviews.llvm.org/D33184
llvm-svn: 303978
Diffstat (limited to 'llvm/lib/Object/MachOObjectFile.cpp')
-rw-r--r-- | llvm/lib/Object/MachOObjectFile.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp index 3d3fa07db3f..bfb8875f47d 100644 --- a/llvm/lib/Object/MachOObjectFile.cpp +++ b/llvm/lib/Object/MachOObjectFile.cpp @@ -1820,6 +1820,10 @@ uint64_t MachOObjectFile::getSectionAddress(DataRefImpl Sec) const { return getSection(Sec).addr; } +uint64_t MachOObjectFile::getSectionIndex(DataRefImpl Sec) const { + return Sec.d.a; +} + uint64_t MachOObjectFile::getSectionSize(DataRefImpl Sec) const { // In the case if a malformed Mach-O file where the section offset is past // the end of the file or some part of the section size is past the end of |