diff --git a/lib/System/DynamicLibrary.cpp b/lib/System/DynamicLibrary.cpp index b511a3cad20..7eb9f5f3ef8 100644 --- a/lib/System/DynamicLibrary.cpp +++ b/lib/System/DynamicLibrary.cpp @@ -69,10 +69,6 @@ bool DynamicLibrary::LoadLibraryPermanently(const char *Filename, return false; } -#define EXPLICIT_SYMBOL(SYM) \ - extern "C" void *SYM; -#include "DynamicLibrarySymbolDefs.def" - void* DynamicLibrary::SearchForAddressOfSymbol(const char* symbolName) { // First check symbols added via AddSymbol(). if (ExplicitSymbols) { @@ -97,15 +93,41 @@ void* DynamicLibrary::SearchForAddressOfSymbol(const char* symbolName) { } #define EXPLICIT_SYMBOL(SYM) \ - if (!strcmp(symbolName, #SYM)) return &SYM; + extern void *SYM; if (!strcmp(symbolName, #SYM)) return &SYM // If this is darwin, it has some funky issues, try to solve them here. Some // important symbols are marked 'private external' which doesn't allow // SearchForAddressOfSymbol to find them. As such, we special case them here, // there is only a small handful of them. + +#ifdef __APPLE__ { -#include "DynamicLibrarySymbolDefs.def" + EXPLICIT_SYMBOL(__ashldi3); + EXPLICIT_SYMBOL(__ashrdi3); + EXPLICIT_SYMBOL(__cmpdi2); + EXPLICIT_SYMBOL(__divdi3); + EXPLICIT_SYMBOL(__eprintf); + EXPLICIT_SYMBOL(__fixdfdi); + EXPLICIT_SYMBOL(__fixsfdi); + EXPLICIT_SYMBOL(__fixunsdfdi); + EXPLICIT_SYMBOL(__fixunssfdi); + EXPLICIT_SYMBOL(__floatdidf); + EXPLICIT_SYMBOL(__floatdisf); + EXPLICIT_SYMBOL(__lshrdi3); + EXPLICIT_SYMBOL(__moddi3); + EXPLICIT_SYMBOL(__udivdi3); + EXPLICIT_SYMBOL(__umoddi3); } +#endif + +#ifdef __CYGWIN__ + { + EXPLICIT_SYMBOL(_alloca); + EXPLICIT_SYMBOL(__main); + } +#endif + +#undef EXPLICIT_SYMBOL // This macro returns the address of a well-known, explicit symbol #define EXPLICIT_SYMBOL(SYM) \ diff --git a/lib/System/DynamicLibrarySymbolDefs.def b/lib/System/DynamicLibrarySymbolDefs.def deleted file mode 100644 index c012916534b..00000000000 --- a/lib/System/DynamicLibrarySymbolDefs.def +++ /dev/null @@ -1,41 +0,0 @@ -//===-- DynamicLibrarySymbolDefs.def - Extra symbol definitions -*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file enumerates the set of extra external symbol definitions needed for -// dynamic libraries. -// -//===----------------------------------------------------------------------===// -#ifndef EXPLICIT_SYMBOL -# error Must define EXPLICIT_SYMBOL to include this definitions file -#endif - -#ifdef __APPLE__ -EXPLICIT_SYMBOL(__ashldi3) -EXPLICIT_SYMBOL(__ashrdi3) -EXPLICIT_SYMBOL(__cmpdi2) -EXPLICIT_SYMBOL(__divdi3) -EXPLICIT_SYMBOL(__eprintf) -EXPLICIT_SYMBOL(__fixdfdi) -EXPLICIT_SYMBOL(__fixsfdi) -EXPLICIT_SYMBOL(__fixunsdfdi) -EXPLICIT_SYMBOL(__fixunssfdi) -EXPLICIT_SYMBOL(__floatdidf) -EXPLICIT_SYMBOL(__floatdisf) -EXPLICIT_SYMBOL(__lshrdi3) -EXPLICIT_SYMBOL(__moddi3) -EXPLICIT_SYMBOL(__udivdi3) -EXPLICIT_SYMBOL(__umoddi3) -#endif - -#ifdef __CYGWIN__ -EXPLICIT_SYMBOL(_alloca) -EXPLICIT_SYMBOL(__main) -#endif - -#undef EXPLICIT_SYMBOL