OSDN Git Service

2006-11-02 Paul Brook <paul@codesourcery.com>
authorpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 2 Nov 2006 20:18:42 +0000 (20:18 +0000)
committerpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 2 Nov 2006 20:18:42 +0000 (20:18 +0000)
gcc/
* config/arm/arm.c (arm_elf_asm_constructor): Remove ATTRIBUTE_UNUSED
from priority argument.  Use different section for non-default
priority.
* config/arm/elf.h: Remove definition of SUPPORTS_INIT_PRIORITY.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118425 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/arm/arm.c
gcc/config/arm/elf.h

index 92b9048..a88142b 100644 (file)
@@ -1,3 +1,11 @@
+2006-11-02  Paul Brook  <paul@codesourcery.com>
+
+       gcc/
+       * config/arm/arm.c (arm_elf_asm_constructor): Remove ATTRIBUTE_UNUSED
+       from priority argument.  Use different section for non-default
+       priority.
+       * config/arm/elf.h: Remove definition of SUPPORTS_INIT_PRIORITY.
+
 2006-11-02  Eric Botcazou  <ebotcazou@adacore.com>
 
        PR other/29639
index 1d646c7..7c82fcf 100644 (file)
@@ -11349,8 +11349,10 @@ arm_assemble_integer (rtx x, unsigned int size, int aligned_p)
 /* Add a function to the list of static constructors.  */
 
 static void
-arm_elf_asm_constructor (rtx symbol, int priority ATTRIBUTE_UNUSED)
+arm_elf_asm_constructor (rtx symbol, int priority)
 {
+  section *s;
+
   if (!TARGET_AAPCS_BASED)
     {
       default_named_section_asm_out_constructor (symbol, priority);
@@ -11358,7 +11360,16 @@ arm_elf_asm_constructor (rtx symbol, int priority ATTRIBUTE_UNUSED)
     }
 
   /* Put these in the .init_array section, using a special relocation.  */
-  switch_to_section (ctors_section);
+  if (priority != DEFAULT_INIT_PRIORITY)
+    {
+      char buf[18];
+      sprintf (buf, ".init_array.%.5u", priority);
+      s = get_section (buf, SECTION_WRITE, NULL_TREE);
+    }
+  else
+    s = ctors_section;
+
+  switch_to_section (s);
   assemble_align (POINTER_SIZE);
   fputs ("\t.word\t", asm_out_file);
   output_addr_const (asm_out_file, symbol);
index ae3d533..03e57db 100644 (file)
     }                                                  \
   while (0)
 
-/* The EABI doesn't provide a way of implementing init_priority.  */
-#define SUPPORTS_INIT_PRIORITY (!TARGET_AAPCS_BASED)