diff options
Diffstat (limited to 'gas/config')
-rw-r--r-- | gas/config/obj-elf.c | 37 | ||||
-rw-r--r-- | gas/config/obj-elf.h | 28 |
2 files changed, 31 insertions, 34 deletions
diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c index 8c59479..f298498 100644 --- a/gas/config/obj-elf.c +++ b/gas/config/obj-elf.c @@ -1,5 +1,5 @@ /* ELF object file format - Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 + Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -55,7 +55,6 @@ static void elf_s_set_size PARAMS ((symbolS *, bfd_vma)); static bfd_vma elf_s_get_align PARAMS ((symbolS *)); static void elf_s_set_align PARAMS ((symbolS *, bfd_vma)); static void elf_s_set_other PARAMS ((symbolS *, int)); -static void elf_copy_symbol_attributes PARAMS ((symbolS *, symbolS *)); static int elf_sec_sym_ok_for_reloc PARAMS ((asection *)); static void adjust_stab_sections PARAMS ((bfd *, asection *, PTR)); static int elf_separate_stab_sections PARAMS ((void)); @@ -242,13 +241,6 @@ elf_s_set_other (sym, other) S_SET_OTHER (sym, other); } -static void -elf_copy_symbol_attributes (dest, src) - symbolS *dest, *src; -{ - OBJ_COPY_SYMBOL_ATTRIBUTES (dest, src); -} - static int elf_sec_sym_ok_for_reloc (sec) asection *sec; @@ -1330,6 +1322,33 @@ elf_obj_symbol_new_hook (symbolP) #endif } +/* 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. */ + +void +elf_copy_symbol_attributes (dest, src) + symbolS *dest, *src; +{ + struct elf_obj_sy *srcelf = symbol_get_obj (src); + struct elf_obj_sy *destelf = symbol_get_obj (dest); + if (srcelf->size) + { + if (destelf->size == NULL) + destelf->size = + (expressionS *) xmalloc (sizeof (expressionS)); + *destelf->size = *srcelf->size; + } + else + { + if (destelf->size != NULL) + free (destelf->size); + destelf->size = NULL; + } + S_SET_SIZE (dest, S_GET_SIZE (src)); + S_SET_OTHER (dest, S_GET_OTHER (src)); +} + void obj_elf_version (ignore) int ignore ATTRIBUTE_UNUSED; diff --git a/gas/config/obj-elf.h b/gas/config/obj-elf.h index 8e3ce7d..33c5f43 100644 --- a/gas/config/obj-elf.h +++ b/gas/config/obj-elf.h @@ -182,32 +182,10 @@ void elf_obj_symbol_new_hook PARAMS ((symbolS *)); #define obj_symbol_new_hook elf_obj_symbol_new_hook #endif -/* 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. */ +void elf_copy_symbol_attributes PARAMS ((symbolS *, symbolS *)); #ifndef OBJ_COPY_SYMBOL_ATTRIBUTES -#define OBJ_COPY_SYMBOL_ATTRIBUTES(DEST,SRC) \ -do \ - { \ - struct elf_obj_sy *srcelf = symbol_get_obj (SRC); \ - struct elf_obj_sy *destelf = symbol_get_obj (DEST); \ - if (srcelf->size) \ - { \ - if (destelf->size == NULL) \ - destelf->size = \ - (expressionS *) xmalloc (sizeof (expressionS)); \ - *destelf->size = *srcelf->size; \ - } \ - else \ - { \ - if (destelf->size != NULL) \ - free (destelf->size); \ - destelf->size = NULL; \ - } \ - S_SET_SIZE ((DEST), S_GET_SIZE (SRC)); \ - S_SET_OTHER ((DEST), S_GET_OTHER (SRC)); \ - } \ -while (0) +#define OBJ_COPY_SYMBOL_ATTRIBUTES(DEST, SRC) \ + (elf_copy_symbol_attributes (DEST, SRC)) #endif #ifndef SEPARATE_STAB_SECTIONS |