diff --git a/lib/Support/ToolRunner.cpp b/lib/Support/ToolRunner.cpp
index 71d42161629..0e6a0413dd6 100644
--- a/lib/Support/ToolRunner.cpp
+++ b/lib/Support/ToolRunner.cpp
@@ -406,7 +406,7 @@ int GCC::MakeSharedObject(const std::string &InputFile, FileType fileType,
 #elif (defined(__POWERPC__) || defined(__ppc__)) && defined(__APPLE__)
     "-dynamiclib",               // `-dynamiclib' for MacOS X/PowerPC
     "-fno-common",               // allow global vars w/o initializers to live
-                                 // in data segment, rather than generating
+    "-undefined",                // in data segment, rather than generating
     "dynamic_lookup",            // blocks. dynamic_lookup requires that you set
                                  // MACOSX_DEPLOYMENT_TARGET=10.3 in your env.
 #else
diff --git a/tools/bugpoint/ToolRunner.cpp b/tools/bugpoint/ToolRunner.cpp
index 71d42161629..0e6a0413dd6 100644
--- a/tools/bugpoint/ToolRunner.cpp
+++ b/tools/bugpoint/ToolRunner.cpp
@@ -406,7 +406,7 @@ int GCC::MakeSharedObject(const std::string &InputFile, FileType fileType,
 #elif (defined(__POWERPC__) || defined(__ppc__)) && defined(__APPLE__)
     "-dynamiclib",               // `-dynamiclib' for MacOS X/PowerPC
     "-fno-common",               // allow global vars w/o initializers to live
-                                 // in data segment, rather than generating
+    "-undefined",                // in data segment, rather than generating
     "dynamic_lookup",            // blocks. dynamic_lookup requires that you set
                                  // MACOSX_DEPLOYMENT_TARGET=10.3 in your env.
 #else