- Add the LinkerPrivateWeakDefAutoLinkage to the Ada bindings.
authorBill Wendling <isanbard@gmail.com>
Tue, 24 Aug 2010 20:00:52 +0000 (20:00 +0000)
committerBill Wendling <isanbard@gmail.com>
Tue, 24 Aug 2010 20:00:52 +0000 (20:00 +0000)
- Support the LinkerWeak*Linkage types in llvm-nm and in LinkModules.cpp.

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

bindings/ada/llvm/llvm.ads
lib/Linker/LinkModules.cpp
tools/llvm-nm/llvm-nm.cpp

index ce74e670a685bdabbc72b6e82cc71d51ab59b789..20fc940f8c246a39b275e23ab273e63039a0ac1c 100644 (file)
@@ -317,25 +317,27 @@ package llvm is
       LLVMGhostLinkage,
       LLVMCommonLinkage,
       LLVMLinkerPrivateLinkage,
-      LLVMLinkerPrivateWeakLinkage);
+      LLVMLinkerPrivateWeakLinkage,
+      LinkerPrivateWeakDefAutoLinkage);
 
    for LLVMLinkage use
-     (LLVMExternalLinkage            => 0,
-      LLVMAvailableExternallyLinkage => 1,
-      LLVMLinkOnceAnyLinkage         => 2,
-      LLVMLinkOnceODRLinkage         => 3,
-      LLVMWeakAnyLinkage             => 4,
-      LLVMWeakODRLinkage             => 5,
-      LLVMAppendingLinkage           => 6,
-      LLVMInternalLinkage            => 7,
-      LLVMPrivateLinkage             => 8,
-      LLVMDLLImportLinkage           => 9,
-      LLVMDLLExportLinkage           => 10,
-      LLVMExternalWeakLinkage        => 11,
-      LLVMGhostLinkage               => 12,
-      LLVMCommonLinkage              => 13,
-      LLVMLinkerPrivateLinkage       => 14,
-      LLVMLinkerPrivateWeakLinkage   => 15);
+     (LLVMExternalLinkage             => 0,
+      LLVMAvailableExternallyLinkage  => 1,
+      LLVMLinkOnceAnyLinkage          => 2,
+      LLVMLinkOnceODRLinkage          => 3,
+      LLVMWeakAnyLinkage              => 4,
+      LLVMWeakODRLinkage              => 5,
+      LLVMAppendingLinkage            => 6,
+      LLVMInternalLinkage             => 7,
+      LLVMPrivateLinkage              => 8,
+      LLVMDLLImportLinkage            => 9,
+      LLVMDLLExportLinkage            => 10,
+      LLVMExternalWeakLinkage         => 11,
+      LLVMGhostLinkage                => 12,
+      LLVMCommonLinkage               => 13,
+      LLVMLinkerPrivateLinkage        => 14,
+      LLVMLinkerPrivateWeakLinkage    => 15,
+      LinkerPrivateWeakDefAutoLinkage => 16);
 
    pragma Convention (C, LLVMLinkage);
 
index 1ab35e06305e1e2e21db2a93c6819b00c7641cc8..89f4cdc22960796855de5d9ec7bd4e9ec6814df9 100644 (file)
@@ -643,6 +643,12 @@ CalculateAliasLinkage(const GlobalValue *SGV, const GlobalValue *DGV) {
   else if (SL == GlobalValue::LinkerPrivateLinkage &&
            DL == GlobalValue::LinkerPrivateLinkage)
     return GlobalValue::LinkerPrivateLinkage;
+  else if (SL == GlobalValue::LinkerPrivateWeakLinkage &&
+           DL == GlobalValue::LinkerPrivateWeakLinkage)
+    return GlobalValue::LinkerPrivateWeakLinkage;
+  else if (SL == GlobalValue::LinkerPrivateWeakDefAutoLinkage &&
+           DL == GlobalValue::LinkerPrivateWeakDefAutoLinkage)
+    return GlobalValue::LinkerPrivateWeakDefAutoLinkage;
   else {
     assert (SL == GlobalValue::PrivateLinkage &&
             DL == GlobalValue::PrivateLinkage && "Unexpected linkage type");
index fd7e7f670b95c035d004a9bb49a71a13f00b6132..34c4ff890b96f6a69cb39c066a835c4be212cccc 100644 (file)
@@ -88,8 +88,11 @@ static char TypeCharForSymbol(GlobalValue &GV) {
 
 static void DumpSymbolNameForGlobalValue(GlobalValue &GV) {
   // Private linkage and available_externally linkage don't exist in symtab.
-  if (GV.hasPrivateLinkage() || GV.hasLinkerPrivateLinkage() ||
-      GV.hasLinkerPrivateWeakLinkage() || GV.hasAvailableExternallyLinkage())
+  if (GV.hasPrivateLinkage() ||
+      GV.hasLinkerPrivateLinkage() ||
+      GV.hasLinkerPrivateWeakLinkage() ||
+      GV.hasLinkerPrivateWeakDefAutoLinkage() ||
+      GV.hasAvailableExternallyLinkage())
     return;
   
   const std::string SymbolAddrStr = "        "; // Not used yet...