diff --git a/include/llvm/Analysis/TargetLibraryInfo.def b/include/llvm/Analysis/TargetLibraryInfo.def index 7798e3c..ade2b96 100644 --- a/include/llvm/Analysis/TargetLibraryInfo.def +++ b/include/llvm/Analysis/TargetLibraryInfo.def @@ -27,6 +27,15 @@ #define TLI_DEFINE_STRING_INTERNAL(string_repr) string_repr, #endif +// avoid name conflicts with musl-libc +#undef fopen64 +#undef fseeko64 +#undef ftello64 +#undef fstat64 +#undef lstat64 +#undef stat64 +#undef tmpfile64 + /// void *new(unsigned int); TLI_DEFINE_ENUM_INTERNAL(msvc_new_int) TLI_DEFINE_STRING_INTERNAL("??2@YAPAXI@Z") diff --git a/lib/Support/DynamicLibrary.cpp b/lib/Support/DynamicLibrary.cpp index 9a7aeb5..e98ad80 100644 --- a/lib/Support/DynamicLibrary.cpp +++ b/lib/Support/DynamicLibrary.cpp @@ -143,7 +143,7 @@ void* DynamicLibrary::SearchForAddressOfSymbol(const char *symbolName) { // On linux we have a weird situation. The stderr/out/in symbols are both // macros and global variables because of standards requirements. So, we // boldly use the EXPLICIT_SYMBOL macro without checking for a #define first. -#if defined(__linux__) and !defined(__ANDROID__) +#if defined(__linux__) && defined(__GLIBC__) { EXPLICIT_SYMBOL(stderr); EXPLICIT_SYMBOL(stdout);