Combine two existing mechanisms for copying symbol attributes, and fix a bug:
authorKen Raeburn <raeburn@cygnus>
Wed, 21 Sep 1994 22:21:25 +0000 (22:21 +0000)
committerKen Raeburn <raeburn@cygnus>
Wed, 21 Sep 1994 22:21:25 +0000 (22:21 +0000)
* symbols.c (copy_symbol_attributes): New function.  Copies BFD symbol flags
and calls OBJ_COPY_SYMBOL_ATTRIBUTES.
(resolve_symbol_value, case O_symbol): Call it, if X_add_number is zero.  Don't
call obj_frob_forward_symbol.
* read.c (pseudo_set): Call copy_symbol_attributes, but only if X_add_number is
zero.
* config/obj-elf.h (obj_frob_forward_symbol): Deleted.

gas/read.c

index 305cd613725d5c14525d57e2910bed495295d4e1..48739de2b11319766c3dbbab4a0e99ace3c2aa7e 100644 (file)
@@ -1579,7 +1579,8 @@ pseudo_set (symbolP)
       break;
 
     case O_symbol:
-      if (S_GET_SEGMENT (exp.X_add_symbol) == undefined_section)
+      if (S_GET_SEGMENT (exp.X_add_symbol) == undefined_section
+         || exp.X_add_number != 0)
        symbolP->sy_value = exp;
       else
        {
@@ -1595,15 +1596,7 @@ pseudo_set (symbolP)
          S_SET_VALUE (symbolP,
                       exp.X_add_number + S_GET_VALUE (s));
          symbolP->sy_frag = s->sy_frag;
-#ifdef BFD_ASSEMBLER
-         /* In an expression, transfer the settings of these flags.
-            The user can override later, of course.  */
-#define COPIED_SYMFLAGS        (BSF_FUNCTION)
-         symbolP->bsym->flags |= s->bsym->flags & COPIED_SYMFLAGS;
-#endif
-#ifdef OBJ_COPY_SYMBOL_ATTRIBUTES
-         OBJ_COPY_SYMBOL_ATTRIBUTES (symbolP, s);
-#endif
+         copy_symbol_attributes (symbolP, s);
        }
       break;