diff options
author | John David Anglin <dave.anglin@nrc.ca> | 2003-01-04 21:13:45 +0000 |
---|---|---|
committer | John David Anglin <danglin@gcc.gnu.org> | 2003-01-04 21:13:45 +0000 |
commit | 35d434edd9dcf9eb613c65ad3ed05c73a9a08bcd (patch) | |
tree | 9c480a988710c414dca64ed2b9737871dd52015e /gcc/config/pa/pa.c | |
parent | 7057154564514095e32b55937b971f6c34856abe (diff) | |
download | gcc-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.c | 51 |
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 |