mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2024-12-29 09:08:52 +00:00
1906cf93f8
You might just say: 'Yeah! crosstool-NG's got its own repo!". Unfortunately, that's because the previous repo got damaged beyond repair and I had no backup. That means I'm putting backups in place in the afternoon. That also means we've lost history... :-(
289 lines
6.6 KiB
Diff
289 lines
6.6 KiB
Diff
Received: (qmail 11693 invoked from network); 26 May 2004 03:17:41 -0000
|
|
Received: from unknown (HELO r-rr.iij4u.or.jp) (210.130.0.76)
|
|
by sourceware dot org with SMTP; 26 May 2004 03:17:41 -0000
|
|
Received: from localhost (frgw.3in.ne.jp [210.251.121.226])
|
|
by r-rr dot iij4u dot or dot jp (8 dot 11 dot 6+IIJ/8 dot 11 dot 6) with ESMTP id i4Q3HbJ21421;
|
|
Wed, 26 May 2004 12:17:37 +0900 (JST)
|
|
Date: Wed, 26 May 2004 12:13:58 +0900 (JST)
|
|
Message-Id: <20040526.121358.39460214.kkojima@rr.iij4u.or.jp>
|
|
To: gcc-patches at gcc dot gnu dot org
|
|
Cc: Mark Mitchell <mark at codesourcery dot com>
|
|
Subject: [PATCH] Fix PR target/15647 for sh-linux
|
|
From: Kaz Kojima <kkojima at rr dot iij4u dot or dot jp>
|
|
Mime-Version: 1.0
|
|
Content-Type: Text/Plain; charset=us-ascii
|
|
Content-Transfer-Encoding: 7bit
|
|
|
|
Hi,
|
|
|
|
The appended patch is to fix PR target/15647
|
|
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15647
|
|
for linux.
|
|
__udivsi3 is exported from libgcc_s.so.1 and gcc generates the code
|
|
which assumes r1 will be not clobbered when calling __udivsi3 in SH3
|
|
case. This is bad because r1 is clobbered by PLT.
|
|
The another functions listed in the standard libgcc-std.ver which
|
|
possively have similar problem are __ashlsi3, __ashrsi3 and __lshrsi3,
|
|
though these are used only by SH1/2.
|
|
The patch below simply uses an SH specific libgcc-std.ver which drops
|
|
these functions. SH linux uses a linker script libgcc_s.so having
|
|
libgcc.a as a suppementary library, so these functions given by
|
|
libgcc.a when needed in the link time.
|
|
Although mainline has one failure in bulding zlib which can be avoided
|
|
with -fno-reorder-blocks for sh3-unknown-linux-gnu target, x86 cross
|
|
to sh3-unknown-linux-gnu can be build successfully on mainline with
|
|
this patch except the above failure. 3.4-branch successfully bootstraps
|
|
with it and there are no new failures on the native sh4-unknown-linux-gnu.
|
|
The patch is highly sh-linux specific and seems to be safe. I'll check
|
|
it into mainline.
|
|
The original PR is also for sh3 netbsd. I'd like to leave it for the
|
|
netbsd experts.
|
|
|
|
I think that it's too late for 3.3.4. Mark, is it also late for
|
|
3.4.1?
|
|
|
|
Regards,
|
|
kaz
|
|
--
|
|
2004-05-26 Kaz Kojima <kkojima@gcc.gnu.org>
|
|
|
|
* config/sh/t-linux (SHLIB_MAPFILES): Use sh specific
|
|
libgcc-std.ver.
|
|
* config/sh/libgcc-std.ver: New file.
|
|
|
|
diff -u3prN ORIG-gcc/gcc/config/sh/t-linux LOCAL-gcc/gcc/config/sh/t-linux
|
|
--- ORIG-gcc/gcc/config/sh/t-linux Mon Feb 16 20:13:25 2004
|
|
+++ LOCAL-gcc/gcc/config/sh/t-linux Tue May 25 18:25:48 2004
|
|
@@ -11,8 +11,11 @@ MULTILIB_EXCEPTIONS=
|
|
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/sh/libgcc-glibc.ver
|
|
+# the symbol versions that glibc used. Also use an sh specific
|
|
+# libgcc-std.ver to avoid to export some lib1func routines which
|
|
+# should not be called via PLT.
|
|
+SHLIB_MAPFILES = $(srcdir)/config/sh/libgcc-std.ver \
|
|
+ $(srcdir)/config/sh/libgcc-glibc.ver
|
|
|
|
# Override SHLIB_LINK and SHLIB_INSTALL to use linker script
|
|
# libgcc_s.so.
|
|
diff -u3prN ORIG-gcc/gcc/config/sh/libgcc-std.ver LOCAL-gcc/gcc/config/sh/libgcc-std.ver
|
|
--- ORIG-gcc/gcc/config/sh/libgcc-std.ver Thu Jan 1 09:00:00 1970
|
|
+++ LOCAL-gcc/gcc/config/sh/libgcc-std.ver Tue May 25 18:50:54 2004
|
|
@@ -0,0 +1,213 @@
|
|
+GCC_3.0 {
|
|
+ # libgcc1 integer symbols
|
|
+ __absvsi2
|
|
+ __addvsi3
|
|
+ # __ashlsi3
|
|
+ # __ashrsi3
|
|
+ __divsi3
|
|
+ # __lshrsi3
|
|
+ __modsi3
|
|
+ __mulsi3
|
|
+ __mulvsi3
|
|
+ __negvsi2
|
|
+ __subvsi3
|
|
+ # __udivsi3
|
|
+ __umodsi3
|
|
+
|
|
+ # libgcc1 floating point symbols
|
|
+ __addsf3
|
|
+ __adddf3
|
|
+ __addxf3
|
|
+ __addtf3
|
|
+ __divsf3
|
|
+ __divdf3
|
|
+ __divxf3
|
|
+ __divtf3
|
|
+ __eqsf2
|
|
+ __eqdf2
|
|
+ __eqxf2
|
|
+ __eqtf2
|
|
+ __extenddfxf2
|
|
+ __extenddftf2
|
|
+ __extendsfdf2
|
|
+ __extendsfxf2
|
|
+ __extendsftf2
|
|
+ __fixsfsi
|
|
+ __fixdfsi
|
|
+ __fixxfsi
|
|
+ __fixtfsi
|
|
+ __floatsisf
|
|
+ __floatsidf
|
|
+ __floatsixf
|
|
+ __floatsitf
|
|
+ __gesf2
|
|
+ __gedf2
|
|
+ __gexf2
|
|
+ __getf2
|
|
+ __gtsf2
|
|
+ __gtdf2
|
|
+ __gtxf2
|
|
+ __gttf2
|
|
+ __lesf2
|
|
+ __ledf2
|
|
+ __lexf2
|
|
+ __letf2
|
|
+ __ltsf2
|
|
+ __ltdf2
|
|
+ __ltxf2
|
|
+ __lttf2
|
|
+ __mulsf3
|
|
+ __muldf3
|
|
+ __mulxf3
|
|
+ __multf3
|
|
+ __negsf2
|
|
+ __negdf2
|
|
+ __negxf2
|
|
+ __negtf2
|
|
+ __nesf2
|
|
+ __nedf2
|
|
+ __nexf2
|
|
+ __netf2
|
|
+ __subsf3
|
|
+ __subdf3
|
|
+ __subxf3
|
|
+ __subtf3
|
|
+ __truncdfsf2
|
|
+ __truncxfsf2
|
|
+ __trunctfsf2
|
|
+ __truncxfdf2
|
|
+ __trunctfdf2
|
|
+
|
|
+ # libgcc2 DImode arithmetic (for 32-bit targets).
|
|
+ __absvdi2
|
|
+ __addvdi3
|
|
+ __ashldi3
|
|
+ __ashrdi3
|
|
+ __cmpdi2
|
|
+ __divdi3
|
|
+ __ffsdi2
|
|
+ __fixdfdi
|
|
+ __fixsfdi
|
|
+ __fixtfdi
|
|
+ __fixxfdi
|
|
+ __fixunsdfdi
|
|
+ __fixunsdfsi
|
|
+ __fixunssfsi
|
|
+ __fixunssfdi
|
|
+ __fixunstfdi
|
|
+ __fixunstfsi
|
|
+ __fixunsxfdi
|
|
+ __fixunsxfsi
|
|
+ __floatdidf
|
|
+ __floatdisf
|
|
+ __floatdixf
|
|
+ __floatditf
|
|
+ __lshrdi3
|
|
+ __moddi3
|
|
+ __muldi3
|
|
+ __mulvdi3
|
|
+ __negdi2
|
|
+ __negvdi2
|
|
+ __subvdi3
|
|
+ __ucmpdi2
|
|
+ __udivdi3
|
|
+ __udivmoddi4
|
|
+ __umoddi3
|
|
+
|
|
+ # libgcc2 TImode arithmetic (for 64-bit targets).
|
|
+ __ashlti3
|
|
+ __ashrti3
|
|
+ __cmpti2
|
|
+ __divti3
|
|
+ __ffsti2
|
|
+ __fixdfti
|
|
+ __fixsfti
|
|
+ __fixtfti
|
|
+ __fixxfti
|
|
+ __lshrti3
|
|
+ __modti3
|
|
+ __multi3
|
|
+ __negti2
|
|
+ __ucmpti2
|
|
+ __udivmodti4
|
|
+ __udivti3
|
|
+ __umodti3
|
|
+ __fixunsdfti
|
|
+ __fixunssfti
|
|
+ __fixunstfti
|
|
+ __fixunsxfti
|
|
+ __floattidf
|
|
+ __floattisf
|
|
+ __floattixf
|
|
+ __floattitf
|
|
+
|
|
+ # Used to deal with trampoline initialization on some platforms
|
|
+ __clear_cache
|
|
+
|
|
+ # EH symbols
|
|
+ _Unwind_DeleteException
|
|
+ _Unwind_Find_FDE
|
|
+ _Unwind_ForcedUnwind
|
|
+ _Unwind_GetGR
|
|
+ _Unwind_GetIP
|
|
+ _Unwind_GetLanguageSpecificData
|
|
+ _Unwind_GetRegionStart
|
|
+ _Unwind_GetTextRelBase
|
|
+ _Unwind_GetDataRelBase
|
|
+ _Unwind_RaiseException
|
|
+ _Unwind_Resume
|
|
+ _Unwind_SetGR
|
|
+ _Unwind_SetIP
|
|
+ __deregister_frame
|
|
+ __deregister_frame_info
|
|
+ __deregister_frame_info_bases
|
|
+ __register_frame
|
|
+ __register_frame_info
|
|
+ __register_frame_info_bases
|
|
+ __register_frame_info_table
|
|
+ __register_frame_info_table_bases
|
|
+ __register_frame_table
|
|
+
|
|
+ # SjLj EH symbols
|
|
+ _Unwind_SjLj_Register
|
|
+ _Unwind_SjLj_Unregister
|
|
+ _Unwind_SjLj_RaiseException
|
|
+ _Unwind_SjLj_ForcedUnwind
|
|
+ _Unwind_SjLj_Resume
|
|
+}
|
|
+
|
|
+%inherit GCC_3.3 GCC_3.0
|
|
+GCC_3.3 {
|
|
+ _Unwind_FindEnclosingFunction
|
|
+ _Unwind_GetCFA
|
|
+ _Unwind_Backtrace
|
|
+ _Unwind_Resume_or_Rethrow
|
|
+ _Unwind_SjLj_Resume_or_Rethrow
|
|
+}
|
|
+
|
|
+%inherit GCC_3.3.1 GCC_3.3
|
|
+GCC_3.3.1 {
|
|
+ __gcc_personality_sj0
|
|
+ __gcc_personality_v0
|
|
+}
|
|
+
|
|
+%inherit GCC_3.3.2 GCC_3.3.1
|
|
+GCC_3.3.2 {
|
|
+}
|
|
+
|
|
+%inherit GCC_3.4 GCC_3.3.2
|
|
+GCC_3.4 {
|
|
+ # bit scanning and counting built-ins
|
|
+ __clzsi2
|
|
+ __clzdi2
|
|
+ __clzti2
|
|
+ __ctzsi2
|
|
+ __ctzdi2
|
|
+ __ctzti2
|
|
+ __popcountsi2
|
|
+ __popcountdi2
|
|
+ __popcountti2
|
|
+ __paritysi2
|
|
+ __paritydi2
|
|
+ __parityti2
|
|
+}
|
|
|