From df816ae6e879bd378168fcfa220d125a446b0f5b Mon Sep 17 00:00:00 2001 From: pbrook Date: Thu, 2 Nov 2006 20:18:42 +0000 Subject: [PATCH] 2006-11-02 Paul Brook 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 | 8 ++++++++ gcc/config/arm/arm.c | 15 +++++++++++++-- gcc/config/arm/elf.h | 2 -- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 92b9048f937..a88142b2b52 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2006-11-02 Paul Brook + + 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 PR other/29639 diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 1d646c72692..7c82fcf4036 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -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); diff --git a/gcc/config/arm/elf.h b/gcc/config/arm/elf.h index ae3d5338d8f..03e57db8bf9 100644 --- a/gcc/config/arm/elf.h +++ b/gcc/config/arm/elf.h @@ -149,5 +149,3 @@ } \ while (0) -/* The EABI doesn't provide a way of implementing init_priority. */ -#define SUPPORTS_INIT_PRIORITY (!TARGET_AAPCS_BASED) -- 2.11.4.GIT