aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>2003-05-24 19:38:18 +0000
committerPeter Wemm <peter@FreeBSD.org>2003-05-24 19:38:18 +0000
commited8c5dcdc0253fa6bf1e81ae195fe56b3df7993c (patch)
tree50704c711ace45ec6db591b2ea77b5c286ddaf88
parent14682d7e53089e1e66c0e88c131a3bee2ca48bff (diff)
downloadsrc-ed8c5dcdc0253fa6bf1e81ae195fe56b3df7993c.tar.gz
src-ed8c5dcdc0253fa6bf1e81ae195fe56b3df7993c.zip
libstdc++.so breaks on amd64 due to bogons in our build, so prevent the
shared library being built for amd64. The problem is that libstdc++.so is produced with 'cc -shared'. This has an internal -lgcc, which is not PIC. libstdc++.so uses exceptions and the dwarf2 unwinder, which are in libgcc.a. As a result, non-PIC code gets pulled into libstdc++.so. This is fatal on amd64 when certain relocation types cannot be used in PIC mode. The official FSF solution to this is to have libgcc.so with internal ELF symbol versioning to solve the ABI problem, but I dont want to fight that battle yet. I tried making libgcc_pic.a (which worked fine), but thats not something for the 11th hour before a release. Approved by: re (amd64 "safe" stuff)
Notes
Notes: svn path=/head/; revision=115287
-rw-r--r--gnu/lib/libstdc++/Makefile5
1 files changed, 5 insertions, 0 deletions
diff --git a/gnu/lib/libstdc++/Makefile b/gnu/lib/libstdc++/Makefile
index e8853641657c..057339c6fedf 100644
--- a/gnu/lib/libstdc++/Makefile
+++ b/gnu/lib/libstdc++/Makefile
@@ -8,6 +8,11 @@ SUPDIR= ${SRCDIR}/libsupc++
${SRCDIR}/config/locale/generic ${SRCDIR} ${SRCDIR}/std \
${SUPDIR} ${GCCDIR}
+.if ${MACHINE_ARCH} == "amd64"
+NOPIC= broken # need libgcc.so or libgcc_pic.a
+NOSHARED= broken
+.endif
+
#SUBDIR= doc
LIB= stdc++