[PATCH] [AIX] [GAS] .lcomm directive

David Edelsohn dje.gcc@gmail.com
Tue Aug 13 21:49:00 GMT 2013


AIX 6.1 assembler added an optional alignment argument to the .lcomm
pseudo-op and GCC uses it (it is necessary for vectors allocated in
BSS).  Is the following patch the correct approach to accept that
argument?

Thanks, David

Index: tc-ppc.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-ppc.c,v
retrieving revision 1.202
diff -c -p -r1.202 tc-ppc.c
*** tc-ppc.c    24 Jul 2013 14:12:41 -0000      1.202
--- tc-ppc.c    13 Aug 2013 21:41:34 -0000
*************** ppc_comm (int lcomm)
*** 3526,3536 ****
        char *lcomm_name;
        char lcomm_endc;

-       if (size <= 4)
-       align = 2;
-       else
-       align = 3;
-
        /* The third argument to .lcomm appears to be the real local
         common symbol to create.  References to the symbol named in
         the first argument are turned into references to the third
--- 3526,3531 ----
*************** ppc_comm (int lcomm)
*** 3549,3554 ****
--- 3544,3568 ----
        lcomm_sym = symbol_find_or_make (lcomm_name);

        *input_line_pointer = lcomm_endc;
+
+       /* The fourth argument to .lcomm is the alignment.  */
+       if (*input_line_pointer != ',')
+       {
+         if (size <= 4)
+           align = 2;
+         else
+           align = 3;
+       }
+       else
+       {
+         ++input_line_pointer;
+         align = get_absolute_expression ();
+         if (align <= 0)
+           {
+             as_warn (_("ignoring bad alignment"));
+             align = 2;
+           }
+       }
      }

    *end_name = '\0';



More information about the Binutils mailing list