Don't include llvm.metadata variables in archive symbol tables.
authorRafael Espindola <rafael.espindola@gmail.com>
Fri, 4 Jul 2014 15:03:17 +0000 (15:03 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Fri, 4 Jul 2014 15:03:17 +0000 (15:03 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212344 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Object/IRObjectFile.cpp
test/Object/Inputs/trivial.ll
test/Object/nm-archive.test

index 50394058a87ad69a0da3c73953f1501b7730e12a..d01910811a65f5a2a7094f34fd02041013798456 100644 (file)
@@ -240,6 +240,11 @@ uint32_t IRObjectFile::getSymbolFlags(DataRefImpl Symb) const {
   if (GV->hasLinkOnceLinkage() || GV->hasWeakLinkage())
     Res |= BasicSymbolRef::SF_Weak;
 
+  if (auto *Var = dyn_cast<GlobalVariable>(GV)) {
+    if (Var->getSection() == StringRef("llvm.metadata"))
+      Res |= BasicSymbolRef::SF_FormatSpecific;
+  }
+
   return Res;
 }
 
index 25ece7611a3156770a30910a3834ff3252d8eec4..622d1e97f1e358c692fa01d4024213c6582e707d 100644 (file)
@@ -10,3 +10,6 @@ entry:
 declare i32 @puts(i8* nocapture) nounwind
 
 declare void @SomeOtherFunction(...)
+
+@var = global i32 0
+@llvm.used = appending global [1 x i8*] [i8* bitcast (i32* @var to i8*)], section "llvm.metadata"
index d875d6c991c1efa5a63d21d29660c1b34cdac60f..9cb84b28d29693d4075c014874d1c072c086ecc8 100644 (file)
@@ -18,6 +18,7 @@ RUN: llvm-nm %t2 | FileCheck %s -check-prefix BITCODE
 BITCODE:          U SomeOtherFunction
 BITCODE-NEXT:          T main
 BITCODE-NEXT:          U puts
+BITCODE-NEXT:          D var
 
 
 Test we don't error with an archive with no symtab.