diff options
author | Kevin Enderby <enderby@apple.com> | 2014-05-20 20:32:18 +0000 |
---|---|---|
committer | Kevin Enderby <enderby@apple.com> | 2014-05-20 20:32:18 +0000 |
commit | 1126d02c0ca06557dffdd1cf870693f2647bdc53 (patch) | |
tree | a5364c2de71c4e08de9ad0db888758364b41f89c /llvm/lib/Object/MachOObjectFile.cpp | |
parent | 4e53f9e1fe7d3709d7dc87e49fbcd37b8fed928a (diff) | |
download | bcm5719-llvm-1126d02c0ca06557dffdd1cf870693f2647bdc53.tar.gz bcm5719-llvm-1126d02c0ca06557dffdd1cf870693f2647bdc53.zip |
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
Diffstat (limited to 'llvm/lib/Object/MachOObjectFile.cpp')
-rw-r--r-- | llvm/lib/Object/MachOObjectFile.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp index 0951460ccbb..9c581d37841 100644 --- a/llvm/lib/Object/MachOObjectFile.cpp +++ b/llvm/lib/Object/MachOObjectFile.cpp @@ -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; } |