4417887978
libgcc: PR target/33704 * config/rs6000/aixinitfini.c: New file. * config/rs6000/t-aix-cxa (LIB2ADD_ST): Add aixinitfini.c. * config/rs6000/libgcc-aix-cxa.ver (GCC_4.9): Add libgcc initfini symbols. gcc: PR target/33704 * config/rs6000/aix.h (COLLECT_SHARED_INIT_FUNC): Define. (COLLECT_SHARED_FINI_FUNC): Define. * collect2.c (aix_shared_initname): Declare. (aix_shared_fininame): Declare. (symkind): Add SYM_AIXI and SYM_AIXD. (scanfilter_masks): Add SCAN_AIXI and SCAN_AIXD. (struct names special): Add GLOBAL__AIXI_ and GLOBAL__AIXD_. (aixlazy_flag): Parse. (extract_init_priority): SYM_AIXI and SYM_AIXD have highest priority. (scan_prog_file, COFF): Handle SYM_AIXI and SYM_AIXD. Co-Authored-By: Andrew Dixie <andrewd@gentrack.com> From-SVN: r205309
34 lines
812 B
C
34 lines
812 B
C
/* FIXME: rename this file */
|
|
|
|
/*
|
|
Artificially create _GLOBAL_AIX[ID]_shr_o symbols in libgcc.a.
|
|
|
|
This means that libstdc++.a can invoke these symbols and they are resolved
|
|
regardless of whether libstdc++.a is linked against libgcc_s.a or libgcc.a.
|
|
|
|
The symbols are created in libgcc_s.a by collect2 as there are exception
|
|
frames to register for LIB2_DIVMOD_FUNCS.
|
|
|
|
The symbols are NOT created by collect2 for libgcc.a, because libgcc.a is
|
|
a 'real' archive containing objects and collect2 is not invoked.
|
|
|
|
libstdc++.a is linked against libgcc.a when handling the command line
|
|
options '-static-libgcc -static-libstdc++'.
|
|
*/
|
|
|
|
void _GLOBAL__AIXI_shr_o (void);
|
|
void _GLOBAL__AIXD_shr_o (void);
|
|
|
|
void
|
|
_GLOBAL__AIXI_shr_o (void)
|
|
{
|
|
return;
|
|
}
|
|
|
|
void
|
|
_GLOBAL__AIXD_shr_o (void)
|
|
{
|
|
return;
|
|
}
|
|
|