aix: Use lcomm for TLS static data.

GCC on AIX generates thread local uninitialized data in the common section,
which could conflict with another module.

This patch changes the code generation to place static uninitialized
thread local data into the local common section specified with .lcomm.
This change also removes the need to create a file-local name for the TBSS
data.

gcc/ChangeLog:

2021-03-11  David Edelsohn  <dje.gcc@gmail.com>

	PR target/99094
	* config/rs6000/rs6000.c (rs6000_xcoff_file_start): Don't create
	xcoff_tbss_section_name.
	* config/rs6000/xcoff.h (ASM_OUTPUT_TLS_COMMON): Use .lcomm.
	* xcoffout.c (xcoff_tbss_section_name): Delete.
	* xcoffout.h (xcoff_tbss_section_name): Delete.
This commit is contained in:
David Edelsohn 2021-03-11 11:41:24 -05:00
parent 5f27a9f90d
commit 26ed5a28b1
4 changed files with 5 additions and 9 deletions

View File

@ -21261,8 +21261,6 @@ rs6000_xcoff_file_start (void)
main_input_filename, ".ro_");
rs6000_gen_section_name (&xcoff_tls_data_section_name,
main_input_filename, ".tls_");
rs6000_gen_section_name (&xcoff_tbss_section_name,
main_input_filename, ".tbss_[UL]");
fputs ("\t.file\t", asm_out_file);
output_quoted_string (asm_out_file, main_input_filename);

View File

@ -255,11 +255,11 @@
} while (0)
#ifdef HAVE_AS_TLS
#define ASM_OUTPUT_TLS_COMMON(FILE, DECL, NAME, SIZE) \
do { fputs (COMMON_ASM_OP, (FILE)); \
RS6000_OUTPUT_BASENAME ((FILE), (NAME)); \
fprintf ((FILE), "[UL]," HOST_WIDE_INT_PRINT_UNSIGNED"\n", \
(SIZE)); \
#define ASM_OUTPUT_TLS_COMMON(FILE, DECL, NAME, SIZE) \
do { fputs (LOCAL_COMMON_ASM_OP, (FILE)); \
fprintf ((FILE), "%s," HOST_WIDE_INT_PRINT_UNSIGNED",%s[UL],3\n", \
(*targetm.strip_name_encoding) (NAME), (SIZE), \
(*targetm.strip_name_encoding) (NAME)); \
} while (0)
#endif

View File

@ -66,7 +66,6 @@ char *xcoff_bss_section_name;
char *xcoff_private_data_section_name;
char *xcoff_private_rodata_section_name;
char *xcoff_tls_data_section_name;
char *xcoff_tbss_section_name;
char *xcoff_read_only_section_name;
/* Last source file name mentioned in a NOTE insn. */

View File

@ -129,7 +129,6 @@ extern char *xcoff_bss_section_name;
extern char *xcoff_private_data_section_name;
extern char *xcoff_private_rodata_section_name;
extern char *xcoff_tls_data_section_name;
extern char *xcoff_tbss_section_name;
extern char *xcoff_read_only_section_name;
/* Last source file name mentioned in a NOTE insn. */