OSDN Git Service

* config/sparc/t-linux64 (SHLIB_MAPFILES): Set.
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 9 May 2002 21:09:27 +0000 (21:09 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 9 May 2002 21:09:27 +0000 (21:09 +0000)
* 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

gcc/ChangeLog
gcc/config/cris/t-linux
gcc/config/sparc/libgcc-sparc-glibc.ver [new file with mode: 0644]
gcc/config/sparc/t-linux64
gcc/mklibgcc.in

index 128d1a8..2a70177 100644 (file)
@@ -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
index 43c3acd..65c3000 100644 (file)
@@ -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 (file)
index 0000000..e3ba0bb
--- /dev/null
@@ -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
+}
index d8dedc5..c93ff25 100644 (file)
@@ -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
index 06c2ec0..c5db6f0 100644 (file)
@@ -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"