lto: Record visibility in defined symbols.
authorRafael Espindola <rafael.espindola@gmail.com>
Mon, 7 Mar 2016 17:14:36 +0000 (17:14 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Mon, 7 Mar 2016 17:14:36 +0000 (17:14 +0000)
llvm-svn: 262835

lld/ELF/InputFiles.cpp
lld/ELF/Symbols.cpp
lld/ELF/Symbols.h
lld/test/ELF/lto/Inputs/visibility.s
lld/test/ELF/lto/visibility.ll

index f67fe47..51fe01e 100644 (file)
@@ -457,7 +457,7 @@ void BitcodeFile::parse(DenseSet<StringRef> &ComdatGroups) {
     if (Flags & BasicSymbolRef::SF_Undefined)
       Body = new (Alloc) Undefined(NameRef, IsWeak, Visibility, false);
     else
-      Body = new (Alloc) DefinedBitcode(NameRef, IsWeak);
+      Body = new (Alloc) DefinedBitcode(NameRef, IsWeak, Visibility);
     SymbolBodies.push_back(Body);
   }
 }
index f67b206..7d91f05 100644 (file)
@@ -164,8 +164,8 @@ Defined::Defined(Kind K, StringRef Name, bool IsWeak, uint8_t Visibility,
                  uint8_t Type)
     : SymbolBody(K, Name, IsWeak, Visibility, Type) {}
 
-DefinedBitcode::DefinedBitcode(StringRef Name, bool IsWeak)
-    : Defined(DefinedBitcodeKind, Name, IsWeak, STV_DEFAULT, 0 /* Type */) {}
+DefinedBitcode::DefinedBitcode(StringRef Name, bool IsWeak, uint8_t Visibility)
+    : Defined(DefinedBitcodeKind, Name, IsWeak, Visibility, 0 /* Type */) {}
 
 bool DefinedBitcode::classof(const SymbolBody *S) {
   return S->kind() == DefinedBitcodeKind;
index c73371a..b0b0faa 100644 (file)
@@ -188,7 +188,7 @@ public:
 
 class DefinedBitcode : public Defined {
 public:
-  DefinedBitcode(StringRef Name, bool IsWeak);
+  DefinedBitcode(StringRef Name, bool IsWeak, uint8_t Visibility);
   static bool classof(const SymbolBody *S);
 };
 
index a63aa6d..db1379c 100644 (file)
@@ -1,3 +1,8 @@
         .global g
 g:
         ret
+
+        .data
+        .global a
+a:
+        .long 41
index 3f561f2..b0b6bca 100644 (file)
 ; CHECK-NEXT: Other: 2
 ; CHECK-NEXT: Section: .text
 
+; CHECK:      Name: a
+; CHECK-NEXT: Value: 0x3000
+; CHECK-NEXT: Size: 0
+; CHECK-NEXT: Binding: Local
+; CHECK-NEXT: Type: None
+; CHECK-NEXT: Other: 2
+; CHECK-NEXT: Section: .data
+
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
@@ -20,3 +28,4 @@ define void @f() {
   call void @g()
   ret void
 }
+@a = weak hidden global i32 42