This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [libstdc++] Port-specific symbol exports, porting notes
- From: Andreas Jaeger <aj at suse dot de>
- To: Phil Edwards <phil at jaj dot com>
- Cc: libstdc++ at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- Date: Sun, 06 Jul 2003 14:33:31 +0200
- Subject: Re: [libstdc++] Port-specific symbol exports, porting notes
- References: <20030706040709.GA32051@disaster.jaj.com>
With your patch in bootstrap fails on i686-linux-gnu with:
/usr/bin/ld:libstdc++-symbol.ver:59: parse error in VERSION script
collect2: ld returned 1 exit status
make[4]: *** [libstdc++.la] Error 1
Phil Edwards <phil@jaj.com> writes:
> Some time ago, some symbols had to be added to the export list for the
> sake of (at the time) a single platform. I worked up a patch to allow
> ports to individually list symbols that would be additionally exported,
> but it also involved fixing more of GNU ld's linker versioning parser.
> Now that a version of binutils has been officially released (2.14) which
> contains the fix, we can start using the functionality on the trunk.
>
> This also brings the "porting to a new platform" docs up to date.
>
> (My editor keeps wanting to trim trailing whitespace in the makfiles,
> so finally I just let it have its way for this patch.)
>
> Tested on x86/linux for a long time. Post-specific functionality tested
> by just adding fake stuff to a random port and checking the output.
>
>
> 2003-07-05 Phil Edwards <pme@gcc.gnu.org>
>
> * acinclude.m4 (GLIBCXX_ENABLE_SYMVERS): Bump minimal version
> requirement. Add port_specific_symbol_file variable.
> * configure.host: Add docs for port_specific_symbol_file.
> Clean up try_cpu block for x86.
> * config/linker-map.gnu: No more "last symbol can't have a
> semicolon" kaka. Add hook for port-specific symbols.
Why? This is broken!
> Index: config/linker-map.gnu
> ===================================================================
> RCS file: /cvs/gcc/gcc/libstdc++-v3/config/linker-map.gnu,v
> retrieving revision 1.41
> diff -u -3 -p -r1.41 linker-map.gnu
> --- config/linker-map.gnu 5 Jul 2003 04:05:26 -0000 1.41
> +++ config/linker-map.gnu 6 Jul 2003 03:56:58 -0000
> @@ -1,4 +1,4 @@
> -## Linker script for GNU ld 2.11.94+ only.
> +## Linker script for GNU ld 2.13.91+ only.
> ##
> ## Copyright (C) 2002, 2003 Free Software Foundation, Inc.
> ##
> @@ -25,7 +25,6 @@ GLIBCXX_3.4 {
> global:
>
> # Names inside the 'extern' block are demangled names.
> - # All but the last are terminated with a semicolon.
> extern "C++"
> {
> std::[A-Za-k]*;
> @@ -56,7 +55,7 @@ GLIBCXX_3.4 {
> std::__num_base::_S_format_int*;
> std::__num_base::_S_atoms_in;
> std::__num_base::_S_atoms_out;
> - std::__numpunct_cache*
> + std::__numpunct_cache*;
> };
>
> # Names not in an 'extern' block are mangled names.
> @@ -168,6 +167,8 @@ GLIBCXX_3.4 {
> _ZN9__gnu_cxx17_Atomic_add_mutexE;
> _ZN9__gnu_cxx22_Atomic_add_mutex_onceE;
> _ZN9__gnu_cxx31__gthread_atomic_add_mutex_onceEv;
> +
> + # DO NOT DELETE THIS LINE. Port-specific symbols, if any, will be here.
>
> local:
> *;
PLease revert this part of the patch to support binutils 2.13.x (I'm
using 2.13.90.0.18).
Andreas
--
Andreas Jaeger, aj@suse.de, http://www.suse.de/~aj
SuSE Linux AG, Deutschherrnstr. 15-19, 90429 Nürnberg, Germany
GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126