From b074e3f11581a91b1072b37c63421db7d45099d3 Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Thu, 2 Feb 2017 23:10:22 +0000 Subject: [PATCH] [lto] added getCOFFWeakExternalFallback Summary: This allows clients of the LTO API to determine the name of the fallback symbol for COFF weak externals. Reviewers: pcc Reviewed By: pcc Subscribers: mehdi_amini Differential Revision: https://reviews.llvm.org/D29365 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293960 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/LTO/LTO.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/include/llvm/LTO/LTO.h b/include/llvm/LTO/LTO.h index 5886ed99171..c346ec522df 100644 --- a/include/llvm/LTO/LTO.h +++ b/include/llvm/LTO/LTO.h @@ -152,6 +152,22 @@ public: skip(); } + /// For COFF weak externals, returns the name of the symbol that is used + /// as a fallback if the weak external remains undefined. + std::string getCOFFWeakExternalFallback() const { + assert((Flags & object::BasicSymbolRef::SF_Weak) && + (Flags & object::BasicSymbolRef::SF_Indirect) && + "symbol is not a weak external"); + std::string Name; + raw_string_ostream OS(Name); + SymTab.printSymbolName( + OS, + cast( + cast(getGV())->getAliasee()->stripPointerCasts())); + OS.flush(); + return Name; + } + /// Returns the mangled name of the global. StringRef getName() const { return Name; } -- 2.50.1