Driver/Darwin: Add a runtime library just for ___eprintf -- when targeting i386

some projects still depend on ___eprintf being available.

llvm-svn: 114509
This commit is contained in:
Daniel Dunbar
2010-09-22 00:03:52 +00:00
parent e479e9643b
commit da4f6b5151
2 changed files with 14 additions and 5 deletions

View File

@@ -501,11 +501,20 @@ void DarwinClang::AddLinkRuntimeLibArgs(const ArgList &Args,
else if (isMacosxVersionLT(10, 6))
CmdArgs.push_back("-lgcc_s.10.5");
// For OS X, we only need a static runtime library when targetting 10.4, to
// provide versions of the static functions which were omitted from
// 10.4.dylib.
if (isMacosxVersionLT(10, 5))
// For OS X, we thought we would only need a static runtime library when
// targetting 10.4, to provide versions of the static functions which were
// omitted from 10.4.dylib.
//
// Unfortunately, that turned out to not be true, because Darwin system
// headers can still use eprintf on i386, and it is not exported from
// libSystem. Therefore, we still must provide a runtime library just for
// the tiny tiny handful of projects that *might* use that symbol.
if (isMacosxVersionLT(10, 5)) {
DarwinStaticLib = "libclang_rt.10.4.a";
} else {
if (getTriple().getArch() == llvm::Triple::x86)
DarwinStaticLib = "libclang_rt.eprintf.a";
}
}
/// Add the target specific static library, if needed.

View File

@@ -39,7 +39,7 @@ ifeq ($(shell test -d $(COMPILERRT_SRC_ROOT) && echo OK),OK)
RuntimeDirs :=
ifeq ($(OS),Darwin)
RuntimeDirs += darwin
RuntimeLibrary.darwin.Configs = 10.4 armv6 cc_kext
RuntimeLibrary.darwin.Configs = eprintf 10.4 armv6 cc_kext
endif
# Rule to build the compiler-rt libraries we need.