aix: ensure reference to __tls_get_addr is in text section.

The garbage collector of AIX linker might remove the reference to
__tls_get_addr if it's added inside an unused csect, which can be
the case of .data with very simple programs.

gcc/ChangeLog:
2021-10-19  Clément Chigot  <clement.chigot@atos.net>

	* config/rs6000/rs6000.c (rs6000_xcoff_file_end): Move
	__tls_get_addr reference to .text csect.
This commit is contained in:
Clément Chigot 2021-10-14 09:03:13 +02:00
parent 6b34f5c5ec
commit e3ef92e79f

View File

@ -21626,17 +21626,17 @@ static void
rs6000_xcoff_file_end (void)
{
switch_to_section (text_section);
if (xcoff_tls_exec_model_detected)
{
/* Add a .ref to __tls_get_addr to force libpthread dependency. */
fputs ("\t.extern __tls_get_addr\n\t.ref __tls_get_addr\n", asm_out_file);
}
fputs ("_section_.text:\n", asm_out_file);
switch_to_section (data_section);
fputs (TARGET_32BIT
? "\t.long _section_.text\n" : "\t.llong _section_.text\n",
asm_out_file);
if (xcoff_tls_exec_model_detected)
{
/* Add a .ref to __tls_get_addr to force libpthread dependency. */
fputs ("\t.extern __tls_get_addr\n\t.ref __tls_get_addr\n", asm_out_file);
}
}
struct declare_alias_data