From 35c1a4396497a4009c99e5587aa908bb6df4e1e6 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Tue, 8 Dec 2015 10:12:54 +0100 Subject: [PATCH] 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. --- gas/ChangeLog | 5 +++++ gas/read.c | 17 +++++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 53a618d5035..69e10610791 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2015-12-08 Jan Beulich + + * read.c (stringer): Move absolute section check up. Return + right away. + 2015-12-08 Jan Beulich * config/obj-elf.c (elf_file_symbol): Tighten condition for diff --git a/gas/read.c b/gas/read.c index 1718aaa4d63..172d75f2929 100644 --- a/gas/read.c +++ b/gas/read.c @@ -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 == '"') { -- 2.30.2