diff --git a/include/bcc/bcc.h b/include/bcc/bcc.h
index f63a2d3..e09b245 100644
--- a/include/bcc/bcc.h
+++ b/include/bcc/bcc.h
@@ -95,6 +95,8 @@
                 char const *path,
                 unsigned long flags);
 
+void bccMarkExternalSymbol(BCCScriptRef script, char const *name);
+
 int bccPrepareSharedObject(BCCScriptRef script,
                          char const *cacheDir,
                          char const *cacheName,
diff --git a/lib/ExecutionEngine/Compiler.cpp b/lib/ExecutionEngine/Compiler.cpp
index 16bd687..7807194 100644
--- a/lib/ExecutionEngine/Compiler.cpp
+++ b/lib/ExecutionEngine/Compiler.cpp
@@ -78,6 +78,8 @@
 
 #include <string.h>
 
+#include <algorithm>
+#include <iterator>
 #include <string>
 #include <vector>
 
@@ -706,10 +708,21 @@
     }
   }
 
+  // TODO(logan): Remove this after we have finished the
+  // bccMarkExternalSymbol API.
+
   // root() and init() are born to be exported
   ExportSymbols.push_back("root");
   ExportSymbols.push_back("init");
 
+  // User-defined exporting symbols
+  std::vector<char const *> const &UserDefinedExternalSymbols =
+    mpResult->getUserDefinedExternalSymbols();
+
+  std::copy(UserDefinedExternalSymbols.begin(),
+            UserDefinedExternalSymbols.end(),
+            std::back_inserter(ExportSymbols));
+
   // We now create passes list performing LTO. These are copied from
   // (including comments) llvm::createStandardLTOPasses().
 
diff --git a/lib/ExecutionEngine/Script.h b/lib/ExecutionEngine/Script.h
index 46b385f..2855240 100644
--- a/lib/ExecutionEngine/Script.h
+++ b/lib/ExecutionEngine/Script.h
@@ -22,6 +22,9 @@
 
 #include "Compiler.h"
 
+#include <vector>
+#include <string>
+
 #include <stddef.h>
 
 namespace llvm {
@@ -69,6 +72,9 @@
     // Note: mSourceList[1] (library source)
     // TODO(logan): Generalize this, use vector or SmallVector instead!
 
+    // External Function List
+    std::vector<char const *> mUserDefinedExternalSymbols;
+
     // Register Symbol Lookup Function
     BCCSymbolLookupFn mpExtSymbolLookupFn;
     void *mpExtSymbolLookupFnContext;
@@ -99,6 +105,14 @@
                       char const *path,
                       unsigned long flags);
 
+    void markExternalSymbol(char const *name) {
+      mUserDefinedExternalSymbols.push_back(name);
+    }
+
+    std::vector<char const *> const &getUserDefinedExternalSymbols() const {
+      return mUserDefinedExternalSymbols;
+    }
+
     int prepareExecutable(char const *cacheDir,
                           char const *cacheName,
                           unsigned long flags);
diff --git a/lib/ExecutionEngine/ScriptCompiled.h b/lib/ExecutionEngine/ScriptCompiled.h
index 5972ddf..6a1a9e8 100644
--- a/lib/ExecutionEngine/ScriptCompiled.h
+++ b/lib/ExecutionEngine/ScriptCompiled.h
@@ -18,6 +18,7 @@
 #define BCC_SCRIPTCOMPILED_H
 
 #include "Compiler.h"
+#include "Script.h"
 
 #include <bcc/bcc.h>
 
@@ -32,8 +33,6 @@
 }
 
 namespace bcc {
-  class Script;
-
   class ScriptCompiled {
     friend class Compiler;
     friend class CodeEmitter;
@@ -137,6 +136,10 @@
     void getObjectSlotList(size_t objectSlotListSize,
                            uint32_t *objectSlotList);
 
+    std::vector<char const *> const & getUserDefinedExternalSymbols() const {
+      return mpOwner->getUserDefinedExternalSymbols();
+    }
+
 #if USE_OLD_JIT
     char *getContext() {
       return mContext;
diff --git a/lib/ExecutionEngine/bcc.cpp b/lib/ExecutionEngine/bcc.cpp
index 6199c16..3d24ac5 100644
--- a/lib/ExecutionEngine/bcc.cpp
+++ b/lib/ExecutionEngine/bcc.cpp
@@ -117,6 +117,12 @@
 }
 
 
+extern "C" void bccMarkExternalSymbol(BCCScriptRef script, char const *name) {
+  BCC_FUNC_LOGGER();
+  unwrap(script)->markExternalSymbol(name);
+}
+
+
 extern "C" int bccPrepareSharedObject(BCCScriptRef script,
                                       char const *cacheDir,
                                       char const *cacheName,
