* config/obj-coff.h (RESOLVE_SYMBOL_REDEFINITION): Define.
authorIan Lance Taylor <ian@airs.com>
Wed, 28 Jan 1998 18:49:01 +0000 (18:49 +0000)
committerIan Lance Taylor <ian@airs.com>
Wed, 28 Jan 1998 18:49:01 +0000 (18:49 +0000)
gas/ChangeLog
gas/config/obj-coff.h

index 67ed5c5409f59aff1f63021f9a2a0729cdbd45a2..3d3edd3eff7e144f68356c8057d1667785ed363a 100644 (file)
@@ -1,3 +1,7 @@
+Wed Jan 28 13:48:08 1998  Ian Lance Taylor  <ian@cygnus.com>
+
+       * config/obj-coff.h (RESOLVE_SYMBOL_REDEFINITION): Define.
+
 Fri Jan 28 10:18:06 1998  Bill Moyer <billm@cygnus.com>
         
        * as.h (flag_warn_instructionswap): added new flag variable.
index ed41cd0639f0635a9a03ce7c7214edea859b8bd4..0148c639b24c9018231b122a3a23076adc6e73fa 100644 (file)
@@ -795,6 +795,18 @@ extern void obj_coff_pe_handle_link_once ();
 
 #endif /* not BFD_ASSEMBLER */
 
+/* In COFF, if a symbol is defined using .def/.val SYM/.endef, it's OK
+   to redefine the symbol later on.  This can happen if C symbols use
+   a prefix, and a symbol is defined both with and without the prefix,
+   as in start/_start/__start in gcc/libgcc1-test.c.  */
+#define RESOLVE_SYMBOL_REDEFINITION(sym)               \
+(SF_GET_GET_SEGMENT (sym)                              \
+ ? (sym->sy_frag = frag_now,                           \
+    S_SET_VALUE (sym, frag_now_fix ()),                        \
+    S_SET_SEGMENT (sym, now_seg),                      \
+    0)                                                 \
+ : 0)
+
 /* Stabs in a coff file go into their own section.  */
 #define SEPARATE_STAB_SECTIONS 1