diff mbox series

AIX thread local uninitialized data (PR 99094)

Message ID CAGWvnyncMR=7e0A5KFPiQPthsDWP17iT-F3ANgJPGub4DXuYzA@mail.gmail.com
State New
Headers show
Series AIX thread local uninitialized data (PR 99094) | expand

Commit Message

David Edelsohn March 11, 2021, 10:01 p.m. UTC
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.

Bootstrapped on powerpc-ibm-aix7.2.3.0.

    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.
diff mbox series

Patch

diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 35ecf5ac9ab..46ddf49d34b 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -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);
diff --git a/gcc/config/rs6000/xcoff.h b/gcc/config/rs6000/xcoff.h
index c01667809a5..cb9aae753b2 100644
--- a/gcc/config/rs6000/xcoff.h
+++ b/gcc/config/rs6000/xcoff.h
@@ -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

diff --git a/gcc/xcoffout.c b/gcc/xcoffout.c
index d07c2fba44e..3dbea04ea5d 100644
--- a/gcc/xcoffout.c
+++ b/gcc/xcoffout.c
@@ -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.  */
diff --git a/gcc/xcoffout.h b/gcc/xcoffout.h
index 10a583b48e0..ae6aee0af2a 100644
--- a/gcc/xcoffout.h
+++ b/gcc/xcoffout.h
@@ -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.  */