From: David Edelsohn Date: Fri, 16 Aug 2002 18:03:09 +0000 (+0000) Subject: collect2.c (is_ctor_dtor): Add other possible JOINER values. X-Git-Tag: releases/gcc-3.2.1~378 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8514901bf758af1b7584fc8f058f9de20547fe48;p=thirdparty%2Fgcc.git collect2.c (is_ctor_dtor): Add other possible JOINER values. * collect2.c (is_ctor_dtor): Add other possible JOINER values. * config/rs6000/rs6000.c (output_mi_thunk): Return to function section on TARGET_ELF. * doc/install.texi (*-ibm-aix*): Explain AIX shared object versioning. (Binaries): Update Bull Freeware URL. From-SVN: r56381 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d1b684c64399..0b43dbdc322b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2002-08-16 David Edelsohn + + * collect2.c (is_ctor_dtor): Add other possible JOINER values. + + * config/rs6000/rs6000.c (output_mi_thunk): Return to function + section on TARGET_ELF. + + * doc/install.texi (*-ibm-aix*): Explain AIX shared object versioning. + (Binaries): Update Bull Freeware URL. + 2002-08-15 Neil Booth PR preprocessor/7358 diff --git a/gcc/collect2.c b/gcc/collect2.c index 6fb2efd76b10..933a2777f7f4 100644 --- a/gcc/collect2.c +++ b/gcc/collect2.c @@ -577,6 +577,15 @@ is_ctor_dtor (s) const char *orig_s = s; static const struct names special[] = { +#ifndef NO_DOLLAR_IN_LABEL + { "GLOBAL__I$", sizeof ("GLOBAL__I$")-1, 1, 0 }, + { "GLOBAL__D$", sizeof ("GLOBAL__D$")-1, 2, 0 }, +#else +#ifndef NO_DOT_IN_LABEL + { "GLOBAL__I.", sizeof ("GLOBAL__I.")-1, 1, 0 }, + { "GLOBAL__D.", sizeof ("GLOBAL__D.")-1, 2, 0 }, +#endif /* NO_DOT_IN_LABEL */ +#endif /* NO_DOLLAR_IN_LABEL */ { "GLOBAL__I_", sizeof ("GLOBAL__I_")-1, 1, 0 }, { "GLOBAL__D_", sizeof ("GLOBAL__D_")-1, 2, 0 }, { "GLOBAL__F_", sizeof ("GLOBAL__F_")-1, 5, 0 }, diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 7940315fc4bb..2582c118c5bd 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -9821,7 +9821,10 @@ output_mi_thunk (file, thunk_fndecl, delta, function) } assemble_name (file, fname); putc ('\n', file); - text_section (); + if (TARGET_ELF) + function_section (current_function_decl); + else + text_section (); if (TARGET_MINIMAL_TOC) asm_fprintf (file, (TARGET_32BIT) ? "\t{l|lwz} %s,%s(%s)\n" : "\tld %s,%s(%s)\n", r12, diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index ee1af2715816..83f161c6887b 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -1382,7 +1382,7 @@ contact their makers. AIX: @itemize @item -@uref{http://freeware.bull.net,,Bull's Freeware and Shareware Archive for AIX}; +@uref{http://www.bullfreeware.com,,Bull's Freeware and Shareware Archive for AIX}; @item @uref{http://aixpdslib.seas.ucla.edu,,UCLA Software Library for AIX}. @@ -2554,6 +2554,35 @@ interoperate with GCC@. Building @file{libstdc++.a} requires a fix for a AIX Assembler bug APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1). +@samp{libstdc++} in GCC 3.2 increments the major version number of the +shared object and GCC installation places the @file{libstdc++.a} +shared library in a common location which will overwrite the GCC 3.1 +version of the shared library. Applications either need to be +re-linked against the new shared library or the GCC 3.1 version of the +@samp{libstdc++} shared object needs to be available to the AIX +runtime loader. The GCC 3.1 @samp{libstdc++.so.4} shared object can +be installed for runtime dynamic loading using the following steps to +set the @samp{F_LOADONLY} flag in the shared object for @emph{each} +multilib @file{libstdc++.a} installed: + +Extract the shared object from each the GCC 3.1 @file{libstdc++.a} +archive: +@example + % ar -x libstdc++.so.4 libstdc++.a +@end example + +Enable the @samp{F_LOADONLY} flag so that the shared object will be +available for runtime dynamic loading, but not linking: +@example + % strip -e libstdc++.so.4 +@end example + +Archive the runtime-only shared object in the GCC 3.2 +@file{libstdc++.a} archive: +@example + % ar -q libstdc++.so.4 libstdc++.a +@end example + Linking executables and shared libraries may produce warnings of duplicate symbols. The assembly files generated by GCC for AIX always have included multiple symbol definitions for certain global variable