From e74211b660791d29be21e11766c5b375f5df59b1 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Tue, 21 Oct 2014 09:57:41 +0200 Subject: [PATCH] gas: avoid bogus warnings in false branches of conditional The construct being added to the cond.s test case otherwise triggered both the "missing closing ..." and the "stray ..." (twice) warnings in _find_end_of_line(). As that code fragments suggests, this is needed to support (include) files that can be used for both assembler .include and compiler #include directives. --- gas/ChangeLog | 8 ++++++++ gas/read.c | 15 ++++++++------- gas/testsuite/ChangeLog | 6 ++++++ gas/testsuite/gas/all/cond.l | 3 +++ gas/testsuite/gas/all/cond.s | 11 +++++++++++ 5 files changed, 36 insertions(+), 7 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 60a0a6adc1e..4f923ed803b 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,11 @@ +2014-10-21 Jan Beulich + + * read.c (HANDLE_CONDITIONAL_ASSEMBLY): New parameter "num_read". + (read_a_source_file): Adjust HANDLE_CONDITIONAL_ASSEMBLY + invocations. + (_find_end_of_line): Don't issue "stray '\\'" warning when in + false branch of conditional. + 2014-10-21 Jan Beulich * config/tc-aarch64.c (output_operand_error_record): Move down diff --git a/gas/read.c b/gas/read.c index 9fd0335d8e1..5472155eacf 100644 --- a/gas/read.c +++ b/gas/read.c @@ -557,10 +557,11 @@ pobegin (void) cfi_pop_insert (); } -#define HANDLE_CONDITIONAL_ASSEMBLY() \ +#define HANDLE_CONDITIONAL_ASSEMBLY(num_read) \ if (ignore_input ()) \ { \ - char *eol = find_end_of_line (input_line_pointer, flag_m68k_mri); \ + char *eol = find_end_of_line (input_line_pointer - (num_read), \ + flag_m68k_mri); \ input_line_pointer = (input_line_pointer <= buffer_limit \ && eol >= buffer_limit) \ ? buffer_limit \ @@ -834,7 +835,7 @@ read_a_source_file (char *name) char *line_start = input_line_pointer; int mri_line_macro; - HANDLE_CONDITIONAL_ASSEMBLY (); + HANDLE_CONDITIONAL_ASSEMBLY (0); c = get_symbol_end (); @@ -905,7 +906,7 @@ read_a_source_file (char *name) if (is_name_beginner (c)) { /* Want user-defined label or pseudo/opcode. */ - HANDLE_CONDITIONAL_ASSEMBLY (); + HANDLE_CONDITIONAL_ASSEMBLY (1); s = --input_line_pointer; c = get_symbol_end (); /* name's delimiter. */ @@ -1119,7 +1120,7 @@ read_a_source_file (char *name) /* local label ("4:") */ char *backup = input_line_pointer; - HANDLE_CONDITIONAL_ASSEMBLY (); + HANDLE_CONDITIONAL_ASSEMBLY (1); temp = c - '0'; @@ -1266,7 +1267,7 @@ read_a_source_file (char *name) continue; } - HANDLE_CONDITIONAL_ASSEMBLY (); + HANDLE_CONDITIONAL_ASSEMBLY (1); #ifdef tc_unrecognized_line if (tc_unrecognized_line (c)) @@ -6138,7 +6139,7 @@ _find_end_of_line (char *s, int mri_string, int insn ATTRIBUTE_UNUSED, } if (inquote) as_warn (_("missing closing `%c'"), inquote); - if (inescape) + if (inescape && !ignore_input ()) as_warn (_("stray `\\'")); return s; } diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index d504c4fcd93..a79cd1c7d37 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2014-10-21 Jan Beulich + + * gas/gas/all/cond.s: Also test processing of leading double + quote and trailing backslash in false branch of conditional. + * gas/gas/all/cond.l: Adjust accordingly. + 2014-10-21 Jan Beulich * gas/ppc/power8.s: Test msgclr and msgsnd. diff --git a/gas/testsuite/gas/all/cond.l b/gas/testsuite/gas/all/cond.l index 36f00664440..af80a10b7e8 100644 --- a/gas/testsuite/gas/all/cond.l +++ b/gas/testsuite/gas/all/cond.l @@ -67,5 +67,8 @@ [ ]*[1-9][0-9]*[ ]+[0-9a-f]+[048c] 0[0C] ?00 ?00 ?0[0C][ ]+m[ ]+12,[ ]*13[ ]* [ ]*[1-9][0-9]*[ ]+0[0D] ?00 ?00 ?0[0D][ ]* [ ]*[1-9][0-9]*[ ]+ +[ ]*[1-9][0-9]*[ ]+\.if[ ]+0[ ]* +[ ]*[1-9][0-9]*[ ]+\.endif[ ]* +[ ]*[1-9][0-9]*[ ]+ [ ]*[1-9][0-9]*[ ]+.*\.p2align 5,0 #pass diff --git a/gas/testsuite/gas/all/cond.s b/gas/testsuite/gas/all/cond.s index 164e055b12b..f0bf67ac8cb 100644 --- a/gas/testsuite/gas/all/cond.s +++ b/gas/testsuite/gas/all/cond.s @@ -89,4 +89,15 @@ m 11, m 12, 13 + .if 0 +#define x "m" \ + (x) +#define y \ + "m" \ + (y) +#define z \ + ((z) \ + + 1) + .endif + .p2align 5,0 -- 2.30.2