* gasp.c (hash_add_to_string_table): Correct misspelling in error
authorIan Lance Taylor <ian@airs.com>
Thu, 27 Feb 1997 18:30:47 +0000 (18:30 +0000)
committerIan Lance Taylor <ian@airs.com>
Thu, 27 Feb 1997 18:30:47 +0000 (18:30 +0000)
message, and add newline.
(process_file): Don't process assignments in the label if this is
a equ or assign pseudo-op.
(process_pseudo_op): Swap first argument to do_assign for K_ASSIGN
and K_EQU, to match documentation.

gas/ChangeLog
gas/gasp.c

index 546ec5e756fd8179cd76ea0018945c5e653ed3c2..ecd6ef7f39279d0590bd8f9aaf529e002a0368be 100644 (file)
@@ -1,3 +1,12 @@
+Thu Feb 27 13:29:04 1997  Ian Lance Taylor  <ian@cygnus.com>
+
+       * gasp.c (hash_add_to_string_table): Correct misspelling in error
+       message, and add newline.
+       (process_file): Don't process assignments in the label if this is
+       a equ or assign pseudo-op.
+       (process_pseudo_op): Swap first argument to do_assign for K_ASSIGN
+       and K_EQU, to match documentation.
+
 Thu Feb 27 12:00:03 1997  Michael Meissner  <meissner@cygnus.com>
 
        * config/obj-coff.c (obj_coff_section): Add 'r' section attribute
index db624f52c287f33d0dca88299fd8244c44be06f8..27efb0560cc35279271f59fd4884089ce91c4f74 100644 (file)
@@ -1,5 +1,5 @@
 /* gasp.c - Gnu assembler preprocessor main program.
-   Copyright (C) 1994, 95, 1996 Free Software Foundation, Inc.
+   Copyright (C) 1994, 95, 96, 1997 Free Software Foundation, Inc.
 
    Written by Steve and Judy Chamberlain of Cygnus Support,
       sac@cygnus.com
@@ -470,7 +470,7 @@ hash_add_to_string_table (tab, key, name, again)
   if (ptr->value.s.len)
     {
       if (!again)
-       ERROR ((stderr, "redefintion not allowed"));
+       ERROR ((stderr, "redefinition not allowed\n"));
     }
 
   ptr->type = hash_string;
@@ -1917,19 +1917,43 @@ process_file ()
        {
          l = grab_label (&line, &label_in);
          sb_reset (&label);              
-         if (label_in.len)
-           {
-             /* Munge any label */
-
-             
-             process_assigns (0, &label_in, &label);
-           }
 
          if (line.ptr[l] == ':')
            l++;
          while (ISWHITE (line.ptr[l]) && l < line.len)
            l++;
 
+         if (label_in.len)
+           {
+             int do_assigns;
+
+             /* Munge the label, unless this is EQU or ASSIGN.  */
+             do_assigns = 1;
+             if (l < line.len
+                 && (line.ptr[l] == '.' || alternate || mri))
+               {
+                 int lx = l;
+
+                 if (line.ptr[lx] == '.')
+                   ++lx;
+                 if (lx + 3 <= line.len
+                     && strncasecmp ("EQU", line.ptr + lx, 3) == 0
+                     && (lx + 3 == line.len
+                         || ! ISFIRSTCHAR (line.ptr[lx + 3])))
+                   do_assigns = 0;
+                 else if (lx + 6 <= line.len
+                          && strncasecmp ("ASSIGN", line.ptr + lx, 6) == 0
+                          && (lx + 6 == line.len
+                              || ! ISFIRSTCHAR (line.ptr[lx + 6])))
+                   do_assigns = 0;
+               }
+
+             if (do_assigns)
+               process_assigns (0, &label_in, &label);
+             else
+               sb_add_sb (&label, &label_in);
+           }
+
          if (l < line.len)
            {
              if (process_pseudo_op (l, &line, &acc))
@@ -3308,7 +3332,7 @@ process_pseudo_op (idx, line, acc)
              do_sdata (idx, line, 'z');
              return 1;
            case K_ASSIGN:
-             do_assign (1, 0, line);
+             do_assign (0, 0, line);
              return 1;
            case K_AIF:
              do_aif (idx, line);
@@ -3326,7 +3350,7 @@ process_pseudo_op (idx, line, acc)
              do_aendr ();
              return 1;
            case K_EQU:
-             do_assign (0, idx, line);
+             do_assign (1, idx, line);
              return 1;
            case K_ALIGN:
              do_align (idx, line);