aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2003-04-16 23:44:15 -0700
committerRichard Henderson <rth@gcc.gnu.org>2003-04-16 23:44:15 -0700
commit90a63880dd0075e4841579daf30006030ba39ab1 (patch)
treeffef96af089699b255c31094d0ce68fb469e9d9d /gcc/config
parent5c93e01bbc74be5af2771fedfbff346d2aa0b7bb (diff)
downloadgcc-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.c26
-rw-r--r--gcc/config/frv/frv.h26
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. */