From 3c02c47f97cff61d33d51ade47632f0792d84c7c Mon Sep 17 00:00:00 2001 From: David Edelsohn Date: Wed, 14 Aug 2013 20:52:55 +0000 Subject: [PATCH] * config/tc-ppc.c (ppc_comm): Accept optional fourth .lcomm argument as alignment. --- gas/ChangeLog | 5 +++++ gas/config/tc-ppc.c | 24 +++++++++++++++++++----- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 329d7425dd3..7e600044dd1 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2013-08-14 David Edelsohn + + * config/tc-ppc.c (ppc_comm): Accept optional fourth .lcomm + argument as alignment. + 2013-08-09 Nick Clifton * config/tc-rl78.c (elf_flags): New variable. diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c index 5c413d3dab9..e426ed36191 100644 --- a/gas/config/tc-ppc.c +++ b/gas/config/tc-ppc.c @@ -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'; -- 2.30.2