[llvm] r241389 - LTO: expose LTO_SYMBOL_ALIAS, which indicates that the symbol is an alias.

Peter Collingbourne peter at pcc.me.uk
Fri Jul 3 20:42:35 PDT 2015


Author: pcc
Date: Fri Jul  3 22:42:35 2015
New Revision: 241389

URL: http://llvm.org/viewvc/llvm-project?rev=241389&view=rev
Log:
LTO: expose LTO_SYMBOL_ALIAS, which indicates that the symbol is an alias.

This is needed for COFF linkers to distinguish between weak external aliases
and regular symbols with LLVM weak linkage, which are represented as strong
symbols in COFF.

Modified:
    llvm/trunk/include/llvm-c/lto.h
    llvm/trunk/lib/LTO/LTOModule.cpp

Modified: llvm/trunk/include/llvm-c/lto.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm-c/lto.h?rev=241389&r1=241388&r2=241389&view=diff
==============================================================================
--- llvm/trunk/include/llvm-c/lto.h (original)
+++ llvm/trunk/include/llvm-c/lto.h Fri Jul  3 22:42:35 2015
@@ -40,7 +40,7 @@ typedef bool lto_bool_t;
  * @{
  */
 
-#define LTO_API_VERSION 16
+#define LTO_API_VERSION 17
 
 /**
  * \since prior to LTO_API_VERSION=3
@@ -63,7 +63,8 @@ typedef enum {
     LTO_SYMBOL_SCOPE_PROTECTED             = 0x00002000,
     LTO_SYMBOL_SCOPE_DEFAULT               = 0x00001800,
     LTO_SYMBOL_SCOPE_DEFAULT_CAN_BE_HIDDEN = 0x00002800,
-    LTO_SYMBOL_COMDAT                      = 0x00004000
+    LTO_SYMBOL_COMDAT                      = 0x00004000,
+    LTO_SYMBOL_ALIAS                       = 0x00008000
 } lto_symbol_attributes;
 
 /**

Modified: llvm/trunk/lib/LTO/LTOModule.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/LTO/LTOModule.cpp?rev=241389&r1=241388&r2=241389&view=diff
==============================================================================
--- llvm/trunk/lib/LTO/LTOModule.cpp (original)
+++ llvm/trunk/lib/LTO/LTOModule.cpp Fri Jul  3 22:42:35 2015
@@ -473,6 +473,9 @@ void LTOModule::addDefinedSymbol(const c
   if (def->hasComdat())
     attr |= LTO_SYMBOL_COMDAT;
 
+  if (isa<GlobalAlias>(def))
+    attr |= LTO_SYMBOL_ALIAS;
+
   auto Iter = _defines.insert(Name).first;
 
   // fill information structure





More information about the llvm-commits mailing list