Update MachOObjectFile::getSymbolAddress so it returns UnknownAddressOrSize

for undefined symbols.  Allowing llvm-nm to print spaces instead of 0’s for
the value of undefined symbols in Mach-O files.

llvm-svn: 209235
This commit is contained in:
Kevin Enderby
2014-05-20 20:32:18 +00:00
parent 4e53f9e1fe
commit 1126d02c0c
3 changed files with 15 additions and 7 deletions

View File

@@ -472,10 +472,18 @@ error_code MachOObjectFile::getSymbolAddress(DataRefImpl Symb,
uint64_t &Res) const {
if (is64Bit()) {
MachO::nlist_64 Entry = getSymbol64TableEntry(Symb);
Res = Entry.n_value;
if ((Entry.n_type & MachO::N_TYPE) == MachO::N_UNDF &&
Entry.n_value == 0)
Res = UnknownAddressOrSize;
else
Res = Entry.n_value;
} else {
MachO::nlist Entry = getSymbolTableEntry(Symb);
Res = Entry.n_value;
if ((Entry.n_type & MachO::N_TYPE) == MachO::N_UNDF &&
Entry.n_value == 0)
Res = UnknownAddressOrSize;
else
Res = Entry.n_value;
}
return object_error::success;
}