This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/20617] shared SH libgcc is exporting too many symbols
- From: "joern dot rennecke at st dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 24 Mar 2005 16:30:56 -0000
- Subject: [Bug target/20617] shared SH libgcc is exporting too many symbols
- References: <20050324112142.20617.amylaar@gcc.gnu.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From joern dot rennecke at st dot com 2005-03-24 16:30 -------
Subject: Re: shared SH libgcc is exporting too many symbols
pinskia at gcc dot gnu dot org wrote:
> What |Removed |Added
>----------------------------------------------------------------------------
> CC| |pinskia at gcc dot gnu dot
> | |org
> Severity|critical |normal
> Target Milestone|4.0.0 |---
Since you are not prepared to take this seriously, I have checked in the attached patch
into the 4.0 branch without testing. A broken 4.0.0 release is a lesser hazard that to
be stuck with some hundred unwanted exported symbols forever.
2005-03-24 J"orn Rennecke <joern.rennecke@st.com>
Band aid for PR target/20617:
* config/sh/lib1funcs.asm (FUNC, ALIAS): Add .hidden directive.
Index: config/sh/lib1funcs.asm
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/sh/lib1funcs.asm,v
retrieving revision 1.40
retrieving revision 1.40.34.1
diff -p -r1.40 -r1.40.34.1
*** config/sh/lib1funcs.asm 29 Jul 2004 22:27:43 -0000 1.40
--- config/sh/lib1funcs.asm 24 Mar 2005 16:24:44 -0000 1.40.34.1
*************** Boston, MA 02111-1307, USA. */
*** 37,45 ****
ELF local label prefixes by J"orn Rennecke
amylaar@cygnus.com */
#ifdef __ELF__
#define LOCAL(X) .L_##X
! #define FUNC(X) .type X,@function
#define ENDFUNC0(X) .Lfe_##X: .size X,.Lfe_##X-X
#define ENDFUNC(X) ENDFUNC0(X)
#else
--- 37,55 ----
ELF local label prefixes by J"orn Rennecke
amylaar@cygnus.com */
+ #define ALIAS(X,Y) .global GLOBAL(X); .set GLOBAL(X),GLOBAL(Y)
+
#ifdef __ELF__
#define LOCAL(X) .L_##X
!
! #if 1 /* ??? The export list mechanism is broken, everything that is not
! hidden is exported. */
! #undef FUNC
! #define FUNC(X) .type X,@function .hidden X
! #undef ALIAS
! #define ALIAS(X,Y) .global GLOBAL(X); .set GLOBAL(X),GLOBAL(Y); .hidden GLOBAL(X)
! #endif
!
#define ENDFUNC0(X) .Lfe_##X: .size X,.Lfe_##X-X
#define ENDFUNC(X) ENDFUNC0(X)
#else
*************** Boston, MA 02111-1307, USA. */
*** 52,58 ****
#define GLOBAL0(U,X) CONCAT(U,__##X)
#define GLOBAL(X) GLOBAL0(__USER_LABEL_PREFIX__,X)
- #define ALIAS(X,Y) .global GLOBAL(X); .set GLOBAL(X),GLOBAL(Y)
#if defined __SH5__ && ! defined __SH4_NOFPU__ && ! defined (__LITTLE_ENDIAN__)
#define FMOVD_WORKS
--- 62,67 ----
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20617