[PATCH] [Object/ELF] Provide symbol helpers
Davide Italiano
dccitaliano at gmail.com
Fri Jun 5 13:46:14 PDT 2015
Yes, you're both right. I should have done this before.
http://reviews.llvm.org/D10264
Files:
include/llvm/Object/ELFTypes.h
Index: include/llvm/Object/ELFTypes.h
===================================================================
--- include/llvm/Object/ELFTypes.h
+++ include/llvm/Object/ELFTypes.h
@@ -154,6 +154,7 @@
template <class ELFT>
struct Elf_Sym_Impl : Elf_Sym_Base<ELFT> {
using Elf_Sym_Base<ELFT>::st_info;
+ using Elf_Sym_Base<ELFT>::st_shndx;
using Elf_Sym_Base<ELFT>::st_other;
// These accessors and mutators correspond to the ELF32_ST_BIND,
@@ -176,6 +177,27 @@
assert(v < 4 && "Invalid value for visibility");
st_other = (st_other & ~0x3) | v;
}
+
+ bool isAbsoluteSymbol() const { return st_shndx == ELF::SHN_ABS; }
+ bool isCommonSymbol() const {
+ return getType() == ELF::STT_COMMON || st_shndx == ELF::SHN_COMMON;
+ }
+ bool isDefinedSymbol() const {
+ return !isUndefinedSymbol() &&
+ (!(st_shndx >= ELF::SHN_LORESERVE &&
+ st_shndx <= ELF::SHN_HIRESERVE) ||
+ st_shndx == ELF::SHN_XINDEX);
+ }
+ bool isProcessorSpecificSymbol() const {
+ return st_shndx >= ELF::SHN_LOPROC && st_shndx <= ELF::SHN_HIPROC;
+ }
+ bool isOSSpecificSymbol() const {
+ return st_shndx >= ELF::SHN_LOOS && st_shndx <= ELF::SHN_HIOS;
+ }
+ bool isReservedSymbol() const {
+ return st_shndx > ELF::SHN_HIOS && st_shndx < ELF::SHN_ABS;
+ }
+ bool isUndefinedSymbol() const { return st_shndx == ELF::SHN_UNDEF; }
};
/// Elf_Versym: This is the structure of entries in the SHT_GNU_versym section
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D10264.27224.patch
Type: text/x-patch
Size: 1463 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150605/29ce09bd/attachment.bin>
More information about the llvm-commits
mailing list