summaryrefslogtreecommitdiff
path: root/gcc/config/i386/i386.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/i386/i386.c')
-rw-r--r--gcc/config/i386/i386.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 6508625dc78..aae281ca4c3 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -608,9 +608,13 @@ static int ix86_save_reg PARAMS ((int, int));
static void ix86_compute_frame_layout PARAMS ((struct ix86_frame *));
static int ix86_comp_type_attributes PARAMS ((tree, tree));
+#ifdef DO_GLOBAL_CTORS_BODY
+static void ix86_svr3_asm_out_constructor PARAMS ((rtx, int));
+#endif
#if defined(TARGET_ELF) && defined(TARGET_COFF)
static void sco_asm_named_section PARAMS ((const char *, unsigned int,
unsigned int));
+static void sco_asm_out_constructor PARAMS ((rtx, int));
#endif
/* Initialize the GCC target structure. */
@@ -10783,6 +10787,19 @@ ix86_memory_move_cost (mode, class, in)
}
}
+#ifdef DO_GLOBAL_CTORS_BODY
+static void
+ix86_svr3_asm_out_constructor (symbol, priority)
+ rtx symbol;
+ int priority ATTRIBUTE_UNUSED;
+{
+ init_section ();
+ fputs ("\tpushl $", asm_out_file);
+ assemble_name (asm_out_file, XSTR (symbol, 0));
+ fputc ('\n', asm_out_file);
+}
+#endif
+
#if defined(TARGET_ELF) && defined(TARGET_COFF)
static void
sco_asm_named_section (name, flags, align)
@@ -10795,4 +10812,15 @@ sco_asm_named_section (name, flags, align)
else
default_coff_asm_named_section (name, flags, align);
}
+
+static void
+sco_asm_out_constructor (symbol, priority)
+ rtx symbol;
+ int priority;
+{
+ if (TARGET_ELF)
+ default_named_section_asm_out_constrctor (symbol, priority);
+ else
+ ix86_svr3_asm_out_constructor (symbol, priority);
+}
#endif