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.

llvm-svn: 241389
This commit is contained in:
Peter Collingbourne 2015-07-04 03:42:35 +00:00
parent b90c13a50c
commit 4022d17865
2 changed files with 6 additions and 2 deletions

View File

@ -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;
/**

View File

@ -473,6 +473,9 @@ void LTOModule::addDefinedSymbol(const char *Name, const GlobalValue *def,
if (def->hasComdat())
attr |= LTO_SYMBOL_COMDAT;
if (isa<GlobalAlias>(def))
attr |= LTO_SYMBOL_ALIAS;
auto Iter = _defines.insert(Name).first;
// fill information structure