* config/tc-ppc.c (ppc_comm): Accept optional fourth .lcomm
authorDavid Edelsohn <dje.gcc@gmail.com>
Wed, 14 Aug 2013 20:52:55 +0000 (20:52 +0000)
committerDavid Edelsohn <dje.gcc@gmail.com>
Wed, 14 Aug 2013 20:52:55 +0000 (20:52 +0000)
        argument as alignment.

gas/ChangeLog
gas/config/tc-ppc.c

index 329d7425dd3c5c848b9b4eb724604024aa70a296..7e600044dd1018e1edde89d840ec802687325039 100644 (file)
@@ -1,3 +1,8 @@
+2013-08-14  David Edelsohn  <dje.gcc@gmail.com>
+
+       * config/tc-ppc.c (ppc_comm): Accept optional fourth .lcomm
+       argument as alignment.
+
 2013-08-09  Nick Clifton  <nickc@redhat.com>
 
        * config/tc-rl78.c (elf_flags): New variable.
index 5c413d3dab98acffc6aa545b3353d76318a1812a..e426ed361919a854a41f27464996a24d7d6b621d 100644 (file)
@@ -3526,11 +3526,6 @@ ppc_comm (int lcomm)
       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
@@ -3549,6 +3544,25 @@ ppc_comm (int lcomm)
       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';