aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2002-11-21 12:03:49 +0000
committerUlrich Weigand <uweigand@gcc.gnu.org>2002-11-21 12:03:49 +0000
commitb5798b2a8b6fa2bd687499d420b9f0a1cd7c8b70 (patch)
tree4a568e37f8b1ce85b951ac42bdef41d935ef7f10
parent6315b6cbff7ca22e8d8d6f69b4fa0c87d41c2330 (diff)
downloadgcc-b5798b2a8b6fa2bd687499d420b9f0a1cd7c8b70.zip
gcc-b5798b2a8b6fa2bd687499d420b9f0a1cd7c8b70.tar.gz
gcc-b5798b2a8b6fa2bd687499d420b9f0a1cd7c8b70.tar.bz2
libgcc-libc.ver: Add multilib support.
* config/s390/libgcc-libc.ver: Add multilib support. * config/s390/linux.h (MULTILIB_DEFAULT): Define. * config/s390/t-linux64 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_OSDIRNAMES, LIBGCC, INSTALL_LIBGCC, EXTRA_MULTILIB_PARTS): Define. From-SVN: r59342
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/s390/libgcc-glibc.ver20
-rw-r--r--gcc/config/s390/linux.h6
-rw-r--r--gcc/config/s390/t-linux649
4 files changed, 43 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index df99433..94e8dde 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2002-11-21 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * config/s390/libgcc-libc.ver: Add multilib support.
+ * config/s390/linux.h (MULTILIB_DEFAULT): Define.
+ * config/s390/t-linux64 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
+ MULTILIB_OSDIRNAMES, LIBGCC, INSTALL_LIBGCC,
+ EXTRA_MULTILIB_PARTS): Define.
+
2002-11-21 Richard Earnshaw <rearnsha@arm.com>
* arm.c (arm_get_frame_size): A leaf function does not need its
diff --git a/gcc/config/s390/libgcc-glibc.ver b/gcc/config/s390/libgcc-glibc.ver
index 9a42151..1d9e229 100644
--- a/gcc/config/s390/libgcc-glibc.ver
+++ b/gcc/config/s390/libgcc-glibc.ver
@@ -8,6 +8,25 @@
# because GLIBC_2.0 does not exist on this architecture, as the first
# ever glibc release on the platform was GLIBC_2.2.
+%ifndef __s390x__
+%inherit GCC_3.0 GLIBC_2.0
+GLIBC_2.0 {
+ __divdi3
+ __moddi3
+ __udivdi3
+ __umoddi3
+
+ __register_frame
+ __register_frame_table
+ __deregister_frame
+ __register_frame_info
+ __deregister_frame_info
+ __frame_state_for
+ __register_frame_info_table
+}
+%endif
+
+%ifdef __s390x__
%inherit GCC_3.0 GLIBC_2.2
GLIBC_2.2 {
__register_frame
@@ -18,4 +37,5 @@ GLIBC_2.2 {
__frame_state_for
__register_frame_info_table
}
+%endif
diff --git a/gcc/config/s390/linux.h b/gcc/config/s390/linux.h
index d3e8807..cbb7710 100644
--- a/gcc/config/s390/linux.h
+++ b/gcc/config/s390/linux.h
@@ -81,6 +81,12 @@ Boston, MA 02111-1307, USA. */
/* Target specific linker settings. */
+#ifdef DEFAULT_TARGET_64BIT
+#define MULTILIB_DEFAULTS { "m64" }
+#else
+#define MULTILIB_DEFAULTS { "m31" }
+#endif
+
#define LINK_ARCH31_SPEC \
"-m elf_s390 \
%{shared:-shared} \
diff --git a/gcc/config/s390/t-linux64 b/gcc/config/s390/t-linux64
index d5a9278..db839c6 100644
--- a/gcc/config/s390/t-linux64
+++ b/gcc/config/s390/t-linux64
@@ -1,3 +1,12 @@
+MULTILIB_OPTIONS = m64/m31
+MULTILIB_DIRNAMES = 64 32
+MULTILIB_OSDIRNAMES = ../lib64 ../lib
+
+LIBGCC = stmp-multilib
+INSTALL_LIBGCC = install-multilib
+
+EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
+
# Override t-slibgcc-elf-ver to export some libgcc symbols with
# the symbol versions that glibc used.
SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver $(srcdir)/config/s390/libgcc-glibc.ver