* gasp.c (change_base): Recognize \(...) construct documented to
authorIan Lance Taylor <ian@airs.com>
Fri, 22 Mar 1996 16:14:07 +0000 (16:14 +0000)
committerIan Lance Taylor <ian@airs.com>
Fri, 22 Mar 1996 16:14:07 +0000 (16:14 +0000)
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
gas/gasp.c

index cd82b7dd7acf9e46c4333ab9eccc244a393d0c74..cbd3547db68e2026490d523d808df9f1b91be0a6 100644 (file)
@@ -1,3 +1,15 @@
+Fri Mar 22 11:13:00 1996  Ian Lance Taylor  <ian@cygnus.com>
+
+       * 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  <ian@cygnus.com>
+
+       * config/tc-i386.c (md_parse_option): If OBJ_ELF, ignore -k for
+       FreeBSD compatibility.  From John Polstra <jdp@polstra.com>.
+
 Wed Mar 20 18:13:32 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
 
        * doc/as.texinfo, doc/c-i960.texi: Fix typos.
index f92d34ff9953cfc0cfe11f9bbcb2e5d54dc3ef99..673f4406b8e0202746a0da84d29e0b87d30d95d9 100644 (file)
@@ -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);