aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog8
-rw-r--r--gas/read.c15
-rw-r--r--gas/testsuite/ChangeLog6
-rw-r--r--gas/testsuite/gas/all/cond.l3
-rw-r--r--gas/testsuite/gas/all/cond.s11
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.
diff --git a/gas/read.c b/gas/read.c
index 9fd0335..5472155 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 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