summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config.gcc8
-rw-r--r--gcc/config/t-slibgcc-elf-ver3
-rw-r--r--gcc/config/t-slibgcc-nolc-override1
-rw-r--r--gcc/doc/install.texi2
5 files changed, 20 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1b85c02f6c8..b5309a2c274 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2002-03-29 Loren J. Rittle <ljrittle@acm.org>
+
+ * config.gcc (*-*-freebsd*): Enable creation of libgcc_s.so.
+ * config/t-slibgcc-elf-ver (SHLIB_LC): Add macro and use it.
+ No functional change except ...
+ * config/t-slibgcc-nolc-override (SHLIB_LC): Override it. New file.
+ * doc/install.texi (*-*-freebsd*): Document port configuration.
+
2002-03-29 Neil Booth <neil@daikokuya.demon.co.uk>
* Makefile.in (convert.o, calls.o, expmed.o): Update.
diff --git a/gcc/config.gcc b/gcc/config.gcc
index edef1ff391e..80aed452d93 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -363,7 +363,7 @@ case $machine in
*-*-freebsd6 | *-*-freebsd[6].*) fbsd_tm_file="freebsd6.h";;
*) echo 'Please update *-*-freebsd* in gcc/config.gcc'; exit 1;;
esac
- tmake_file=t-freebsd
+ tmake_file="t-slibgcc-elf-ver t-freebsd"
xmake_file=none
xm_defines=POSIX
case x${enable_threads} in
@@ -371,6 +371,12 @@ case $machine in
x | xyes | xpthreads | xposix)
thread_file='posix'
tmake_file="${tmake_file} t-freebsd-thread"
+ # Before 5.0, FreeBSD can't bind shared libraries to -lc
+ # when "optionally" threaded via weak pthread_* checks.
+ case $machine in
+ *-*-freebsd[34] | *-*-freebsd[34].*)
+ tmake_file="${tmake_file} t-slibgcc-nolc-override";;
+ esac
;;
*) echo 'Unknown thread configuration for FreeBSD'; exit 1;;
esac
diff --git a/gcc/config/t-slibgcc-elf-ver b/gcc/config/t-slibgcc-elf-ver
index 2912e0aa50e..d6c89ff8acb 100644
--- a/gcc/config/t-slibgcc-elf-ver
+++ b/gcc/config/t-slibgcc-elf-ver
@@ -6,11 +6,12 @@ SHLIB_NAME = @shlib_base_name@.so
SHLIB_SONAME = @shlib_base_name@.so.1
SHLIB_MAP = @shlib_map_file@
SHLIB_OBJS = @shlib_objs@
+SHLIB_LC = -lc
SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-Wl,--soname=$(SHLIB_SONAME) \
-Wl,--version-script=$(SHLIB_MAP) \
- -o $(SHLIB_NAME) @multilib_flags@ $(SHLIB_OBJS) -lc && \
+ -o $(SHLIB_NAME) @multilib_flags@ $(SHLIB_OBJS) $(SHLIB_LC) && \
rm -f $(SHLIB_SONAME) && \
$(LN_S) $(SHLIB_NAME) $(SHLIB_SONAME)
# $(slibdir) double quoted to protect it from expansion while building
diff --git a/gcc/config/t-slibgcc-nolc-override b/gcc/config/t-slibgcc-nolc-override
new file mode 100644
index 00000000000..959d2cc2a1f
--- /dev/null
+++ b/gcc/config/t-slibgcc-nolc-override
@@ -0,0 +1 @@
+SHLIB_LC =
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index c0901a4ae93..3e3e258bff7 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -2079,6 +2079,8 @@ should properly complete the bootstrap). Other CPU architectures
supported by FreeBSD will require additional configuration tuning in, at
the very least, both boehm-gc and libffi.
+Shared @file{libgcc_s.so} is now built and installed by default.
+
@html
</p>
<hr>