-/* When setting one symbol equal to another, by default we probably
- want them to have the same "size", whatever it means in the current
- context. */
-#define OBJ_COPY_SYMBOL_ATTRIBUTES(DEST,SRC) \
-do \
- { \
- if ((SRC)->sy_obj.size) \
- { \
- if ((DEST)->sy_obj.size == NULL) \
- (DEST)->sy_obj.size = \
- (expressionS *) xmalloc (sizeof (expressionS)); \
- *(DEST)->sy_obj.size = *(SRC)->sy_obj.size; \
- } \
- else \
- { \
- if ((DEST)->sy_obj.size != NULL) \
- free ((DEST)->sy_obj.size); \
- (DEST)->sy_obj.size = NULL; \
- } \
- S_SET_SIZE ((DEST), S_GET_SIZE (SRC)); \
- S_SET_OTHER ((DEST), S_GET_OTHER (SRC)); \
- } \
-while (0)
+void elf_copy_symbol_attributes (symbolS *, symbolS *);
+#ifndef OBJ_COPY_SYMBOL_ATTRIBUTES
+#define OBJ_COPY_SYMBOL_ATTRIBUTES(DEST, SRC) \
+ (elf_copy_symbol_attributes (DEST, SRC))
+#endif
+
+#ifndef SEPARATE_STAB_SECTIONS
+/* Avoid ifndef each separate macro setting by wrapping the whole of the
+ stab group on the assumption that whoever sets SEPARATE_STAB_SECTIONS
+ caters to ECOFF_DEBUGGING and the right setting of INIT_STAB_SECTIONS
+ and OBJ_PROCESS_STAB too, without needing the tweaks below. */