Implement get getSymbolFileOffset with getSymbolAddress.

This has the following advantages:
* Less code.
* The old ELF implementation was wrong for non-relocatable objects.
* The old ELF implementation (and I think MachO) was wrong for thumb.

No current testcase since this is only used from MCJIT and it only uses
relocatable objects and I don't think it supports thumb yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205508 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola
2014-04-03 03:13:33 +00:00
parent 3539519223
commit 051c948bbe
6 changed files with 24 additions and 80 deletions

View File

@@ -479,29 +479,6 @@ error_code MachOObjectFile::getSymbolAddress(DataRefImpl Symb,
return object_error::success;
}
error_code
MachOObjectFile::getSymbolFileOffset(DataRefImpl Symb,
uint64_t &Res) const {
nlist_base Entry = getSymbolTableEntryBase(this, Symb);
getSymbolAddress(Symb, Res);
if (Entry.n_sect) {
uint64_t Delta;
DataRefImpl SecRel;
SecRel.d.a = Entry.n_sect-1;
if (is64Bit()) {
MachO::section_64 Sec = getSection64(SecRel);
Delta = Sec.offset - Sec.addr;
} else {
MachO::section Sec = getSection(SecRel);
Delta = Sec.offset - Sec.addr;
}
Res += Delta;
}
return object_error::success;
}
error_code MachOObjectFile::getSymbolAlignment(DataRefImpl DRI,
uint32_t &Result) const {
uint32_t flags = getSymbolFlags(DRI);