From 52e9e4554d8dba9f9c9c56267789fc1d08b1de98 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cl=C3=A9ment=20Chigot?= <clement.chigot@atos.net>
Date: Thu, 14 Oct 2021 09:03:13 +0200
Subject: [PATCH] aix: ensure reference to __tls_get_addr is in text section.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
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.
---
gcc/config/rs6000/rs6000.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
@@ -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
--
2.25.1