[Object/ELF] Don't confuse isDefined() and isCommon.
authorDavide Italiano <davide@freebsd.org>
Sun, 7 Jun 2015 02:45:19 +0000 (02:45 +0000)
committerDavide Italiano <davide@freebsd.org>
Sun, 7 Jun 2015 02:45:19 +0000 (02:45 +0000)
Reported by Rafael Espindola. Pointy-hat to me.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239241 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Object/ELFTypes.h

index 09a6fea..3f323b5 100644 (file)
@@ -180,14 +180,11 @@ struct Elf_Sym_Impl : Elf_Sym_Base<ELFT> {
 
   bool isAbsolute() const { return st_shndx == ELF::SHN_ABS; }
   bool isCommon() const {
-    return !isUndefined() &&
-           !(st_shndx >= ELF::SHN_LORESERVE && st_shndx < ELF::SHN_ABS);
+    return getType() == ELF::STT_COMMON || st_shndx == ELF::SHN_COMMON;
   }
   bool isDefined() const {
     return !isUndefined() &&
-           (!(st_shndx >= ELF::SHN_LORESERVE &&
-              st_shndx <= ELF::SHN_HIRESERVE) ||
-            st_shndx == ELF::SHN_XINDEX);
+           !(st_shndx >= ELF::SHN_LORESERVE && st_shndx < ELF::SHN_ABS);
   }
   bool isProcessorSpecific() const {
     return st_shndx >= ELF::SHN_LOPROC && st_shndx <= ELF::SHN_HIPROC;