aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/pa/pa.c
diff options
context:
space:
mode:
authorJohn David Anglin <dave.anglin@nrc.ca>2003-01-04 21:13:45 +0000
committerJohn David Anglin <danglin@gcc.gnu.org>2003-01-04 21:13:45 +0000
commit35d434edd9dcf9eb613c65ad3ed05c73a9a08bcd (patch)
tree9c480a988710c414dca64ed2b9737871dd52015e /gcc/config/pa/pa.c
parent7057154564514095e32b55937b971f6c34856abe (diff)
downloadgcc-35d434edd9dcf9eb613c65ad3ed05c73a9a08bcd.zip
gcc-35d434edd9dcf9eb613c65ad3ed05c73a9a08bcd.tar.gz
gcc-35d434edd9dcf9eb613c65ad3ed05c73a9a08bcd.tar.bz2
config.gcc (hppa*64*-*-hpux11*): Define extra_parts.
* config.gcc (hppa*64*-*-hpux11*): Define extra_parts. Don't use collect2. * pa-hpux11.h (LDD_SUFFIX, PARSE_LDD_OUTPUT): Undefine. (HAS_INIT_SECTION, LD_INIT_SWITCH, LD_FINI_SWITCH): Define. * pa64-hpux.h (HP_INIT_ARRAY_SECTION_ASM_OP, GNU_INIT_ARRAY_SECTION_ASM_OP, HP_FINI_ARRAY_SECTION_ASM_OP, GNU_FINI_ARRAY_SECTION_ASM_OP): Define. (CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP): Define when not using elfos.h. (EH_FRAME_IN_DATA_SECTION): Delete define. (HAS_INIT_SECTION, LD_INIT_SWITCH, LD_FINI_SWITCH): Undefine. (STARTFILE_SPEC): Use crtbegin.o. (ENDFILE_SPEC): Use crtend.o. (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP, CRT_CALL_STATIC_FUNCTION, SUPPORTS_INIT_PRIORITY, PA_CXA_FINALIZE_STUB, PA_INIT_FINI_HACK, PA_INIT_FRAME_DUMMY_ASM_OP, PA_JV_REGISTERCLASSES_STUB, DTOR_LIST_BEGIN): Define. * pa.c (TARGET_ASM_CONSTRUCTOR): Define. (pa_asm_out_constructor, pa_asm_out_destructor): New functions. * som.h (SUPPORTS_INIT_PRIORITY): Delete define. From-SVN: r60892
Diffstat (limited to 'gcc/config/pa/pa.c')
-rw-r--r--gcc/config/pa/pa.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index 651fc96..2821d46 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -124,6 +124,10 @@ static void pa_globalize_label PARAMS ((FILE *, const char *))
ATTRIBUTE_UNUSED;
static void pa_asm_output_mi_thunk PARAMS ((FILE *, tree, HOST_WIDE_INT,
HOST_WIDE_INT, tree));
+#if !defined(USE_COLLECT2)
+static void pa_asm_out_constructor PARAMS ((rtx, int));
+static void pa_asm_out_destructor PARAMS ((rtx, int));
+#endif
static void copy_fp_args PARAMS ((rtx)) ATTRIBUTE_UNUSED;
static int length_fp_args PARAMS ((rtx)) ATTRIBUTE_UNUSED;
static struct deferred_plabel *get_plabel PARAMS ((const char *))
@@ -209,6 +213,13 @@ static size_t n_deferred_plabels = 0;
#undef TARGET_ASM_CAN_OUTPUT_MI_THUNK
#define TARGET_ASM_CAN_OUTPUT_MI_THUNK default_can_output_mi_thunk_no_vcall
+#if !defined(USE_COLLECT2)
+#undef TARGET_ASM_CONSTRUCTOR
+#define TARGET_ASM_CONSTRUCTOR pa_asm_out_constructor
+#undef TARGET_ASM_DESTRUCTOR
+#define TARGET_ASM_DESTRUCTOR pa_asm_out_destructor
+#endif
+
struct gcc_target targetm = TARGET_INITIALIZER;
void
@@ -6959,6 +6970,46 @@ fmpyaddoperands (operands)
return 1;
}
+#if !defined(USE_COLLECT2)
+static void
+pa_asm_out_constructor (symbol, priority)
+ rtx symbol;
+ int priority;
+{
+ if (!function_label_operand (symbol, VOIDmode))
+ hppa_encode_label (symbol);
+
+#ifdef CTORS_SECTION_ASM_OP
+ default_ctor_section_asm_out_constructor (symbol, priority);
+#else
+# ifdef TARGET_ASM_NAMED_SECTION
+ default_named_section_asm_out_constructor (symbol, priority);
+# else
+ default_stabs_asm_out_constructor (symbol, priority);
+# endif
+#endif
+}
+
+static void
+pa_asm_out_destructor (symbol, priority)
+ rtx symbol;
+ int priority;
+{
+ if (!function_label_operand (symbol, VOIDmode))
+ hppa_encode_label (symbol);
+
+#ifdef DTORS_SECTION_ASM_OP
+ default_dtor_section_asm_out_destructor (symbol, priority);
+#else
+# ifdef TARGET_ASM_NAMED_SECTION
+ default_named_section_asm_out_destructor (symbol, priority);
+# else
+ default_stabs_asm_out_destructor (symbol, priority);
+# endif
+#endif
+}
+#endif
+
/* Returns 1 if the 6 operands specified in OPERANDS are suitable for
use in fmpysub instructions. */
int