summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2002-05-09 21:09:27 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2002-05-09 21:09:27 +0000
commit3c35edaa518dff0140b41a92386bdef5450b8840 (patch)
tree697aac5e7289f42bfa186df52d028e0c328708e0 /gcc
parent6af61abe034ab1a1025075ea23b7cff888cefbe4 (diff)
downloadgcc-3c35edaa518dff0140b41a92386bdef5450b8840.tar.gz
* config/sparc/t-linux64 (SHLIB_MAPFILES): Set.
* config/sparc/libgcc-sparc-glibc.ver: New file. * config/cris/t-linux (SHLIB_MAPFILES): Remove. * mklibgcc.in: Preprocess SHLIB_MAPFILES with ml flags. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@53346 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/cris/t-linux4
-rw-r--r--gcc/config/sparc/libgcc-sparc-glibc.ver28
-rw-r--r--gcc/config/sparc/t-linux646
-rw-r--r--gcc/mklibgcc.in5
5 files changed, 45 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 128d1a87f38..2a70177693e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
2002-05-09 Jakub Jelinek <jakub@redhat.com>
+ * config/sparc/t-linux64 (SHLIB_MAPFILES): Set.
+ * config/sparc/libgcc-sparc-glibc.ver: New file.
+ * config/cris/t-linux (SHLIB_MAPFILES): Remove.
+ * mklibgcc.in: Preprocess SHLIB_MAPFILES with ml flags.
+
+2002-05-09 Jakub Jelinek <jakub@redhat.com>
+
PR target/6429
* Makefile.in (libgcc.mk): Pass SHLIB_SLIBDIR_SUFFIXES to mklibgcc.
* mklibgcc.in: If SHLIB_SLIBDIR_SUFFIXES is defined, put libgcc_s
diff --git a/gcc/config/cris/t-linux b/gcc/config/cris/t-linux
index 43c3acd2ebb..65c3000ef00 100644
--- a/gcc/config/cris/t-linux
+++ b/gcc/config/cris/t-linux
@@ -1,6 +1,2 @@
TARGET_LIBGCC2_CFLAGS += -fPIC
CRTSTUFF_T_CFLAGS_S = $(TARGET_LIBGCC2_CFLAGS)
-
-# Override t-slibgcc-elf-ver to export some libgcc symbols with
-# the symbol versions that glibc used.
-SHLIB_MAPFILES += $(srcdir)/config/libgcc-glibc.ver
diff --git a/gcc/config/sparc/libgcc-sparc-glibc.ver b/gcc/config/sparc/libgcc-sparc-glibc.ver
new file mode 100644
index 00000000000..e3ba0bbdb65
--- /dev/null
+++ b/gcc/config/sparc/libgcc-sparc-glibc.ver
@@ -0,0 +1,28 @@
+# In order to work around the very problems that force us to now generally
+# create a libgcc.so, glibc reexported a number of routines from libgcc.a.
+# By now choosing the same version tags for these specific routines, we
+# maintain enough binary compatibility to allow future versions of glibc
+# to defer implementation of these routines to libgcc.so via DT_AUXILIARY.
+
+%ifdef __arch64__
+%define GLIBC_VER GLIBC_2.2
+%else
+%define GLIBC_VER GLIBC_2.0
+%endif
+%inherit GCC_3.0 GLIBC_VER
+GLIBC_VER {
+ # Sampling of DImode arithmetic used by (at least) i386 and m68k.
+ __divdi3
+ __moddi3
+ __udivdi3
+ __umoddi3
+
+ # Exception handling support functions used by most everyone.
+ __register_frame
+ __register_frame_table
+ __deregister_frame
+ __register_frame_info
+ __deregister_frame_info
+ __frame_state_for
+ __register_frame_info_table
+}
diff --git a/gcc/config/sparc/t-linux64 b/gcc/config/sparc/t-linux64
index d8dedc542bd..c93ff25a3ff 100644
--- a/gcc/config/sparc/t-linux64
+++ b/gcc/config/sparc/t-linux64
@@ -10,3 +10,9 @@ INSTALL_LIBGCC = install-multilib
EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
SHLIB_SLIBDIR_SUFFIXES = 64:64 32:
+
+# Override t-slibgcc-elf-ver to export some libgcc symbols with
+# the symbol versions that glibc used.
+# Avoid the t-linux version file.
+SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \
+ $(srcdir)/config/sparc/libgcc-sparc-glibc.ver
diff --git a/gcc/mklibgcc.in b/gcc/mklibgcc.in
index 06c2ec0134e..c5db6f0a039 100644
--- a/gcc/mklibgcc.in
+++ b/gcc/mklibgcc.in
@@ -263,7 +263,10 @@ for ml in $MULTILIBS; do
tmpmapfile="libgcc/${dir}/tmp-libgcc.map"
echo ""
echo "${mapfile}: $SHLIB_MKMAP $SHLIB_MAPFILES $libgcc_sh_objs"
- echo ' { $(NM_FOR_TARGET)'" $SHLIB_NM_FLAGS $libgcc_sh_objs; echo %%; cat $SHLIB_MAPFILES; } | "'$(AWK)'" -f $SHLIB_MKMAP $SHLIB_MKMAP_OPTS > ${tmpmapfile}"
+ echo ' { $(NM_FOR_TARGET)'" $SHLIB_NM_FLAGS $libgcc_sh_objs; echo %%; \\"
+ echo " cat $SHLIB_MAPFILES | sed -e "'"/^[ ]*#/d" -e '\''s/^%\(if\|else\|elif\|endif\|define\)/#\1/'\'" \\"
+ echo " | $gcc_compile $flags -E -xassembler-with-cpp -; \\"
+ echo ' } | $(AWK)'" -f $SHLIB_MKMAP $SHLIB_MKMAP_OPTS > ${tmpmapfile}"
echo ' mv '"$tmpmapfile"' $@'
fi
shlib_deps="$shlib_deps $mapfile"