diff --git a/include/llvm-c/lto.h b/include/llvm-c/lto.h
index 74915c0..2bc0b54 100644
--- a/include/llvm-c/lto.h
+++ b/include/llvm-c/lto.h
@@ -251,6 +251,13 @@
                                int nargs);
 
 /**
+ * If set, then codegen will export all symbols (e.g. the internalize
+ * pass won't run).
+ */
+extern void
+lto_codegen_set_export_dynamic(lto_code_gen_t cg, bool val);
+
+/**
  * Adds to a list of all global symbols that must exist in the final
  * generated code.  If a function is not listed, it might be
  * inlined into every usage and optimized away.
diff --git a/tools/lto/LTOCodeGenerator.cpp b/tools/lto/LTOCodeGenerator.cpp
index 4098396..90c47eb 100644
--- a/tools/lto/LTOCodeGenerator.cpp
+++ b/tools/lto/LTOCodeGenerator.cpp
@@ -66,7 +66,7 @@
   : _context(getGlobalContext()),
     _linker("LinkTimeOptimizer", "ld-temp.o", _context), _target(NULL),
     _emitDwarfDebugInfo(false), _scopeRestrictionsDone(false),
-    _codeModel(LTO_CODEGEN_PIC_MODEL_DYNAMIC),
+    _exportDynamic(false), _codeModel(LTO_CODEGEN_PIC_MODEL_DYNAMIC),
     _nativeObjectFile(NULL) {
   InitializeAllTargets();
   InitializeAllTargetMCs();
@@ -339,7 +339,8 @@
 
   LLVMCompilerUsed->setSection("llvm.metadata");
 
-  passes.add(createInternalizePass(mustPreserveList));
+  if (!_exportDynamic)
+    passes.add(createInternalizePass(mustPreserveList));
 
   // apply scope restrictions
   passes.run(*mergedModule);
@@ -377,7 +378,8 @@
   // Enabling internalize here would use its AllButMain variant. It
   // keeps only main if it exists and does nothing for libraries. Instead
   // we create the pass ourselves with the symbol list provided by the linker.
-  PassManagerBuilder().populateLTOPassManager(passes, /*Internalize=*/false,
+  PassManagerBuilder().populateLTOPassManager(passes,
+                                              /*Internalize=*/!_exportDynamic,
                                               !DisableInline,
                                               DisableGVNLoadPRE);
 
diff --git a/tools/lto/LTOCodeGenerator.h b/tools/lto/LTOCodeGenerator.h
index 601dbfa..db2a0fe 100644
--- a/tools/lto/LTOCodeGenerator.h
+++ b/tools/lto/LTOCodeGenerator.h
@@ -44,6 +44,7 @@
   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 @@
   llvm::TargetMachine*        _target;
   bool                        _emitDwarfDebugInfo;
   bool                        _scopeRestrictionsDone;
+  bool                        _exportDynamic;
   lto_codegen_model           _codeModel;
   StringSet                   _mustPreserveSymbols;
   StringSet                   _asmUndefinedRefs;
diff --git a/tools/lto/lto.cpp b/tools/lto/lto.cpp
index 11ad532..630e704 100644
--- a/tools/lto/lto.cpp
+++ b/tools/lto/lto.cpp
@@ -174,6 +174,12 @@
   // In here only for backwards compatibility. We use MC now.
 }
 
+/// lto_codegen_set_export_dynamic - If set, then codegen will export all
+/// symbols (e.g. the internalize pass won't run).
+void lto_codegen_set_export_dynamic(lto_code_gen_t cg, bool val) {
+  cg->setExportDynamic(val);
+}
+
 /// lto_codegen_add_must_preserve_symbol - Adds to a list of all global symbols
 /// that must exist in the final generated code. If a function is not listed
 /// there, it might be inlined into every usage and optimized away.
diff --git a/tools/lto/lto.exports b/tools/lto/lto.exports
index 46d0d74..411f1e3 100644
--- a/tools/lto/lto.exports
+++ b/tools/lto/lto.exports
@@ -27,6 +27,7 @@
 lto_codegen_set_assembler_args
 lto_codegen_set_assembler_path
 lto_codegen_set_cpu
+lto_codegen_set_export_dynamic
 lto_codegen_compile_to_file
 LLVMCreateDisasm
 LLVMCreateDisasmCPU
