powerpc64-linux infrastructure 2 of 6

Alan Modra amodra@bigpond.net.au
Wed Aug 8 06:11:00 GMT 2001


Another infrastructure change.  Allows OBJ_COPY_SYMBOL_ATTRIBUTES to be
defined to do some target specific twiddles, then call
elf_copy_symbol_attributes.

gas/ChangeLog
	* config/obj-elf.c (elf_copy_symbol_attributes): Make it a global
	function, and expand old obj-elf.h:OBJ_COPY_SYMBOL_ATTRIBUTES here.
	* config/obj-elf.h (elf_copy_symbol_attributes): Declare.
	(OBJ_COPY_SYMBOL_ATTRIBUTES): Call elf_copy_symbol_attributes.

Applying to mainline.

-- 
Alan Modra

Index: gas/config/obj-elf.c
===================================================================
RCS file: /cvs/src/src/gas/config/obj-elf.c,v
retrieving revision 1.33
diff -u -p -r1.33 obj-elf.c
--- obj-elf.c	2001/07/30 06:15:49	1.33
+++ obj-elf.c	2001/08/08 05:16:48
@@ -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 ((symb
 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;
@@ -1328,6 +1320,33 @@ elf_obj_symbol_new_hook (symbolP)
   if (ECOFF_DEBUGGING)
     ecoff_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
Index: gas/config/obj-elf.h
===================================================================
RCS file: /cvs/src/src/gas/config/obj-elf.h,v
retrieving revision 1.14
diff -u -p -r1.14 obj-elf.h
--- obj-elf.h	2001/03/08 23:24:22	1.14
+++ obj-elf.h	2001/08/08 05:16:49
@@ -182,32 +182,10 @@ void elf_obj_symbol_new_hook PARAMS ((sy
 #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



More information about the Binutils mailing list