<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Jun 5, 2015 at 1:46 PM, Davide Italiano <span dir="ltr"><<a href="mailto:dccitaliano@gmail.com" target="_blank">dccitaliano@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Yes, you're both right. I should have done this before.<br>
<br>
<br>
<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_D10264&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=Cv0FUZiwH3nML6T0jSX3uz6C1WrOUIWIEO-jyffhcLg&s=wtwL49kD3pS05b4tCa7TllqPYstr7hOjyBf2St0135U&e=" target="_blank">http://reviews.llvm.org/D10264</a><br>
<br>
Files:<br>
  include/llvm/Object/ELFTypes.h<br>
<br>
Index: include/llvm/Object/ELFTypes.h<br>
===================================================================<br>
--- include/llvm/Object/ELFTypes.h<br>
+++ include/llvm/Object/ELFTypes.h<br>
@@ -154,6 +154,7 @@<br>
 template <class ELFT><br>
 struct Elf_Sym_Impl : Elf_Sym_Base<ELFT> {<br>
   using Elf_Sym_Base<ELFT>::st_info;<br>
+  using Elf_Sym_Base<ELFT>::st_shndx;<br>
   using Elf_Sym_Base<ELFT>::st_other;<br>
<br>
   // These accessors and mutators correspond to the ELF32_ST_BIND,<br>
@@ -176,6 +177,27 @@<br>
     assert(v < 4 && "Invalid value for visibility");<br>
     st_other = (st_other & ~0x3) | v;<br>
   }<br>
+<br>
+  bool isAbsoluteSymbol() const { return st_shndx == ELF::SHN_ABS; }<br>
+  bool isCommonSymbol() const {<br>
+    return getType() == ELF::STT_COMMON || st_shndx == ELF::SHN_COMMON;<br>
+  }<br>
+  bool isDefinedSymbol() const {<br>
+    return !isUndefinedSymbol() &&<br>
+           (!(st_shndx >= ELF::SHN_LORESERVE &&<br>
+              st_shndx <= ELF::SHN_HIRESERVE) ||<br>
+            st_shndx == ELF::SHN_XINDEX);<br>
+  }<br>
+  bool isProcessorSpecificSymbol() const {<br>
+    return st_shndx >= ELF::SHN_LOPROC && st_shndx <= ELF::SHN_HIPROC;<br>
+  }<br>
+  bool isOSSpecificSymbol() const {<br>
+    return st_shndx >= ELF::SHN_LOOS && st_shndx <= ELF::SHN_HIOS;<br>
+  }<br>
+  bool isReservedSymbol() const {<br>
+    return st_shndx > ELF::SHN_HIOS && st_shndx < ELF::SHN_ABS;<br>
+  }<br>
+  bool isUndefinedSymbol() const { return st_shndx == ELF::SHN_UNDEF; }<br>
 };<br></blockquote><div> </div><div>Because they are now members of Elf_Sym, I'd remove "Symbol" suffix from function names.</div></div></div></div>