diff options
author | Ken Raeburn <raeburn@cygnus> | 1994-09-21 22:21:25 +0000 |
---|---|---|
committer | Ken Raeburn <raeburn@cygnus> | 1994-09-21 22:21:25 +0000 |
commit | ef1988706623f7b739ec04a035dcd846f13da106 (patch) | |
tree | f8816fcfbd82a1a26b140cd6923bef61702eba40 /gas/read.c | |
parent | ba466c4c9d804a31b9f9d28b2d9cd11a5ccb141f (diff) | |
download | gdb-ef1988706623f7b739ec04a035dcd846f13da106.zip gdb-ef1988706623f7b739ec04a035dcd846f13da106.tar.gz gdb-ef1988706623f7b739ec04a035dcd846f13da106.tar.bz2 |
Combine two existing mechanisms for copying symbol attributes, and fix a bug:
* 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.
Diffstat (limited to 'gas/read.c')
-rw-r--r-- | gas/read.c | 13 |
1 files changed, 3 insertions, 10 deletions
@@ -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; |