mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-10-04 19:17:12 +00:00
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:
@@ -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);
|
||||
|
Reference in New Issue
Block a user