diff options
author | Jan Beulich <jbeulich@suse.com> | 2020-07-20 08:56:23 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2020-07-20 08:56:23 +0200 |
commit | 750e4bf70f2caab39dc5d0a1b2d26c9ca1fbd909 (patch) | |
tree | be3d6d2b89bbb851fb2ba3701cc6814c00e62e18 | |
parent | 48ef937e913d31bbd24a7ae568d30b499a6b3477 (diff) |
gas: generalize comment character escaping recognition
PR gas/4572
Generalize what ab1fadc6b2f0 ("PR22714, Assembler preprocessor loses
track of \@") did to always honor escaped comment chars. Use this then
to support escaped /, %, and * operators on x86, when / is a comment
char (to match the Sun assembler's behavior).
-rw-r--r-- | gas/ChangeLog | 10 | ||||
-rw-r--r-- | gas/app.c | 23 |
2 files changed, 15 insertions, 18 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index f63af2efc1..67fabb9eab 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,15 @@ 2020-07-20 Jan Beulich <jbeulich@suse.com> + PR gas/4572 + * app.c (last_char): Drop TC_ARM conditional around it. + (struct app_save): Drop TC_ARM conditional around last_char. + (app_push, app_pop): Drop TC_ARM conditional from last_char + accesses. + (do_scrub_chars): Likewise. Drop TC_ARM conditional from + backslash-precedes-comment-character check. + +2020-07-20 Jan Beulich <jbeulich@suse.com> + * config/tc-i386.c (frag_opcode_byte): New. (output_branch): Emit error when in absolute section. (output_jump, output_insn): Use frag_opcode_byte. Handle being @@ -55,9 +55,8 @@ static const char mri_pseudo[] = ".mri 0"; static const char symver_pseudo[] = ".symver"; static const char * symver_state; #endif -#ifdef TC_ARM + static char last_char; -#endif static char lex[256]; static const char symbol_chars[] = @@ -244,9 +243,7 @@ struct app_save #if defined TC_ARM && defined OBJ_ELF const char * symver_state; #endif -#ifdef TC_ARM - char last_char; -#endif + char last_char; }; char * @@ -276,9 +273,7 @@ app_push (void) #if defined TC_ARM && defined OBJ_ELF saved->symver_state = symver_state; #endif -#ifdef TC_ARM saved->last_char = last_char; -#endif /* do_scrub_begin() is not useful, just wastes time. */ @@ -318,9 +313,7 @@ app_pop (char *arg) #if defined TC_ARM && defined OBJ_ELF symver_state = saved->symver_state; #endif -#ifdef TC_ARM last_char = saved->last_char; -#endif free (arg); } @@ -1289,13 +1282,11 @@ do_scrub_chars (size_t (*get) (char *, size_t), char *tostart, size_t tolen) goto de_fault; #endif -#ifdef TC_ARM - /* For the ARM, care is needed not to damage occurrences of \@ - by stripping the @ onwards. Yuck. */ + /* Care is needed not to damage occurrences of \<comment-char> + by stripping the <comment-char> onwards. Yuck. */ if ((to > tostart ? to[-1] : last_char) == '\\') - /* Do not treat the @ as a start-of-comment. */ + /* Do not treat the <comment-char> as a start-of-comment. */ goto de_fault; -#endif #ifdef WARN_COMMENTS if (!found_comment) @@ -1472,10 +1463,8 @@ do_scrub_chars (size_t (*get) (char *, size_t), char *tostart, size_t tolen) fromeof: /* We have reached the end of the input. */ -#ifdef TC_ARM if (to > tostart) last_char = to[-1]; -#endif return to - tostart; tofull: @@ -1489,9 +1478,7 @@ do_scrub_chars (size_t (*get) (char *, size_t), char *tostart, size_t tolen) else saved_input = NULL; -#ifdef TC_ARM if (to > tostart) last_char = to[-1]; -#endif return to - tostart; } |