frv.c (frv_asm_out_constructor): New.
authorRichard Henderson <rth@redhat.com>
Thu, 17 Apr 2003 06:44:15 +0000 (23:44 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 17 Apr 2003 06:44:15 +0000 (23:44 -0700)
        * 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

gcc/ChangeLog
gcc/config/frv/frv.c
gcc/config/frv/frv.h

index 5e859e6f3f9e9300a9917f842b6fdd702e8107ad..4dfbdad9ad1e1fcfaafeff89f09ae4739efbe08d 100644 (file)
@@ -1,3 +1,12 @@
+2003-04-16  Richard Henderson  <rth@redhat.com>
+
+       * 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.
+
 2003-04-16  Richard Henderson  <rth@redhat.com>
 
        * config/cris/cris.c (cris_gotless_symbol, cris_got_symbol): Use
index 430d9b2682ebc56a78f988087c53a9d33a58f3e9..7c36783fdac152efeb37f9d1d6b70db9188c4b7a 100644 (file)
@@ -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));
 \f
 /* 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;
     }
 }
+\f
+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);
+}
index 39bc1769575b5fb1a2f9ff586167e03c969fb127..4273847297c7eaa85f562a30f8a39118bbd75c57 100644 (file)
@@ -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)
-
 \f
 /* Output of Assembler Instructions.  */