gas: don't get confused by .asci{i,z} after .struct

While not allowed, this certainly shouldn't result in confusing the
programmer (by skipping lines in unexpected ways): Without returning,
demand_empty_rest_of_line() (at the end of the function) will demand
the _next_ line to be empty, and without the conditional we would
ignore the next line.
This commit is contained in:
Jan Beulich 2015-12-08 10:12:54 +01:00 committed by Jan Beulich
parent fbdf9406b0
commit 35c1a43964
2 changed files with 14 additions and 8 deletions

View File

@ -1,3 +1,8 @@
2015-12-08 Jan Beulich <jbeulich@suse.com>
* read.c (stringer): Move absolute section check up. Return
right away.
2015-12-08 Jan Beulich <jbeulich@suse.com>
* config/obj-elf.c (elf_file_symbol): Tighten condition for

View File

@ -5310,6 +5310,15 @@ stringer (int bits_appendzero)
md_cons_align (1);
#endif
/* If we have been switched into the abs_section then we
will not have an obstack onto which we can hang strings. */
if (now_seg == absolute_section)
{
as_bad (_("strings must be placed into a section"));
ignore_rest_of_line ();
return;
}
/* The following awkward logic is to parse ZERO or more strings,
comma separated. Recall a string expression includes spaces
before the opening '\"' and spaces after the closing '\"'.
@ -5324,14 +5333,6 @@ stringer (int bits_appendzero)
{
c = ','; /* Do loop. */
}
/* If we have been switched into the abs_section then we
will not have an obstack onto which we can hang strings. */
if (now_seg == absolute_section)
{
as_bad (_("strings must be placed into a section"));
c = 0;
ignore_rest_of_line ();
}
while (c == ',' || c == '<' || c == '"')
{