diff options
author | Jan Beulich <jbeulich@novell.com> | 2014-10-21 09:57:41 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2014-10-21 09:57:41 +0200 |
commit | e74211b660791d29be21e11766c5b375f5df59b1 (patch) | |
tree | 2348e36d7e97c3601d9df062fcd971f066113cdf | |
parent | 12e87fac5c760b04eed4f5a5948c2dfd6ec8f6d8 (diff) | |
download | gdb-e74211b660791d29be21e11766c5b375f5df59b1.zip gdb-e74211b660791d29be21e11766c5b375f5df59b1.tar.gz gdb-e74211b660791d29be21e11766c5b375f5df59b1.tar.bz2 |
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.
-rw-r--r-- | gas/ChangeLog | 8 | ||||
-rw-r--r-- | gas/read.c | 15 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gas/testsuite/gas/all/cond.l | 3 | ||||
-rw-r--r-- | gas/testsuite/gas/all/cond.s | 11 |
5 files changed, 36 insertions, 7 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 60a0a6a..4f923ed 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,13 @@ 2014-10-21 Jan Beulich <jbeulich@suse.com> + * 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 <jbeulich@suse.com> + * config/tc-aarch64.c (output_operand_error_record): Move down assertion of idx being non-negative. Use local variables when available. @@ -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 d504c4f..a79cd1c 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,5 +1,11 @@ 2014-10-21 Jan Beulich <jbeulich@suse.com> + * 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 <jbeulich@suse.com> + * gas/ppc/power8.s: Test msgclr and msgsnd. * gas/ppc/power8.d: Adjust accordingly. diff --git a/gas/testsuite/gas/all/cond.l b/gas/testsuite/gas/all/cond.l index 36f0066..af80a10 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 164e055..f0bf67a 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 |