From dfe478600bd5fef40f459f87b49f5b1fa0c980bd Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Sat, 4 Jul 2015 03:42:35 +0000 Subject: [PATCH] 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241389 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm-c/lto.h | 5 +++-- lib/LTO/LTOModule.cpp | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/include/llvm-c/lto.h b/include/llvm-c/lto.h index 42c05a2fc59..cb3a6916045 100644 --- a/include/llvm-c/lto.h +++ b/include/llvm-c/lto.h @@ -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; /** diff --git a/lib/LTO/LTOModule.cpp b/lib/LTO/LTOModule.cpp index 6131c318024..53ed4175f8e 100644 --- a/lib/LTO/LTOModule.cpp +++ b/lib/LTO/LTOModule.cpp @@ -473,6 +473,9 @@ void LTOModule::addDefinedSymbol(const char *Name, const GlobalValue *def, if (def->hasComdat()) attr |= LTO_SYMBOL_COMDAT; + if (isa(def)) + attr |= LTO_SYMBOL_ALIAS; + auto Iter = _defines.insert(Name).first; // fill information structure