diff options
author | Richard Henderson <rth@redhat.com> | 2003-04-16 23:44:15 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2003-04-16 23:44:15 -0700 |
commit | 90a63880dd0075e4841579daf30006030ba39ab1 (patch) | |
tree | ffef96af089699b255c31094d0ce68fb469e9d9d /gcc/config | |
parent | 5c93e01bbc74be5af2771fedfbff346d2aa0b7bb (diff) | |
download | gcc-90a63880dd0075e4841579daf30006030ba39ab1.zip gcc-90a63880dd0075e4841579daf30006030ba39ab1.tar.gz gcc-90a63880dd0075e4841579daf30006030ba39ab1.tar.bz2 |
frv.c (frv_asm_out_constructor): New.
* config/frv/frv.c (frv_asm_out_constructor): New.
(frv_asm_out_destructor): New.
* config/frv/frv.h (CTORS_SECTION_ASM_OP): New.
(DTORS_SECTION_ASM_OP): New.
(ASM_OUTPUT_CONSTRUCTOR): Remove.
(ASM_OUTPUT_DESTRUCTOR): Remove.
From-SVN: r65724
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/frv/frv.c | 26 | ||||
-rw-r--r-- | gcc/config/frv/frv.h | 26 |
2 files changed, 31 insertions, 21 deletions
diff --git a/gcc/config/frv/frv.c b/gcc/config/frv/frv.c index 430d9b2..7c36783 100644 --- a/gcc/config/frv/frv.c +++ b/gcc/config/frv/frv.c @@ -284,6 +284,8 @@ static bool frv_in_small_data_p PARAMS ((tree)); static void frv_asm_output_mi_thunk PARAMS ((FILE *, tree, HOST_WIDE_INT, HOST_WIDE_INT, tree)); static bool frv_rtx_costs PARAMS ((rtx, int, int, int*)); +static void frv_asm_out_constructor PARAMS ((rtx, int)); +static void frv_asm_out_destructor PARAMS ((rtx, int)); /* Initialize the GCC target structure. */ #undef TARGET_ASM_FUNCTION_PROLOGUE @@ -304,6 +306,10 @@ static bool frv_rtx_costs PARAMS ((rtx, int, int, int*)); #define TARGET_IN_SMALL_DATA_P frv_in_small_data_p #undef TARGET_RTX_COSTS #define TARGET_RTX_COSTS frv_rtx_costs +#undef TARGET_ASM_CONSTRUCTOR +#define TARGET_ASM_CONSTRUCTOR frv_asm_out_constructor +#undef TARGET_ASM_DESTRUCTOR +#define TARGET_ASM_DESTRUCTOR frv_asm_out_destructor #undef TARGET_ASM_OUTPUT_MI_THUNK #define TARGET_ASM_OUTPUT_MI_THUNK frv_asm_output_mi_thunk @@ -9853,3 +9859,23 @@ frv_rtx_costs (x, code, outer_code, total) return false; } } + +static void +frv_asm_out_constructor (symbol, priority) + rtx symbol; + int priority ATTRIBUTE_UNUSED; +{ + ctors_section (); + assemble_align (POINTER_SIZE); + assemble_integer_with_op ("\t.picptr\t", symbol); +} + +static void +frv_asm_out_destructor (symbol, priority) + rtx symbol; + int priority ATTRIBUTE_UNUSED; +{ + dtors_section (); + assemble_align (POINTER_SIZE); + assemble_integer_with_op ("\t.picptr\t", symbol); +} diff --git a/gcc/config/frv/frv.h b/gcc/config/frv/frv.h index 39bc176..4273847 100644 --- a/gcc/config/frv/frv.h +++ b/gcc/config/frv/frv.h @@ -2640,6 +2640,11 @@ __asm__("\n" \ #define INIT_SECTION_ASM_OP "\t.section .init,\"ax\"" #define FINI_SECTION_ASM_OP "\t.section .fini,\"ax\"" +#undef CTORS_SECTION_ASM_OP +#undef DTORS_SECTION_ASM_OP +#define CTORS_SECTION_ASM_OP "\t.section\t.ctors,\"a\"" +#define DTORS_SECTION_ASM_OP "\t.section\t.dtors,\"a\"" + /* A C expression whose value is a string containing the assembler operation to switch to the fixup section that records all initialized pointers in a -fpic program so they can be changed program startup time if the program is loaded @@ -2860,27 +2865,6 @@ do { \ init section is not actually run automatically, but is still useful for collecting the lists of constructors and destructors. */ #define INVOKE__main - -/* Output appropriate code tp call a static constructor. */ -#undef ASM_OUTPUT_CONSTRUCTOR -#define ASM_OUTPUT_CONSTRUCTOR(STREAM,NAME) \ -do { \ - ctors_section (); \ - fprintf (STREAM, "\t.picptr\t"); \ - assemble_name (STREAM, NAME); \ - fprintf (STREAM, "\n"); \ -} while (0) - -/* Output appropriate code tp call a static destructor. */ -#undef ASM_OUTPUT_DESTRUCTOR -#define ASM_OUTPUT_DESTRUCTOR(STREAM,NAME) \ -do { \ - dtors_section (); \ - fprintf (STREAM, "\t.picptr\t"); \ - assemble_name (STREAM, NAME); \ - fprintf (STREAM, "\n"); \ -} while (0) - /* Output of Assembler Instructions. */ |