From 5ba7c0bee1a42f4b9ba600dad37adedb3569c079 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 22 Mar 1996 16:14:07 +0000 Subject: * gasp.c (change_base): Recognize \(...) construct documented to pass through enclosed characters literally through to the output. (process_assigns): Likewise. Also, be more careful to avoid looking past the end of the buffer. PR 9268. --- gas/ChangeLog | 12 ++++++++++++ gas/gasp.c | 29 ++++++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) (limited to 'gas') diff --git a/gas/ChangeLog b/gas/ChangeLog index cd82b7d..cbd3547 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,15 @@ +Fri Mar 22 11:13:00 1996 Ian Lance Taylor + + * gasp.c (change_base): Recognize \(...) construct documented to + pass through enclosed characters literally through to the output. + (process_assigns): Likewise. Also, be more careful to avoid + looking past the end of the buffer. + +Thu Mar 21 13:18:43 1996 Ian Lance Taylor + + * config/tc-i386.c (md_parse_option): If OBJ_ELF, ignore -k for + FreeBSD compatibility. From John Polstra . + Wed Mar 20 18:13:32 1996 Andreas Schwab * doc/as.texinfo, doc/c-i960.texi: Fix typos. diff --git a/gas/gasp.c b/gas/gasp.c index f92d34f..673f440 100644 --- a/gas/gasp.c +++ b/gas/gasp.c @@ -1103,7 +1103,21 @@ change_base (idx, in, out) while (idx < in->len) { - if (idx < in->len - 1 && in->ptr[idx + 1] == '\'' && ! mri) + if (in->ptr[idx] == '\\' + && idx + 1 < in->len + && in->ptr[idx + 1] == '(') + { + idx += 2; + while (idx < in->len + && in->ptr[idx] != ')') + { + sb_add_char (out, in->ptr[idx]); + idx++; + } + if (idx < in->len) + idx++; + } + else if (idx < in->len - 1 && in->ptr[idx + 1] == '\'' && ! mri) { int base; int value; @@ -1761,11 +1775,24 @@ process_assigns (idx, in, buf) { hash_entry *ptr; if (in->ptr[idx] == '\\' + && idx + 1 < in->len + && in->ptr[idx + 1] == '(') + { + do + { + sb_add_char (buf, in->ptr[idx]); + idx++; + } + while (idx < in->len && in->ptr[idx - 1] != ')'); + } + else if (in->ptr[idx] == '\\' + && idx + 1 < in->len && in->ptr[idx + 1] == '&') { idx = condass_lookup_name (in, idx + 2, buf, 1); } else if (in->ptr[idx] == '\\' + && idx + 1 < in->len && in->ptr[idx + 1] == '$') { idx = condass_lookup_name (in, idx + 2, buf, 0); -- cgit v1.1