svn commit: r214186 - in user/ed/compiler-rt:
contrib/llvm/tools/clang/lib/Driver gnu/lib/libgcc
gnu/usr.bin/cc/cc_tools lib/libcompiler_rt
Ed Schouten
ed at FreeBSD.org
Thu Oct 21 22:18:13 UTC 2010
Author: ed
Date: Thu Oct 21 22:18:12 2010
New Revision: 214186
URL: http://svn.freebsd.org/changeset/base/214186
Log:
Just remove libgcc.a and symlink libcompiler_rt.a.
I've noticed GCC tries to be smart when libgcc isn't called libgcc. It
never tries to link in libgcc_s in that case, causing the unwinder to be
omitted.
- Revert the changes to Clang and GCC to user -lcompiler_rt.
- Change libgcc's Makefile to not install libgcc.a and libgcc_p.a.
- Let libcompiler_rt's Makefile symlink the library.
Modified:
user/ed/compiler-rt/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
user/ed/compiler-rt/gnu/lib/libgcc/Makefile
user/ed/compiler-rt/gnu/usr.bin/cc/cc_tools/freebsd-native.h
user/ed/compiler-rt/lib/libcompiler_rt/Makefile
Modified: user/ed/compiler-rt/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
==============================================================================
--- user/ed/compiler-rt/contrib/llvm/tools/clang/lib/Driver/Tools.cpp Thu Oct 21 21:08:12 2010 (r214185)
+++ user/ed/compiler-rt/contrib/llvm/tools/clang/lib/Driver/Tools.cpp Thu Oct 21 22:18:12 2010 (r214186)
@@ -2928,7 +2928,7 @@ void freebsd::Link::ConstructJob(Compila
}
// FIXME: For some reason GCC passes -lgcc and -lgcc_s before adding
// the default system libraries. Just mimic this for now.
- CmdArgs.push_back("-lcompiler_rt");
+ CmdArgs.push_back("-lgcc");
if (Args.hasArg(options::OPT_static)) {
CmdArgs.push_back("-lgcc_eh");
} else {
@@ -2941,7 +2941,7 @@ void freebsd::Link::ConstructJob(Compila
CmdArgs.push_back("-lpthread");
CmdArgs.push_back("-lc");
- CmdArgs.push_back("-lcompiler_rt");
+ CmdArgs.push_back("-lgcc");
if (Args.hasArg(options::OPT_static)) {
CmdArgs.push_back("-lgcc_eh");
} else {
Modified: user/ed/compiler-rt/gnu/lib/libgcc/Makefile
==============================================================================
--- user/ed/compiler-rt/gnu/lib/libgcc/Makefile Thu Oct 21 21:08:12 2010 (r214185)
+++ user/ed/compiler-rt/gnu/lib/libgcc/Makefile Thu Oct 21 22:18:12 2010 (r214186)
@@ -3,7 +3,6 @@
GCCDIR= ${.CURDIR}/../../../contrib/gcc
GCCLIB= ${.CURDIR}/../../../contrib/gcclibs
-LIB= gcc
SHLIB_NAME= libgcc_s.so.1
SHLIBDIR?= /lib
@@ -334,21 +333,21 @@ CLEANFILES += libgcc.map
#
# Build additional static libgcc_eh[_p].a libraries.
#
-lib${LIB}_eh.a: ${EH_OBJS_T}
- @${ECHO} building static ${LIB}_eh library
+libgcc_eh.a: ${EH_OBJS_T}
+ @${ECHO} building static gcc_eh library
@rm -f ${.TARGET}
@${AR} cq ${.TARGET} `lorder ${EH_OBJS_T} | tsort -q`
${RANLIB} ${.TARGET}
-all: lib${LIB}_eh.a
+all: libgcc_eh.a
.if ${MK_PROFILE} != "no"
-lib${LIB}_eh_p.a: ${EH_OBJS_P}
- @${ECHO} building profiled ${LIB}_eh library
+libgcc_eh_p.a: ${EH_OBJS_P}
+ @${ECHO} building profiled gcc_eh library
@rm -f ${.TARGET}
@${AR} cq ${.TARGET} `lorder ${EH_OBJS_P} | tsort -q`
${RANLIB} ${.TARGET}
-all: lib${LIB}_eh_p.a
+all: libgcc_eh_p.a
.endif
_libinstall: _lib-eh-install
@@ -356,14 +355,14 @@ _libinstall: _lib-eh-install
_lib-eh-install:
.if ${MK_INSTALLLIB} != "no"
${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
- ${_INSTALLFLAGS} lib${LIB}_eh.a ${DESTDIR}${LIBDIR}
+ ${_INSTALLFLAGS} libgcc_eh.a ${DESTDIR}${LIBDIR}
.endif
.if ${MK_PROFILE} != "no"
${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
- ${_INSTALLFLAGS} lib${LIB}_eh_p.a ${DESTDIR}${LIBDIR}
+ ${_INSTALLFLAGS} libgcc_eh_p.a ${DESTDIR}${LIBDIR}
.endif
-CLEANFILES+= lib${LIB}_eh.a lib${LIB}_eh_p.a ${EH_OBJS_T} ${EH_OBJS_P}
+CLEANFILES+= libgcc_eh.a libgcc_eh_p.a ${EH_OBJS_T} ${EH_OBJS_P}
.include <bsd.lib.mk>
Modified: user/ed/compiler-rt/gnu/usr.bin/cc/cc_tools/freebsd-native.h
==============================================================================
--- user/ed/compiler-rt/gnu/usr.bin/cc/cc_tools/freebsd-native.h Thu Oct 21 21:08:12 2010 (r214185)
+++ user/ed/compiler-rt/gnu/usr.bin/cc/cc_tools/freebsd-native.h Thu Oct 21 22:18:12 2010 (r214186)
@@ -48,16 +48,16 @@
#if 0
#define LIBGCC_SPEC "%{shared: -lgcc_pic} \
- %{!shared: %{!pg: -lcompiler_rt} %{pg: -lgcc_p}}"
+ %{!shared: %{!pg: -lgcc} %{pg: -lgcc_p}}"
#endif
#define LIBSTDCXX_PROFILE "-lstdc++_p"
#define MATH_LIBRARY_PROFILE "-lm_p"
#define FORTRAN_LIBRARY_PROFILE "-lg2c_p"
-#define LIBGCC_SPEC "-lcompiler_rt"
+#define LIBGCC_SPEC "-lgcc"
/* For the native system compiler, we actually build libgcc in a profiled
version. So we should use it with -pg. */
-#define LIBGCC_STATIC_LIB_SPEC "%{pg: -lgcc_p;:-lcompiler_rt}"
+#define LIBGCC_STATIC_LIB_SPEC "%{pg: -lgcc_p;:-lgcc}"
#define LIBGCC_EH_STATIC_LIB_SPEC "%{pg: -lgcc_eh_p;:-lgcc_eh}"
/* FreeBSD is 4.4BSD derived */
Modified: user/ed/compiler-rt/lib/libcompiler_rt/Makefile
==============================================================================
--- user/ed/compiler-rt/lib/libcompiler_rt/Makefile Thu Oct 21 21:08:12 2010 (r214185)
+++ user/ed/compiler-rt/lib/libcompiler_rt/Makefile Thu Oct 21 22:18:12 2010 (r214186)
@@ -1,5 +1,7 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
LIB= compiler_rt
NO_PIC=
WARNS?= 2
@@ -30,4 +32,11 @@ SRCS+= absvdi2.c absvsi2.c absvti2.c add
udivdi3.c udivmoddi4.c udivmodti4.c udivsi3.c udivti3.c \
umoddi3.c umodsi3.c umodti3.c
+.if ${MK_INSTALLLIB} != "no"
+SYMLINKS+=libcompiler_rt.a ${LIBDIR}/libgcc.a
+.endif
+.if ${MK_PROFILE} != "no"
+SYMLINKS+=libcompiler_rt_p.a ${LIBDIR}/libgcc_p.a
+.endif
+
.include <bsd.lib.mk>
More information about the svn-src-user
mailing list