summaryrefslogtreecommitdiff
path: root/include/llvm/Object
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-04-02 22:52:46 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-04-02 22:52:46 +0000
commit5a61b72493a700229bac6cf87366188b039c6271 (patch)
treebc09e9609917636e9efe8bb94f529e47cf195405 /include/llvm/Object
parentd7e2a4815398dcaf7111c7ab0e4df52afd93a880 (diff)
downloadllvm-5a61b72493a700229bac6cf87366188b039c6271.tar.gz
llvm-5a61b72493a700229bac6cf87366188b039c6271.tar.bz2
llvm-5a61b72493a700229bac6cf87366188b039c6271.tar.xz
Fix a nomenclature error in llvm-nm.
What llvm-nm prints depends on the file format. On ELF for example, if the file is relocatable, it prints offsets. If it is not, it prints addresses. Since it doesn't really need to care what it is that it is printing, use the generic term value. Fix or implement getSymbolValue to keep llvm-nm working. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205479 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Object')
-rw-r--r--include/llvm/Object/ELFObjectFile.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/include/llvm/Object/ELFObjectFile.h b/include/llvm/Object/ELFObjectFile.h
index be5ed9b611..f611c6c06f 100644
--- a/include/llvm/Object/ELFObjectFile.h
+++ b/include/llvm/Object/ELFObjectFile.h
@@ -417,7 +417,15 @@ template <class ELFT>
error_code ELFObjectFile<ELFT>::getSymbolValue(DataRefImpl Symb,
uint64_t &Val) const {
const Elf_Sym *ESym = getSymbol(Symb);
- Val = ESym->st_value;
+ switch (EF.getSymbolTableIndex(ESym)) {
+ default:
+ Val = ESym->st_value;
+ break;
+ case ELF::SHN_COMMON:
+ case ELF::SHN_UNDEF:
+ Val = UnknownAddressOrSize;
+ break;
+ }
return object_error::success;
}