From f62b9cd8905fd04e78775e29a01f41667286e67c Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Sat, 8 Dec 2012 00:18:16 +0000 Subject: Add the `lto_codegen_set_export_dynamic' function. This function sets the `_exportDynamic' ivar. When that's set, we export all symbols (e.g. we don't run the internalize pass). This is equivalent to the `--export-dynamic' linker flag in GNU land: --export-dynamic When creating a dynamically linked executable, add all symbols to the dynamic symbol table. The dynamic symbol table is the set of symbols which are visible from dynamic objects at run time. If you do not use this option, the dynamic symbol table will normally contain only those symbols which are referenced by some dynamic object mentioned in the link. If you use dlopen to load a dynamic object which needs to refer back to the symbols defined by the program, rather than some other dynamic object, then you will probably need to use this option when linking the program itself. The Darwin linker will support this via the `-export_dynamic' flag. We should modify clang to support this via the `-rdynamic' flag. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169656 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/lto/LTOCodeGenerator.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'tools/lto/LTOCodeGenerator.h') diff --git a/tools/lto/LTOCodeGenerator.h b/tools/lto/LTOCodeGenerator.h index 601dbfa044..db2a0fe50f 100644 --- a/tools/lto/LTOCodeGenerator.h +++ b/tools/lto/LTOCodeGenerator.h @@ -44,6 +44,7 @@ struct LTOCodeGenerator { bool setCodePICModel(lto_codegen_model, std::string &errMsg); void setCpu(const char* mCpu) { _mCpu = mCpu; } + void setExportDynamic(bool V) { _exportDynamic = V; } void addMustPreserveSymbol(const char* sym) { _mustPreserveSymbols[sym] = 1; @@ -70,6 +71,7 @@ private: llvm::TargetMachine* _target; bool _emitDwarfDebugInfo; bool _scopeRestrictionsDone; + bool _exportDynamic; lto_codegen_model _codeModel; StringSet _mustPreserveSymbols; StringSet _asmUndefinedRefs; -- cgit v1.2.3