[PATCH] gas: avoid bogus warnings in false branches of conditional
Jan Beulich
JBeulich@suse.com
Mon Oct 20 08:58:00 GMT 2014
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/
2014-10-20 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.
gas/testsuite/
2014-10-20 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.
--- 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_stri
}
if (inquote)
as_warn (_("missing closing `%c'"), inquote);
- if (inescape)
+ if (inescape && !ignore_input ())
as_warn (_("stray `\\'"));
return s;
}
--- 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
--- 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
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: binutils-master-conditional-off.patch
URL: <https://sourceware.org/pipermail/binutils/attachments/20141020/4e9fa71c/attachment.ksh>
More information about the Binutils
mailing list