* config/tc-ppc.c (ppc_elf_suffix): Undo part of last change so that
authorAlan Modra <amodra@gmail.com>
Thu, 6 Feb 2003 01:24:17 +0000 (01:24 +0000)
committerAlan Modra <amodra@gmail.com>
Thu, 6 Feb 2003 01:24:17 +0000 (01:24 +0000)
x@toc+off works.

gas/ChangeLog
gas/config/tc-ppc.c

index 82d1072..58f3165 100644 (file)
@@ -1,3 +1,8 @@
+2003-02-06  Alan Modra  <amodra@bigpond.net.au>
+
+       * config/tc-ppc.c (ppc_elf_suffix): Undo part of last change so that
+       x@toc+off works.
+
 2003-02-05  Alan Modra  <amodra@bigpond.net.au>
 
        * config/tc-ppc.c (mapping): Handle new TLS reloc specs.
index 56af40a..293627e 100644 (file)
@@ -1580,31 +1580,29 @@ ppc_elf_suffix (str_p, exp_p)
          }
 
        if (!ppc_obj64)
+         if (exp_p->X_add_number != 0
+             && (reloc == (int) BFD_RELOC_16_GOTOFF
+                 || reloc == (int) BFD_RELOC_LO16_GOTOFF
+                 || reloc == (int) BFD_RELOC_HI16_GOTOFF
+                 || reloc == (int) BFD_RELOC_HI16_S_GOTOFF))
+           as_warn (_("identifier+constant@got means identifier@got+constant"));
+
+       /* Now check for identifier@suffix+constant.  */
+       if (*str == '-' || *str == '+')
          {
-           if (exp_p->X_add_number != 0
-               && (reloc == (int) BFD_RELOC_16_GOTOFF
-                   || reloc == (int) BFD_RELOC_LO16_GOTOFF
-                   || reloc == (int) BFD_RELOC_HI16_GOTOFF
-                   || reloc == (int) BFD_RELOC_HI16_S_GOTOFF))
-             as_warn (_("identifier+constant@got means identifier@got+constant"));
-
-           /* Now check for identifier@suffix+constant.  */
-           if (*str == '-' || *str == '+')
+           char *orig_line = input_line_pointer;
+           expressionS new_exp;
+
+           input_line_pointer = str;
+           expression (&new_exp);
+           if (new_exp.X_op == O_constant)
              {
-               char *orig_line = input_line_pointer;
-               expressionS new_exp;
-
-               input_line_pointer = str;
-               expression (&new_exp);
-               if (new_exp.X_op == O_constant)
-                 {
-                   exp_p->X_add_number += new_exp.X_add_number;
-                   str = input_line_pointer;
-                 }
-
-               if (&input_line_pointer != str_p)
-                 input_line_pointer = orig_line;
+               exp_p->X_add_number += new_exp.X_add_number;
+               str = input_line_pointer;
              }
+
+           if (&input_line_pointer != str_p)
+             input_line_pointer = orig_line;
          }
        *str_p = str;