Commit f607bc57 by Zack Weinberg

config.gcc: Delete powerpcle-*-solaris2* stanza.

	* config.gcc: Delete powerpcle-*-solaris2* stanza.
	* config/rs6000/eabi.asm, config/rs6000/rs6000.c,
	config/rs6000/rs6000.h, config/rs6000/rs6000.md,
	config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
	config/rs6000/sysv4.h, config/rs6000/t-ppccomm,
	config/rs6000/t-ppcos: Expunge all references to Solaris.

	* config/rs6000/sol-c0.c, config/rs6000/sol2.h: Delete.

	* config/rs6000/rs6000.md: Replace '%$' with '$' in all
	output templates.
	* config/rs6000/rs6000.h: Define DEFAULT_PCC_STRUCT_RETURN to 0,
	and change RETURN_IN_MEMORY to just check AGGREGATE_TYPE_P.

From-SVN: r47232
parent 533f5e0f
2001-11-20 Zack Weinberg <zack@codesourcery.com>
* config.gcc: Delete powerpcle-*-solaris2* stanza.
* config/rs6000/eabi.asm, config/rs6000/rs6000.c,
config/rs6000/rs6000.h, config/rs6000/rs6000.md,
config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
config/rs6000/sysv4.h, config/rs6000/t-ppccomm,
config/rs6000/t-ppcos: Expunge all references to Solaris.
* config/rs6000/sol-c0.c, config/rs6000/sol2.h: Delete.
* config/rs6000/rs6000.md: Replace '%$' with '$' in all
output templates.
* config/rs6000/rs6000.h: Define DEFAULT_PCC_STRUCT_RETURN to 0,
and change RETURN_IN_MEMORY to just check AGGREGATE_TYPE_P.
2001-11-20 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* sh.md: Avoid uninitialized warnings.
......@@ -44,7 +60,7 @@
exit label as necessary.
2001-11-20 Brad Kaiser <bkaiser@acelink.net>
* reload1.c (elimination_effects): Use function_invariant_p
instead of CONSTANT_P when considering register equivalences.
......@@ -296,7 +312,7 @@ Mon Nov 19 07:21:35 2001 Douglas B. Rupp <rupp@gnat.com>
PR c/4448
* gthr-win32.h: (__gthread_objc_thread_exit): Fix variable
name __objc_thread_exit_status so that it matches the
name __objc_thread_exit_status so that it matches the
variable defined in objc/thr.h.
2001-11-18 Craig Rodrigues <rodrigc@gcc.gnu.org>
......@@ -480,11 +496,11 @@ Fri Nov 16 15:22:35 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
2001-11-16 Bernd Schmidt <bernds@redhat.com>
* config/i386/i386.c (ix86_expand_sse_comi): Generate setcc by
* config/i386/i386.c (ix86_expand_sse_comi): Generate setcc by
hand; don't use gen_setcc_2.
(ix86_expand_builtin): Fix pshufw.
* config/i386/i386.md (maskncmpv4sf3, vmmmaskncmpv4sf3): Special
case UNORDERED to emit the right assembler instruction.
case UNORDERED to emit the right assembler instruction.
(mmx_pshufw): Lose operand 2.
(cvtsi2ss): Fix representation.
From Graham Stott:
......@@ -526,25 +542,25 @@ Fri Nov 13 09:06:25 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
2001-11-16 Olivier Hainque <hainque@act-europe.fr>
* except.c: Support for catching a list of types with a single handler
(struct eh_region): Change type and filter to lists for catch regions.
(mark_eh_region): Mark the filter list for GC also.
(expand_start_catch): Always build a list if argument not NULL and
register each type of the list through add_type_for_runtime.
(duplicate_eh_region_1): Change type into type_list for catch regions.
(assign_filter_values): Assign a filter to each type associated with a
catch region. Assign filter for NULL types in a unique entry in the
filter list.
(build_post_landing_pads): Emit compare and jump for each filter of
the list associated with a catch region.
(reachable_next_level): When the type thrown is known, stop the search
as soon as one type within a catch list matches. Also, a handler is
potentially reachable only if at least one of the types it catches
has not been previously caught.
(collect_one_action_chain): Retrieve the filter for a NULL type list
from the first filter list entry. For non NULL type lists, add an
action record for every filter assigned.
* except.h: Reflect changes in comment before expand_start_catch.
* except.c: Support for catching a list of types with a single handler
(struct eh_region): Change type and filter to lists for catch regions.
(mark_eh_region): Mark the filter list for GC also.
(expand_start_catch): Always build a list if argument not NULL and
register each type of the list through add_type_for_runtime.
(duplicate_eh_region_1): Change type into type_list for catch regions.
(assign_filter_values): Assign a filter to each type associated with a
catch region. Assign filter for NULL types in a unique entry in the
filter list.
(build_post_landing_pads): Emit compare and jump for each filter of
the list associated with a catch region.
(reachable_next_level): When the type thrown is known, stop the search
as soon as one type within a catch list matches. Also, a handler is
potentially reachable only if at least one of the types it catches
has not been previously caught.
(collect_one_action_chain): Retrieve the filter for a NULL type list
from the first filter list entry. For non NULL type lists, add an
action record for every filter assigned.
* except.h: Reflect changes in comment before expand_start_catch.
Fri Nov 16 07:12:51 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
......@@ -683,7 +699,7 @@ Thu Nov 15 08:36:39 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
(m88k-dg-dguxbcs*): Add m88k/t-dgux to tmake_file.
(hppa*): Add pa/t-bsd to tmake_file where no special xmake_file is
used.
(hppa*-*-openbsd*): Don't use nonexitent pa/t-openbsd.
(hppa*-*-openbsd*): Don't use nonexitent pa/t-openbsd.
* config/m88k/t-dguxbcs: Remove definitions already in t-dgux.
* config/m88k/t-dgux (STMP_FIXPROTO): Define.
* config/i386/t-cygwin (STMP_FIXPROTO): Define.
......@@ -1491,7 +1507,7 @@ Fri Nov 9 17:51:09 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
2001-11-09 Aldy Hernandez <aldyh@redhat.com>
* rs6000.h (REG_CLASS_CONTENTS): Add VRSAVE bit to ALL_REGS.
* rs6000.h (REG_CLASS_CONTENTS): Add VRSAVE bit to ALL_REGS.
(CONDITIONAL_REGISTER_USAGE): Disable AltiVec registers unless
generating altivec code.
(FIXED_REGISTERS): VRSAVE is fixed.
......@@ -1529,7 +1545,7 @@ Fri Nov 9 11:27:42 2001 Jeffrey A Law (law@cygnus.com)
2001-11-09 Ben Elliston <bje@redhat.com>
Michael Meissner <meissner@redhat.com>
Andrew MacLeod <amacleod@redhat.com>
Andrew MacLeod <amacleod@redhat.com>
Richard Henderson <rth@redhat.com>
Nick Clifton <nickc@redhat.com>
Catherine Moore <clm@redhat.com>
......@@ -1665,7 +1681,7 @@ Thu Nov 8 18:00:55 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
2001-11-08 Aldy Hernandez <aldyh@redhat.com>
* config/rs6000/rs6000.h (ASM_CPU_SPEC): Add -maltivec.
* config/rs6000/rs6000.h (ASM_CPU_SPEC): Add -maltivec.
2001-11-08 Jakub Jelinek <jakub@redhat.com>
......@@ -1983,25 +1999,25 @@ Thu Nov 8 18:00:55 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
2001-11-07 Daniel Berlin <dan@cgsoftware.com>
* Makefile.in (df.o): Add fibheap.h to dependencies.
* df.h: Add prototypes for transfer functions, iterative_dataflow
functions.
(enum df_flow_dir): New enum.
(enum df_confluence_op): New enum.
(struct df): Add inverse_rts_map.
* df.c: Add sbitmap.h to the list of includes.
(df_rd_global_compute): Removed.
(df_ru_global_compute): Removed.
(df_lr_global_compute): Removed.
(df_rd_transfer_function): New function.
(df_ru_transfer_function): New function.
(df_lr_transfer_function): New function.
(df_analyse_1): allocate/compute/free df->inverse_rts_map.
Use iterative_dataflow_bitmap instead of df_*_global_compute.
(iterative_dataflow_sbitmap): New function.
(iterative_dataflow_bitmap): New function.
* Makefile.in (df.o): Add fibheap.h to dependencies.
* df.h: Add prototypes for transfer functions, iterative_dataflow
functions.
(enum df_flow_dir): New enum.
(enum df_confluence_op): New enum.
(struct df): Add inverse_rts_map.
* df.c: Add sbitmap.h to the list of includes.
(df_rd_global_compute): Removed.
(df_ru_global_compute): Removed.
(df_lr_global_compute): Removed.
(df_rd_transfer_function): New function.
(df_ru_transfer_function): New function.
(df_lr_transfer_function): New function.
(df_analyse_1): allocate/compute/free df->inverse_rts_map.
Use iterative_dataflow_bitmap instead of df_*_global_compute.
(iterative_dataflow_sbitmap): New function.
(iterative_dataflow_bitmap): New function.
2001-11-07 Joseph S. Myers <jsm28@cam.ac.uk>
......
......@@ -2745,12 +2745,6 @@ powerpcle-*-eabi*)
tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
extra_headers=ppc-asm.h
;;
powerpcle-*-solaris2*)
tm_file="${tm_file} elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/sol2.h"
xm_defines=POSIX
tmake_file="rs6000/t-ppcos rs6000/t-ppccomm"
extra_headers=ppc-asm.h
;;
rs6000-ibm-aix3.[01]*)
xm_defines=POSIX
tm_file="${tm_file} rs6000/aix.h rs6000/aix31.h rs6000/xcoff.h"
......
......@@ -131,8 +131,7 @@
FUNC_START(__eabi)
/* Eliminate -mrelocatable code if not -mrelocatable, so that this file can
be assembled with other assemblers than GAS, such as the Solaris PowerPC
assembler. */
be assembled with other assemblers than GAS. */
#ifndef _RELOCATABLE
addis 10,0,.Linit_p@ha /* init flag */
......
......@@ -1030,7 +1030,7 @@ easy_fp_constant (op, mode)
return 1;
/* If we are using V.4 style PIC, consider all constants to be hard. */
if (flag_pic && (DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS))
if (flag_pic && DEFAULT_ABI == ABI_V4)
return 0;
#ifdef TARGET_RELOCATABLE
......@@ -1457,7 +1457,7 @@ input_operand (op, mode)
/* V.4 allows SYMBOL_REFs and CONSTs that are in the small data region
to be valid. */
if ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
if (DEFAULT_ABI == ABI_V4
&& (GET_CODE (op) == SYMBOL_REF || GET_CODE (op) == CONST)
&& small_data_operand (op, Pmode))
return 1;
......@@ -1478,7 +1478,7 @@ small_data_operand (op, mode)
if (rs6000_sdata == SDATA_NONE || rs6000_sdata == SDATA_DATA)
return 0;
if (DEFAULT_ABI != ABI_V4 && DEFAULT_ABI != ABI_SOLARIS)
if (DEFAULT_ABI != ABI_V4)
return 0;
if (GET_CODE (op) == SYMBOL_REF)
......@@ -1968,7 +1968,7 @@ rs6000_emit_move (dest, source, mode)
/* Use default pattern for address of ELF small data */
if (TARGET_ELF
&& mode == Pmode
&& (DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
&& DEFAULT_ABI == ABI_V4
&& (GET_CODE (operands[1]) == SYMBOL_REF
|| GET_CODE (operands[1]) == CONST)
&& small_data_operand (operands[1], mode))
......@@ -1977,7 +1977,7 @@ rs6000_emit_move (dest, source, mode)
return;
}
if ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
if (DEFAULT_ABI == ABI_V4
&& mode == Pmode && mode == SImode
&& flag_pic == 1 && got_operand (operands[1], mode))
{
......@@ -2241,8 +2241,7 @@ function_arg_boundary (mode, type)
enum machine_mode mode;
tree type ATTRIBUTE_UNUSED;
{
if ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
&& (mode == DImode || mode == DFmode))
if (DEFAULT_ABI == ABI_V4 && (mode == DImode || mode == DFmode))
return 64;
else if (TARGET_ALTIVEC_ABI && ALTIVEC_VECTOR_MODE (mode))
return 128;
......@@ -2270,7 +2269,7 @@ function_arg_advance (cum, mode, type, named)
else
cum->words += RS6000_ARG_SIZE (mode, type);
}
else if (DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
else if (DEFAULT_ABI == ABI_V4)
{
if (TARGET_HARD_FLOAT
&& (mode == SFmode || mode == DFmode))
......@@ -2384,7 +2383,7 @@ function_arg (cum, mode, type, named)
or compiler generated library calls. */
if (mode == VOIDmode)
{
if ((abi == ABI_V4 || abi == ABI_SOLARIS)
if (abi == ABI_V4
&& TARGET_HARD_FLOAT
&& cum->nargs_prototype < 0
&& type && (cum->prototype || TARGET_NO_PROTOTYPE))
......@@ -2405,7 +2404,7 @@ function_arg (cum, mode, type, named)
else
return NULL;
}
else if (abi == ABI_V4 || abi == ABI_SOLARIS)
else if (abi == ABI_V4)
{
if (TARGET_HARD_FLOAT
&& (mode == SFmode || mode == DFmode))
......@@ -2497,7 +2496,7 @@ function_arg_partial_nregs (cum, mode, type, named)
tree type;
int named ATTRIBUTE_UNUSED;
{
if (DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
if (DEFAULT_ABI == ABI_V4)
return 0;
if (USE_FP_FOR_ARG_P (*cum, mode, type)
......@@ -2535,7 +2534,7 @@ function_arg_pass_by_reference (cum, mode, type, named)
tree type;
int named ATTRIBUTE_UNUSED;
{
if ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
if (DEFAULT_ABI == ABI_V4
&& ((type && AGGREGATE_TYPE_P (type))
|| mode == TFmode))
{
......@@ -2589,7 +2588,7 @@ setup_incoming_varargs (cum, mode, type, pretend_size, no_rtl)
if (stdarg_p)
function_arg_advance (&next_cum, mode, type, 1);
if (DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
if (DEFAULT_ABI == ABI_V4)
{
/* Indicate to allocate space on the stack for varargs save area. */
/* ??? Does this really have to be located at a magic spot on the
......@@ -2630,7 +2629,7 @@ setup_incoming_varargs (cum, mode, type, pretend_size, no_rtl)
}
/* Save FP registers if needed. */
if ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
if (DEFAULT_ABI == ABI_V4
&& TARGET_HARD_FLOAT && ! no_rtl
&& next_cum.fregno <= FP_ARG_V4_MAX_REG)
{
......@@ -2669,7 +2668,7 @@ rs6000_build_va_list ()
/* For AIX, prefer 'char *' because that's what the system
header files like. */
if (DEFAULT_ABI != ABI_V4 && DEFAULT_ABI != ABI_SOLARIS)
if (DEFAULT_ABI != ABI_V4)
return build_pointer_type (char_type_node);
record = make_lang_type (RECORD_TYPE);
......@@ -2715,7 +2714,7 @@ rs6000_va_start (stdarg_p, valist, nextarg)
tree gpr, fpr, ovf, sav, t;
/* Only SVR4 needs something special. */
if (DEFAULT_ABI != ABI_V4 && DEFAULT_ABI != ABI_SOLARIS)
if (DEFAULT_ABI != ABI_V4)
{
std_expand_builtin_va_start (stdarg_p, valist, nextarg);
return;
......@@ -2790,7 +2789,7 @@ rs6000_va_arg (valist, type)
structures which are the same size as integer types are passed
right-aligned, as if they were in fact integers. This only
matters for structures of size 1 or 2, or 4 when TARGET_64BIT. */
if (DEFAULT_ABI != ABI_V4 && DEFAULT_ABI != ABI_SOLARIS)
if (DEFAULT_ABI != ABI_V4)
{
HOST_WIDE_INT align, rounded_size;
enum machine_mode mode;
......@@ -4714,12 +4713,6 @@ print_operand (file, x, code)
asm_fprintf (file, RS6000_CALL_GLUE);
return;
case '$':
/* Write out either a '.' or '$' for the current location, depending
on whether this is Solaris or not. */
putc ((DEFAULT_ABI == ABI_SOLARIS) ? '.' : '$', file);
return;
/* %a is output_address. */
case 'A':
......@@ -5169,13 +5162,7 @@ print_operand (file, x, code)
output_operand_lossage ("invalid %%v value");
else
{
int value = (INT_LOWPART (x) >> 16) & 0xffff;
/* Solaris assembler doesn't like lis 0,0x8000 */
if (DEFAULT_ABI == ABI_SOLARIS && (value & 0x8000) != 0)
fprintf (file, "%d", value | (~0 << 16));
else
fprintf (file, "0x%x", value);
fprintf (file, "0x%x", (INT_LOWPART (x) >> 16) & 0xffff);
return;
}
......@@ -5314,7 +5301,6 @@ print_operand (file, x, code)
case ABI_V4:
case ABI_AIX_NODESC:
case ABI_SOLARIS:
case ABI_DARWIN:
break;
}
......@@ -5895,10 +5881,8 @@ first_reg_to_save ()
if (regs_ever_live[first_reg]
&& (! call_used_regs[first_reg]
|| (first_reg == PIC_OFFSET_TABLE_REGNUM
&& (((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
&& flag_pic == 1)
|| (DEFAULT_ABI == ABI_DARWIN
&& flag_pic)))))
&& ((DEFAULT_ABI == ABI_V4 && flag_pic == 1)
|| (DEFAULT_ABI == ABI_DARWIN && flag_pic)))))
break;
if (profile_flag)
......@@ -6166,10 +6150,8 @@ rs6000_stack_info ()
/* Assume that we will have to save PIC_OFFSET_TABLE_REGNUM,
even if it currently looks like we won't. */
if (((TARGET_TOC && TARGET_MINIMAL_TOC)
|| (flag_pic == 1
&& (abi == ABI_V4 || abi == ABI_SOLARIS))
|| (flag_pic &&
abi == ABI_DARWIN))
|| (flag_pic == 1 && abi == ABI_V4)
|| (flag_pic && abi == ABI_DARWIN))
&& info_ptr->first_gp_reg_save > PIC_OFFSET_TABLE_REGNUM)
info_ptr->gp_size = reg_size * (32 - PIC_OFFSET_TABLE_REGNUM);
else
......@@ -6196,7 +6178,6 @@ rs6000_stack_info ()
&& !FP_SAVE_INLINE (info_ptr->first_fp_reg_save))
|| info_ptr->first_altivec_reg_save <= LAST_ALTIVEC_REGNO
|| (abi == ABI_V4 && current_function_calls_alloca)
|| (abi == ABI_SOLARIS && current_function_calls_alloca)
|| (DEFAULT_ABI == ABI_DARWIN
&& flag_pic
&& current_function_uses_pic_offset_table)
......@@ -6212,7 +6193,7 @@ rs6000_stack_info ()
|| regs_ever_live[CR4_REGNO])
{
info_ptr->cr_save_p = 1;
if (abi == ABI_V4 || abi == ABI_SOLARIS)
if (abi == ABI_V4)
info_ptr->cr_size = reg_size;
}
......@@ -6288,7 +6269,6 @@ rs6000_stack_info ()
break;
case ABI_V4:
case ABI_SOLARIS:
info_ptr->fp_save_offset = - info_ptr->fp_size;
info_ptr->gp_save_offset = info_ptr->fp_save_offset - info_ptr->gp_size;
info_ptr->cr_save_offset = info_ptr->gp_save_offset - info_ptr->cr_size;
......@@ -6358,7 +6338,7 @@ rs6000_stack_info ()
if (info_ptr->calls_p)
info_ptr->push_p = 1;
else if (abi == ABI_V4 || abi == ABI_SOLARIS)
else if (abi == ABI_V4)
info_ptr->push_p = (total_raw_size > info_ptr->fixed_size
|| info_ptr->calls_p);
......@@ -6411,11 +6391,10 @@ debug_stack_info (info)
{
default: abi_string = "Unknown"; break;
case ABI_NONE: abi_string = "NONE"; break;
case ABI_AIX: abi_string = "AIX"; break;
case ABI_AIX:
case ABI_AIX_NODESC: abi_string = "AIX"; break;
case ABI_DARWIN: abi_string = "Darwin"; break;
case ABI_V4: abi_string = "V.4"; break;
case ABI_SOLARIS: abi_string = "Solaris"; break;
}
fprintf (stderr, "\tABI = %5s\n", abi_string);
......@@ -6599,8 +6578,7 @@ rs6000_emit_load_toc_table (fromprolog)
if (TARGET_ELF && DEFAULT_ABI != ABI_AIX)
{
if ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
&& flag_pic == 1)
if (DEFAULT_ABI == ABI_V4 && flag_pic == 1)
{
rtx temp = (fromprolog
? gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM)
......@@ -6906,7 +6884,7 @@ rs6000_emit_allocate_stack (size, copy_r12)
}
else if (GET_CODE (stack_limit_rtx) == SYMBOL_REF
&& TARGET_32BIT
&& (DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS))
&& DEFAULT_ABI == ABI_V4)
{
rtx toload = gen_rtx_CONST (VOIDmode,
gen_rtx_PLUS (Pmode,
......@@ -7095,7 +7073,7 @@ rs6000_emit_prologue ()
|| FP_SAVE_INLINE (info->first_fp_reg_save));
/* For V.4, update stack before we do any saving and set back pointer. */
if (info->push_p && (DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS))
if (info->push_p && DEFAULT_ABI == ABI_V4)
{
if (info->total_size < 32767)
sp_offset = info->total_size;
......@@ -7213,10 +7191,8 @@ rs6000_emit_prologue ()
if ((regs_ever_live[info->first_gp_reg_save+i]
&& ! call_used_regs[info->first_gp_reg_save+i])
|| (i+info->first_gp_reg_save == PIC_OFFSET_TABLE_REGNUM
&& (((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
&& flag_pic == 1)
|| (DEFAULT_ABI == ABI_DARWIN
&& flag_pic))))
&& ((DEFAULT_ABI == ABI_V4 && flag_pic == 1)
|| (DEFAULT_ABI == ABI_DARWIN && flag_pic))))
{
rtx addr, reg, mem;
reg = gen_rtx_REG (reg_mode, info->first_gp_reg_save + i);
......@@ -7305,7 +7281,7 @@ rs6000_emit_prologue ()
/* Update stack and set back pointer unless this is V.4,
for which it was done previously. */
if (info->push_p && DEFAULT_ABI != ABI_V4 && DEFAULT_ABI != ABI_SOLARIS)
if (info->push_p && DEFAULT_ABI != ABI_V4)
rs6000_emit_allocate_stack (info->total_size, FALSE);
/* Save AltiVec registers if needed. */
......@@ -7382,8 +7358,8 @@ rs6000_emit_prologue ()
/* If we are using PIC_OFFSET_TABLE_REGNUM, we need to set it up. */
if ((TARGET_TOC && TARGET_MINIMAL_TOC && get_pool_size () != 0)
|| ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
&& flag_pic == 1 && regs_ever_live[PIC_OFFSET_TABLE_REGNUM]))
|| (DEFAULT_ABI == ABI_V4 && flag_pic == 1
&& regs_ever_live[PIC_OFFSET_TABLE_REGNUM]))
{
/* If emit_load_toc_table will use the link register, we need to save
it. We use R11 for this purpose because emit_load_toc_table
......@@ -7513,7 +7489,7 @@ rs6000_emit_epilogue (sibcall)
{
/* Under V.4, don't reset the stack pointer until after we're done
loading the saved registers. */
if (DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
if (DEFAULT_ABI == ABI_V4)
frame_reg_rtx = gen_rtx_REG (Pmode, 11);
emit_move_insn (frame_reg_rtx,
......@@ -7522,7 +7498,7 @@ rs6000_emit_epilogue (sibcall)
}
else if (info->push_p)
{
if (DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
if (DEFAULT_ABI == ABI_V4)
sp_offset = info->total_size;
else
{
......@@ -7614,10 +7590,8 @@ rs6000_emit_epilogue (sibcall)
if ((regs_ever_live[info->first_gp_reg_save+i]
&& ! call_used_regs[info->first_gp_reg_save+i])
|| (i+info->first_gp_reg_save == PIC_OFFSET_TABLE_REGNUM
&& (((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
&& flag_pic == 1)
|| (DEFAULT_ABI == ABI_DARWIN
&& flag_pic))))
&& ((DEFAULT_ABI == ABI_V4 && flag_pic == 1)
|| (DEFAULT_ABI == ABI_DARWIN && flag_pic))))
{
rtx addr = gen_rtx_PLUS (Pmode, frame_reg_rtx,
GEN_INT (info->gp_save_offset
......@@ -7745,7 +7719,7 @@ rs6000_emit_epilogue (sibcall)
(which may not have any obvious dependency on the stack). This
doesn't hurt performance, because there is no scheduling that can
be done after this point. */
if (DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
if (DEFAULT_ABI == ABI_V4)
{
if (frame_reg_rtx != sp_reg_rtx)
rs6000_emit_stack_tie ();
......@@ -8167,7 +8141,6 @@ output_mi_thunk (file, thunk_fndecl, delta, function)
case ABI_V4:
case ABI_AIX_NODESC:
case ABI_SOLARIS:
prefix = "";
break;
}
......@@ -8230,7 +8203,6 @@ output_mi_thunk (file, thunk_fndecl, delta, function)
break;
case ABI_AIX_NODESC:
case ABI_SOLARIS:
case ABI_V4:
fprintf (file, "\tb %s", prefix);
assemble_name (file, fname);
......@@ -8892,7 +8864,6 @@ output_function_profiler (file, labelno)
abort ();
case ABI_V4:
case ABI_SOLARIS:
case ABI_AIX_NODESC:
fprintf (file, "\tmflr %s\n", reg_names[0]);
if (flag_pic == 1)
......@@ -9087,7 +9058,6 @@ rs6000_trampoline_size ()
break;
case ABI_V4:
case ABI_SOLARIS:
case ABI_AIX_NODESC:
ret = (TARGET_32BIT) ? 40 : 48;
break;
......@@ -9135,7 +9105,6 @@ rs6000_initialize_trampoline (addr, fnaddr, cxt)
/* Under V.4/eabi, call __trampoline_setup to do the real work. */
case ABI_V4:
case ABI_SOLARIS:
case ABI_AIX_NODESC:
emit_library_call (gen_rtx_SYMBOL_REF (SImode, "__trampoline_setup"),
FALSE, VOIDmode, 4,
......@@ -9380,7 +9349,7 @@ rs6000_encode_section_info (decl)
}
}
else if (rs6000_sdata != SDATA_NONE
&& (DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
&& DEFAULT_ABI == ABI_V4
&& TREE_CODE (decl) == VAR_DECL)
{
int size = int_size_in_bytes (TREE_TYPE (decl));
......@@ -9812,9 +9781,6 @@ rs6000_elf_section_type_flags (decl, name, reloc)
if (TARGET_RELOCATABLE)
flags |= SECTION_WRITE;
/* Solaris doesn't like @nobits, and gas can handle .sbss without it. */
flags &= ~SECTION_BSS;
return flags;
}
......
......@@ -445,7 +445,7 @@ extern struct rs6000_cpu_select rs6000_select[];
/* Debug support */
extern const char *rs6000_debug_name; /* Name for -mdebug-xxxx option */
extern const char *rs6000_abi_string; /* for -mabi={sysv,darwin,solaris,eabi,aix,altivec} */
extern const char *rs6000_abi_string; /* for -mabi={sysv,darwin,eabi,aix,altivec} */
extern int rs6000_debug_stack; /* debug stack applications */
extern int rs6000_debug_arg; /* debug argument handling */
......@@ -932,8 +932,7 @@ extern int rs6000_debug_arg; /* debug argument handling */
if (TARGET_SOFT_FLOAT) \
for (i = 32; i < 64; i++) \
fixed_regs[i] = call_used_regs[i] = 1; \
if ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS) \
&& flag_pic == 1) \
if (DEFAULT_ABI == ABI_V4 && flag_pic == 1) \
fixed_regs[PIC_OFFSET_TABLE_REGNUM] \
= call_used_regs[PIC_OFFSET_TABLE_REGNUM] = 1; \
if (DEFAULT_ABI == ABI_DARWIN && flag_pic) \
......@@ -1181,7 +1180,7 @@ enum reg_class
: (C) == 'R' ? LEGITIMATE_CONSTANT_POOL_ADDRESS_P (OP) \
: (C) == 'S' ? mask64_operand (OP, VOIDmode) \
: (C) == 'T' ? mask_operand (OP, VOIDmode) \
: (C) == 'U' ? ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS) \
: (C) == 'U' ? (DEFAULT_ABI == ABI_V4 \
&& small_data_operand (OP, GET_MODE (OP))) \
: 0)
......@@ -1254,9 +1253,9 @@ enum reg_class
enum rs6000_abi {
ABI_NONE,
ABI_AIX, /* IBM's AIX */
ABI_AIX_NODESC, /* AIX calling sequence minus function descriptors */
ABI_AIX_NODESC, /* AIX calling sequence minus
function descriptors */
ABI_V4, /* System V.4/eabi */
ABI_SOLARIS, /* Solaris */
ABI_DARWIN /* Apple's Darwin (OS X kernel) */
};
......@@ -1437,12 +1436,14 @@ typedef struct rs6000_stack {
/* The definition of this macro implies that there are cases where
a scalar value cannot be returned in registers.
For the RS/6000, any structure or union type is returned in memory, except for
Solaris, which returns structures <= 8 bytes in registers. */
For the RS/6000, any structure or union type is returned in memory.
(FIXME: Except for V.4, where those <= 8 bytes are returned in
registers. Can't change this without breaking compatibility.) */
#define RETURN_IN_MEMORY(TYPE) \
(TYPE_MODE (TYPE) == BLKmode \
&& (DEFAULT_ABI != ABI_SOLARIS || int_size_in_bytes (TYPE) > 8))
#define RETURN_IN_MEMORY(TYPE) AGGREGATE_TYPE_P (TYPE)
/* Let RETURN_IN_MEMORY control what happens. */
#define DEFAULT_PCC_STRUCT_RETURN 0
/* Mode of stack savearea.
FUNCTION is VOIDmode because calling convention maintains SP.
......@@ -1730,8 +1731,7 @@ typedef struct rs6000_args
((DEFAULT_ABI == ABI_AIX \
|| DEFAULT_ABI == ABI_DARWIN \
|| DEFAULT_ABI == ABI_AIX_NODESC) ? (TARGET_32BIT ? 8 : 16) : \
(DEFAULT_ABI == ABI_V4 \
|| DEFAULT_ABI == ABI_SOLARIS) ? (TARGET_32BIT ? 4 : 8) : \
(DEFAULT_ABI == ABI_V4) ? (TARGET_32BIT ? 4 : 8) : \
(internal_error ("RETURN_ADDRESS_OFFSET not supported"), 0))
/* The current return address is in link register (65). The return address
......@@ -1913,7 +1913,7 @@ typedef struct rs6000_args
&& CONSTANT_POOL_EXPR_P (XEXP (X, 1)))
#define LEGITIMATE_SMALL_DATA_P(MODE, X) \
((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS) \
(DEFAULT_ABI == ABI_V4 \
&& !flag_pic && !TARGET_TOC \
&& (GET_CODE (X) == SYMBOL_REF || GET_CODE (X) == CONST) \
&& small_data_operand (X, MODE))
......
......@@ -7385,7 +7385,7 @@
[(set (match_operand:SI 0 "gpc_reg_operand" "")
(unspec:SI [(match_operand:SI 1 "got_operand" "")
(match_dup 2)] 8))]
"(DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS) && flag_pic == 1"
"DEFAULT_ABI == ABI_V4 && flag_pic == 1"
"
{
if (GET_CODE (operands[1]) == CONST)
......@@ -7411,7 +7411,7 @@
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(unspec:SI [(match_operand:SI 1 "got_no_const_operand" "")
(match_operand:SI 2 "gpc_reg_operand" "b")] 8))]
"(DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS) && flag_pic == 1"
"DEFAULT_ABI == ABI_V4 && flag_pic == 1"
"{l|lwz} %0,%a1@got(%2)"
[(set_attr "type" "load")])
......@@ -7421,7 +7421,7 @@
[(set (match_operand:SI 0 "gpc_reg_operand" "")
(unspec:SI [(match_operand:SI 1 "got_no_const_operand" "")
(match_operand:SI 2 "memory_operand" "")] 8))]
"(DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
"DEFAULT_ABI == ABI_V4
&& flag_pic == 1
&& (reload_in_progress || reload_completed)"
[(set (match_dup 0) (match_dup 2))
......@@ -9288,8 +9288,7 @@
(define_insn "load_toc_v4_pic_si"
[(set (match_operand:SI 0 "register_operand" "=l")
(unspec:SI [(const_int 0)] 7))]
"(DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS) && flag_pic == 1
&& TARGET_32BIT"
"DEFAULT_ABI == ABI_V4 && flag_pic == 1 && TARGET_32BIT"
"bl _GLOBAL_OFFSET_TABLE_@local-4"
[(set_attr "type" "branch")
(set_attr "length" "4")])
......@@ -9342,7 +9341,7 @@
(define_expand "builtin_setjmp_receiver"
[(use (label_ref (match_operand 0 "" "")))]
"((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS) && flag_pic == 1)
"(DEFAULT_ABI == ABI_V4 && flag_pic == 1)
|| (TARGET_TOC && TARGET_MINIMAL_TOC)"
"
{
......@@ -9473,8 +9472,7 @@
if (DEFAULT_ABI == ABI_V4
|| DEFAULT_ABI == ABI_AIX_NODESC
|| DEFAULT_ABI == ABI_DARWIN
|| DEFAULT_ABI == ABI_SOLARIS)
|| DEFAULT_ABI == ABI_DARWIN)
operands[0] = force_reg (Pmode, operands[0]);
else if (DEFAULT_ABI == ABI_AIX)
......@@ -9522,8 +9520,7 @@
if (DEFAULT_ABI == ABI_V4
|| DEFAULT_ABI == ABI_AIX_NODESC
|| DEFAULT_ABI == ABI_DARWIN
|| DEFAULT_ABI == ABI_SOLARIS)
|| DEFAULT_ABI == ABI_DARWIN)
operands[0] = force_reg (Pmode, operands[0]);
else if (DEFAULT_ABI == ABI_AIX)
......@@ -9755,8 +9752,7 @@
(clobber (match_scratch:SI 3 "=l,l,l,l"))]
"DEFAULT_ABI == ABI_AIX_NODESC
|| DEFAULT_ABI == ABI_V4
|| DEFAULT_ABI == ABI_DARWIN
|| DEFAULT_ABI == ABI_SOLARIS"
|| DEFAULT_ABI == ABI_DARWIN"
"*
{
if (INTVAL (operands[2]) & CALL_V4_SET_FP_ARGS)
......@@ -9788,8 +9784,7 @@
(clobber (match_scratch:SI 4 "=l,l,l,l"))]
"DEFAULT_ABI == ABI_AIX_NODESC
|| DEFAULT_ABI == ABI_V4
|| DEFAULT_ABI == ABI_DARWIN
|| DEFAULT_ABI == ABI_SOLARIS"
|| DEFAULT_ABI == ABI_DARWIN"
"*
{
if (INTVAL (operands[3]) & CALL_V4_SET_FP_ARGS)
......@@ -12933,7 +12928,7 @@
else if (get_attr_length (insn) == 4)
return \"{bdn|bdnz} %l0\";
else
return \"bdz %$+8\;b %l0\";
return \"bdz $+8\;b %l0\";
}"
[(set_attr "type" "branch")
(set_attr "length" "*,12,16")])
......@@ -12957,7 +12952,7 @@
else if (get_attr_length (insn) == 4)
return \"bdz %l0\";
else
return \"{bdn|bdnz} %$+8\;b %l0\";
return \"{bdn|bdnz} $+8\;b %l0\";
}"
[(set_attr "type" "branch")
(set_attr "length" "*,12,16")])
......@@ -12981,7 +12976,7 @@
else if (get_attr_length (insn) == 4)
return \"{bdn|bdnz} %l0\";
else
return \"bdz %$+8\;b %l0\";
return \"bdz $+8\;b %l0\";
}"
[(set_attr "type" "branch")
(set_attr "length" "*,12,16")])
......@@ -13005,7 +13000,7 @@
else if (get_attr_length (insn) == 4)
return \"bdz %l0\";
else
return \"{bdn|bdnz} %$+8\;b %l0\";
return \"{bdn|bdnz} $+8\;b %l0\";
}"
[(set_attr "type" "branch")
(set_attr "length" "*,12,16")])
......@@ -13031,7 +13026,7 @@
else if (get_attr_length (insn) == 4)
return \"{bdn|bdnz} %l0\";
else
return \"bdz %$+8\;b %l0\";
return \"bdz $+8\;b %l0\";
}"
[(set_attr "type" "branch")
(set_attr "length" "*,12,16")])
......@@ -13055,7 +13050,7 @@
else if (get_attr_length (insn) == 4)
return \"bdz %l0\";
else
return \"{bdn|bdnz} %$+8\;b %l0\";
return \"{bdn|bdnz} $+8\;b %l0\";
}"
[(set_attr "type" "branch")
(set_attr "length" "*,12,16")])
......@@ -13079,7 +13074,7 @@
else if (get_attr_length (insn) == 4)
return \"{bdn|bdnz} %l0\";
else
return \"bdz %$+8\;b %l0\";
return \"bdz $+8\;b %l0\";
}"
[(set_attr "type" "branch")
(set_attr "length" "*,12,16")])
......@@ -13103,7 +13098,7 @@
else if (get_attr_length (insn) == 4)
return \"bdz %l0\";
else
return \"{bdn|bdnz} %$+8\;b %l0\";
return \"{bdn|bdnz} $+8\;b %l0\";
}"
[(set_attr "type" "branch")
(set_attr "length" "*,12,16")])
......@@ -13129,7 +13124,7 @@
else if (get_attr_length (insn) == 4)
return \"bdz %l0\";
else
return \"{bdn|bdnz} %$+8\;b %l0\";
return \"{bdn|bdnz} $+8\;b %l0\";
}"
[(set_attr "type" "branch")
(set_attr "length" "*,12,16")])
......@@ -13153,7 +13148,7 @@
else if (get_attr_length (insn) == 4)
return \"{bdn|bdnz} %l0\";
else
return \"bdz %$+8\;b %l0\";
return \"bdz $+8\;b %l0\";
}"
[(set_attr "type" "branch")
(set_attr "length" "*,12,16")])
......@@ -13177,7 +13172,7 @@
else if (get_attr_length (insn) == 4)
return \"bdz %l0\";
else
return \"{bdn|bdnz} %$+8\;b %l0\";
return \"{bdn|bdnz} $+8\;b %l0\";
}"
[(set_attr "type" "branch")
(set_attr "length" "*,12,16")])
......@@ -13201,7 +13196,7 @@
else if (get_attr_length (insn) == 4)
return \"{bdn|bdnz} %l0\";
else
return \"bdz %$+8\;b %l0\";
return \"bdz $+8\;b %l0\";
}"
[(set_attr "type" "branch")
(set_attr "length" "*,12,16")])
......
/* Solaris PowerPC startfile. */
/* Copyright (C) 1996, 2000 Free Software Foundation, Inc.
This file is part of GNU CC.
GNU CC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
In addition to the permissions in the GNU General Public License, the
Free Software Foundation gives you unlimited permission to link the
compiled version of this file into combinations with other programs,
and to distribute those combinations without any restriction coming
from the use of this file. (The General Public License restrictions
do apply in other respects; for example, they cover modification of
the file, and distribution when not linked into a combine
executable.)
GNU CC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
extern char **_environ;
extern int atexit (void (*__func) (void));
extern void __init (void) __attribute__ ((__longcall__));
extern void __fini (void) __attribute__ ((__longcall__));
extern void _start(int argc, char *argv[], char *envp[], void *auxp,
void (*termfunc)(void));
extern void exit(int);
extern int main (int argc, char *argv[], char *envp[], void *auxp);
typedef void (*func_ptr) (void);
int (*__atexit)(func_ptr) = atexit;
/* Exception handling */
struct ex_shared1 {
void *prev;
void *next;
char *text_start;
char *range_start;
char *text_end;
char *range_end;
};
struct ex_shared {
void (*ex_register) (struct ex_shared1 *);
void (*ex_deregister) (struct ex_shared1 *);
struct ex_shared1 shared_info;
};
extern char _ex_text0[], _ex_text1[];
extern char _ex_range0[], _ex_range1[];
extern void _ex_register (struct ex_shared1 *);
extern void _ex_deregister (struct ex_shared1 *);
extern char _SDA_BASE_[];
extern char _SDA2_BASE_[];
struct ex_shared shared __attribute__((section(".ex_shared"))) = {
_ex_register,
_ex_deregister,
{
(void *)0,
(void *)0,
_ex_text0,
_ex_range0,
_ex_text1,
_ex_range1
}
};
static void
deregister (void)
{
(* shared.ex_deregister) (&shared.shared_info);
}
/* Start function. */
void
_start(int argc, char *argv[], char *envp[], void *auxp,
void (*termfunc)(void))
{
int ret;
int dummy = 0;
#if 0
/* Disable this for now, it causes an impossible reload. */
/* Load up r13/r2 before we do anything else. */
__asm__ volatile ("mr %%r13,%0;mr %%r2,%1" : "=r" (dummy) : "r" (&_SDA_BASE_[0]), "r" (&_SDA2_BASE_[0]), "r" (dummy));
#endif
_environ = envp + dummy;
/* Register loader termination function (the || dummy is to make sure the above asm
is not optimized away). */
if (termfunc)
atexit (termfunc);
/* Register exception handler if needed */
if (shared.ex_register)
(* shared.ex_register) (&shared.shared_info);
if (shared.ex_deregister)
atexit (deregister);
/* Call any global constructors and destructors. */
__init ();
atexit (__fini);
/* Call the main program now */
ret = main (argc, argv, envp, auxp);
/* Return to the os */
exit (ret);
}
# crti.s for solaris
# crti.s for sysv4
# Copyright (C) 1996 Free Software Foundation, Inc.
# Written By Michael Meissner
......@@ -61,12 +61,12 @@ __CTOR_LIST__:
.type __DTOR_LIST__,@object
__DTOR_LIST__:
# Head of __init function used for static constructors in Solaris
# Head of _init function used for static constructors
.section ".init","ax"
.align 2
.globl __init
.type __init,@function
__init: stwu %r1,-16(%r1)
.globl _init
.type _init,@function
_init: stwu %r1,-16(%r1)
mflr %r0
stw %r31,12(%r1)
stw %r0,16(%r1)
......@@ -82,12 +82,12 @@ __init: stwu %r1,-16(%r1)
# blrl
#.Lno_reg:
# Head of __fini function used for static destructors in Solaris
# Head of _fini function used for static destructors
.section ".fini","ax"
.align 2
.globl __fini
.type __fini,@function
__fini: stwu %r1,-16(%r1)
.globl _fini
.type _fini,@function
_fini: stwu %r1,-16(%r1)
mflr %r0
stw %r31,12(%r1)
stw %r0,16(%r1)
......
# crtn.s for solaris
# crtn.s for sysv4
# Copyright (C) 1996 Free Software Foundation, Inc.
# Written By Michael Meissner
......@@ -65,7 +65,7 @@ _ex_text1:
.globl _ex_range1
_ex_range1:
# Tail of __init used for static constructors in Solaris
# Tail of _init used for static constructors
.section ".init","ax"
lwz %r0,16(%r1)
lwz %r31,12(%r1)
......@@ -73,7 +73,7 @@ _ex_range1:
addi %r1,%r1,16
blr
# Tail of __fini used for static destructors in Solaris
# Tail of _fini used for static destructors
.section ".fini","ax"
lwz %r0,16(%r1)
lwz %r31,12(%r1)
......
/* Definitions of target machine for GNU compiler,
for IBM RS/6000 running AIX version 3.1.
Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
Contributed by David Reese (Dave.Reese@East.Sun.COM)
This file is part of GNU CC.
GNU CC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU CC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Default ABI to use */
#undef RS6000_ABI_NAME
#define RS6000_ABI_NAME "solaris"
#undef ASM_CPU_SPEC
#define ASM_CPU_SPEC "-le -s"
#undef TARGET_DEFAULT
#define TARGET_DEFAULT (MASK_POWERPC | \
MASK_NEW_MNEMONICS | \
MASK_LITTLE_ENDIAN | \
MASK_REGNAMES)
#undef LIB_DEFAULT_SPEC
#define LIB_DEFAULT_SPEC "%(lib_solaris)"
#undef STARTFILE_DEFAULT_SPEC
#define STARTFILE_DEFAULT_SPEC "%(startfile_solaris)"
#undef ENDFILE_DEFAULT_SPEC
#define ENDFILE_DEFAULT_SPEC "%(endfile_solaris)"
#undef LINK_START_DEFAULT_SPEC
#define LINK_START_DEFAULT_SPEC "%(link_start_solaris)"
#undef CPP_SPEC
#define CPP_SPEC "%{posix: -D_POSIX_SOURCE}\
%(cpp_sysv) %(cpp_endian) %(cpp_cpu) \
%{mmvme: %(cpp_os_mvme) } \
%{msim: %(cpp_os_sim) } \
%{mcall-linux: %(cpp_os_linux) } \
%{mcall-solaris: %(cpp_os_solaris) } \
%{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-solaris: %(cpp_os_default) }}}}"
#undef CPP_OS_DEFAULT_SPEC
#define CPP_OS_DEFAULT_SPEC "%(cpp_os_solaris)"
#undef LINK_OS_DEFAULT_SPEC
#define LINK_OS_DEFAULT_SPEC "%(link_os_solaris)"
#undef CPP_ENDIAN_LITTLE_SPEC
#define CPP_ENDIAN_LITTLE_SPEC CPP_ENDIAN_SOLARIS_SPEC
#define DEFAULT_PCC_STRUCT_RETURN 0
#undef TARGET_VERSION
#define TARGET_VERSION fprintf (stderr, " (PowerPC Solaris)");
/* Macros to check register numbers against specific register classes. */
#undef PREFERRED_DEBUGGING_TYPE
#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
#if 0
#undef ASM_OUTPUT_ALIGNED_LOCAL
#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \
do { \
fprintf ((FILE), "\t%s\t", ".lcomm"); \
assemble_name ((FILE), (NAME)); \
fprintf ((FILE), ",%u,%u\n", (SIZE), (ALIGN) / BITS_PER_UNIT); \
} while (0)
#endif
/* Like block addresses, stabs line numbers are relative to the
current function. */
/* use .stabd instead of .stabn */
#define ASM_STABN_OP "\t.stabd\t"
#undef ASM_OUTPUT_SOURCE_LINE
#define ASM_OUTPUT_SOURCE_LINE(file, line) \
do \
{ \
static int sym_lineno = 1; \
const char *_p; \
fprintf (file, "\t.stabd 68,0,%d,.LM%d-", \
line, sym_lineno); \
STRIP_NAME_ENCODING (_p, XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0)); \
assemble_name (file, _p); \
fprintf (file, "\n.LM%d:\n", sym_lineno); \
sym_lineno += 1; \
} \
while (0)
/* This is how to output an assembler line defining a `double' constant. */
#undef ASM_OUTPUT_DOUBLE
#define ASM_OUTPUT_DOUBLE(FILE, VALUE) \
{ \
if (REAL_VALUE_ISINF (VALUE) \
|| REAL_VALUE_ISNAN (VALUE) \
|| REAL_VALUE_MINUS_ZERO (VALUE)) \
{ \
long t[2]; \
REAL_VALUE_TO_TARGET_DOUBLE ((VALUE), t); \
fprintf (FILE, "\t.long 0x%lx\n\t.long 0x%lx\n", \
t[0] & 0xffffffff, t[1] & 0xffffffff); \
} \
else \
{ \
char str[30]; \
REAL_VALUE_TO_DECIMAL (VALUE, "%.20e", str); \
fprintf (FILE, "\t.double %s\n", str); \
} \
}
/* This is how to output an assembler line defining a `float' constant. */
#undef ASM_OUTPUT_FLOAT
#define ASM_OUTPUT_FLOAT(FILE, VALUE) \
{ \
if (REAL_VALUE_ISINF (VALUE) \
|| REAL_VALUE_ISNAN (VALUE) \
|| REAL_VALUE_MINUS_ZERO (VALUE)) \
{ \
long t; \
REAL_VALUE_TO_TARGET_SINGLE ((VALUE), t); \
fprintf (FILE, "\t.long 0x%lx\n", t & 0xffffffff); \
} \
else \
{ \
char str[30]; \
REAL_VALUE_TO_DECIMAL ((VALUE), "%.20e", str); \
fprintf (FILE, "\t.float %s\n", str); \
} \
}
/* Sun-ppc assembler does not permit '.' in some symbol names.
Use 'name_.labelno' instead. */
#undef ASM_FORMAT_PRIVATE_NAME
#define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO) \
( (OUTPUT) = (char *) alloca (strlen ((NAME)) + 10), \
sprintf ((OUTPUT), "%s_.%d", (NAME), (LABELNO)))
/* Define this macro as a C expression for the initializer of an
array of string to tell the driver program which options are
defaults for this target and thus do not need to be handled
specially when using `MULTILIB_OPTIONS'.
Do not define this macro if `MULTILIB_OPTIONS' is not defined in
the target makefile fragment or if none of the options listed in
`MULTILIB_OPTIONS' are set by default. *Note Target Fragment::. */
#undef MULTILIB_DEFAULTS
#define MULTILIB_DEFAULTS { "mlittle", "mcall-solaris" }
#define STDC_0_IN_SYSTEM_HEADERS 1
......@@ -152,7 +152,6 @@ extern int g_switch_set; /* Whether -G xx was passed. */
{ "emb", 0, \
N_("Set the PPC_EMB bit in the ELF flags header") }, \
{ "vxworks", 0, N_("no description yet") }, \
{ "solaris-cclib", 0, N_("no description yet") }, \
{ "shlib", 0, N_("no description yet") }, \
EXTRA_SUBTARGET_SWITCHES \
{ "newlib", 0, N_("no description yet") },
......@@ -200,8 +199,6 @@ do { \
rs6000_current_abi = ABI_V4; \
else if (!strcmp (rs6000_abi_name, "netbsd")) \
rs6000_current_abi = ABI_V4; \
else if (!strcmp (rs6000_abi_name, "solaris")) \
rs6000_current_abi = ABI_SOLARIS; \
else if (!strcmp (rs6000_abi_name, "i960-old")) \
{ \
rs6000_current_abi = ABI_V4; \
......@@ -230,7 +227,7 @@ do { \
else \
error ("Bad value for -msdata=%s", rs6000_sdata_name); \
} \
else if (DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS) \
else if (DEFAULT_ABI == ABI_V4) \
{ \
rs6000_sdata = SDATA_DATA; \
rs6000_sdata_name = "data"; \
......@@ -258,8 +255,7 @@ do { \
rs6000_sdata_name); \
} \
\
if (rs6000_sdata != SDATA_NONE && DEFAULT_ABI != ABI_V4 \
&& DEFAULT_ABI != ABI_SOLARIS) \
if (rs6000_sdata != SDATA_NONE && DEFAULT_ABI != ABI_V4) \
{ \
rs6000_sdata = SDATA_NONE; \
error ("-msdata=%s and -mcall-%s are incompatible.", \
......@@ -430,9 +426,7 @@ do { \
#define SDATA_SECTION_ASM_OP "\t.section\t\".sdata\",\"aw\""
#define SDATA2_SECTION_ASM_OP "\t.section\t\".sdata2\",\"a\""
#define SBSS_SECTION_ASM_OP \
((DEFAULT_ABI == ABI_SOLARIS) ? "\t.section\t\".sbss\",\"aw\"" : "\t.section\t\".sbss\",\"aw\",@nobits")
#define SBSS_SECTION_ASM_OP "\t.section\t\".sbss\",\"aw\",@nobits"
/* Besides the usual ELF sections, we need a toc section. */
/* Override elfos.h definition. */
......@@ -729,14 +723,6 @@ extern int rs6000_pic_labelno;
do { fputs ("\t.globl ", FILE); \
assemble_name (FILE, NAME); putc ('\n', FILE);} while (0)
/* This is how to allocate empty space in some section. Use .space
instead of .zero because the Solaris PowerPC assembler doesn't
like it, and gas accepts either syntax. */
/* Override elfos.h definition. */
#undef SKIP_ASM_OP
#define SKIP_ASM_OP "\t.space\t"
/* This says how to output assembler code to declare an
uninitialized internal linkage data object. Under SVR4,
the linker seems to want the alignment of data objects
......@@ -938,7 +924,6 @@ do { \
%{memb} %{!memb: %{msdata: -memb} %{msdata=eabi: -memb}} \
%{mlittle} %{mlittle-endian} %{mbig} %{mbig-endian} \
%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \
%{mcall-solaris: -mlittle -msolaris} \
%{mcall-freebsd: -mbig} \
%{mcall-i960-old: -mlittle} \
%{mcall-linux: -mbig} \
......@@ -963,20 +948,17 @@ do { \
%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \
%{mcall-aixdesc: -mbig %(cc1_endian_big) } \
%{mcall-freebsd: -mbig %(cc1_endian_big) } \
%{mcall-solaris: -mlittle %(cc1_endian_little) } \
%{mcall-i960-old: -mlittle %(cc1_endian_little) } \
%{mcall-linux: -mbig %(cc1_endian_big) } \
%{mcall-netbsd: -mbig %(cc1_endian_big) } \
%{!mcall-aixdesc: %{!mcall-freebsd: %{!mcall-solaris: %{!mcall-i960-old: %{!mcall-linux: %{!mcall-netbsd: \
%{!mcall-aixdesc: %{!mcall-freebsd: %{!mcall-i960-old: %{!mcall-linux: %{!mcall-netbsd: \
%(cc1_endian_default) \
}}}}}} \
}}}}} \
}}}} \
%{mcall-solaris: -mregnames } \
%{mno-sdata: -msdata=none } \
%{meabi: %{!mcall-*: -mcall-sysv }} \
%{!meabi: %{!mno-eabi: \
%{mrelocatable: -meabi } \
%{mcall-solaris: -mno-eabi } \
%{mcall-freebsd: -mno-eabi } \
%{mcall-i960-old: -meabi } \
%{mcall-linux: -mno-eabi } \
......@@ -1011,8 +993,8 @@ do { \
%{mcall-freebsd: %(link_start_freebsd) } \
%{mcall-linux: %(link_start_linux) } \
%{mcall-netbsd: %(link_start_netbsd) } \
%{mcall-solaris: %(link_start_solaris) } \
%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-netbsd: %{!mcall-solaris: %(link_start_default) }}}}}}}}"
%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: \
%{!mcall-netbsd: %{!mcall-freebsd: %(link_start_default) }}}}}}}"
#define LINK_START_DEFAULT_SPEC ""
......@@ -1056,7 +1038,6 @@ do { \
%{mlittle: --oformat elf32-powerpcle } %{mlittle-endian: --oformat elf32-powerpcle } \
%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \
%{mcall-i960-old: --oformat elf32-powerpcle} \
%{mcall-solaris: --oformat elf32-powerpcle} \
}}}}"
/* Any specific OS flags. */
......@@ -1068,8 +1049,7 @@ do { \
%{mcall-freebsd: %(link_os_freebsd) } \
%{mcall-linux: %(link_os_linux) } \
%{mcall-netbsd: %(link_os_netbsd) } \
%{mcall-solaris: %(link_os_solaris) } \
%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-netbsd: %{!mcall-solaris: %(link_os_default) }}}}}}}}"
%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-netbsd: %(link_os_default) }}}}}}}"
#define LINK_OS_DEFAULT_SPEC ""
......@@ -1105,22 +1085,18 @@ do { \
#define CPP_ENDIAN_LITTLE_SPEC "-D_LITTLE_ENDIAN -D__LITTLE_ENDIAN__ -Amachine=littleendian"
#define CPP_ENDIAN_SOLARIS_SPEC "-D__LITTLE_ENDIAN__ -Amachine=littleendian"
/* For solaris, don't define _LITTLE_ENDIAN, it conflicts with a header file. */
#define CPP_ENDIAN_SPEC \
"%{mlittle: %(cpp_endian_little) } \
%{mlittle-endian: %(cpp_endian_little) } \
%{mbig: %(cpp_endian_big) } \
%{mbig-endian: %(cpp_endian_big) } \
%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \
%{mcall-solaris: %(cpp_endian_solaris) } \
%{mcall-freebsd: %(cpp_endian_big) } \
%{mcall-linux: %(cpp_endian_big) } \
%{mcall-netbsd: %(cpp_endian_big) } \
%{mcall-i960-old: %(cpp_endian_little) } \
%{mcall-aixdesc: %(cpp_endian_big) } \
%{!mcall-solaris: %{!mcall-linux: %{!mcall-freebsd: %{!mcall-netbsd: %{!mcall-aixdesc: %(cpp_endian_default) }}}}}}}}}"
%{!mcall-linux: %{!mcall-freebsd: %{!mcall-netbsd: %{!mcall-aixdesc: %(cpp_endian_default) }}}}}}}}"
#define CPP_ENDIAN_DEFAULT_SPEC "%(cpp_endian_big)"
......@@ -1134,8 +1110,7 @@ do { \
%{mcall-freebsd: %(cpp_os_freebsd) } \
%{mcall-linux: %(cpp_os_linux) } \
%{mcall-netbsd: %(cpp_os_netbsd) } \
%{mcall-solaris: %(cpp_os_solaris) } \
%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-netbsd: %{!mcall-solaris: %(cpp_os_default) }}}}}}}}"
%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-netbsd: %(cpp_os_default) }}}}}}}"
#define CPP_OS_DEFAULT_SPEC ""
......@@ -1149,8 +1124,7 @@ do { \
%{mcall-freebsd: %(startfile_freebsd) } \
%{mcall-linux: %(startfile_linux) } \
%{mcall-netbsd: %(startfile_netbsd) } \
%{mcall-solaris: %(startfile_solaris) } \
%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-netbsd: %{!mcall-solaris: %(startfile_default) }}}}}}}}"
%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-netbsd: %(startfile_default) }}}}}}}"
#define STARTFILE_DEFAULT_SPEC ""
......@@ -1164,8 +1138,7 @@ do { \
%{mcall-freebsd: %(lib_freebsd) } \
%{mcall-linux: %(lib_linux) } \
%{mcall-netbsd: %(lib_netbsd) } \
%{mcall-solaris: %(lib_solaris) } \
%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %%{!mcall-linux: %{!mcall-netbsd: %{!mcall-solaris: %(lib_default) }}}}}}}}"
%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %%{!mcall-linux: %{!mcall-netbsd: %(lib_default) }}}}}}}"
#define LIB_DEFAULT_SPEC ""
......@@ -1179,9 +1152,8 @@ do { \
%{mcall-freebsd: %(endfile_freebsd) } \
%{mcall-linux: %(endfile_linux) } \
%{mcall-netbsd: %(endfile_netbsd) } \
%{mcall-solaris: %(endfile_solaris)} \
%{mvxworks: %(endfile_vxworks) } \
%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-netbsd: %{!mcall-solaris: %{!mvxworks: %(endfile_default) }}}}}}}}}"
%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-netbsd: %{!mvxworks: %(endfile_default) }}}}}}}}"
#define ENDFILE_DEFAULT_SPEC ""
......@@ -1314,48 +1286,6 @@ ncrtn.o%s"
#define CPP_OS_NETBSD_SPEC "\
-D__powerpc__ -D__NetBSD__ -D__ELF__ -D__KPRINTF_ATTRIBUTE__"
/* Solaris support. */
/* For Solaris, Gcc automatically adds in one of the files
/usr/ccs/lib/values-Xc.o, /usr/ccs/lib/values-Xa.o, or
/usr/ccs/lib/values-Xt.o for each final link step (depending upon the other
gcc options selected, such as -traditional and -ansi). These files each
contain one (initialized) copy of a special variable called `_lib_version'.
Each one of these files has `_lib_version' initialized to a different (enum)
value. The SVR4 library routines query the value of `_lib_version' at run
to decide how they should behave. Specifically, they decide (based upon the
value of `_lib_version') if they will act in a strictly ANSI conforming
manner or not. */
#define LIB_SOLARIS_SPEC "\
%{mnewlib: --start-group -lsolaris -lc --end-group } \
%{!mnewlib: \
%{ansi:values-Xc.o%s} \
%{!ansi: \
%{traditional:values-Xt.o%s} \
%{!traditional:values-Xa.o%s}} \
%{compat-bsd:-lucb -lsocket -lnsl -lelf -laio} \
%{solaris-cclib: /opt/SUNWspro/SC4.0/lib/libabi.a} \
%{!shared: %{!symbolic: -lc }}}"
#define STARTFILE_SOLARIS_SPEC "\
%{!msolaris-cclib: scrti.o%s scrt0.o%s} \
%{msolaris-cclib: /opt/SUNWspro/SC4.0/lib/crti.o%s /opt/SUNWspro/SC4.0/lib/crt1.o%s} \
%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
#define ENDFILE_SOLARIS_SPEC "\
%{!shared:crtend.o%s} %{shared:crtendS.o%s} \
%{!msolaris-cclib: scrtn.o%s} \
%{msolaris-cclib: /opt/SUNWspro/SC4.0/lib/crtn.o%s}"
#define LINK_START_SOLARIS_SPEC ""
#define LINK_OS_SOLARIS_SPEC ""
#define CPP_OS_SOLARIS_SPEC "-D__ppc -D__sun__=1 -D__unix__ -D__svr4__ -D__SVR4__ \
%{!undef:%{!ansi:%{!std=*:-Dsun=1 -Dunix -DSVR4 -D__EXTENSIONS__} \
%{std=gnu*:-Dsun=1 -Dunix -DSVR4 -D__EXTENSIONS__}}} \
-Amachine=prep"
/* VxWorks support. */
/* VxWorks does all the library stuff itself. */
#define LIB_VXWORKS_SPEC ""
......@@ -1411,7 +1341,6 @@ ncrtn.o%s"
{ "lib_freebsd", LIB_FREEBSD_SPEC }, \
{ "lib_linux", LIB_LINUX_SPEC }, \
{ "lib_netbsd", LIB_NETBSD_SPEC }, \
{ "lib_solaris", LIB_SOLARIS_SPEC }, \
{ "lib_vxworks", LIB_VXWORKS_SPEC }, \
{ "lib_default", LIB_DEFAULT_SPEC }, \
{ "startfile_ads", STARTFILE_ADS_SPEC }, \
......@@ -1421,7 +1350,6 @@ ncrtn.o%s"
{ "startfile_freebsd", STARTFILE_FREEBSD_SPEC }, \
{ "startfile_linux", STARTFILE_LINUX_SPEC }, \
{ "startfile_netbsd", STARTFILE_NETBSD_SPEC }, \
{ "startfile_solaris", STARTFILE_SOLARIS_SPEC }, \
{ "startfile_vxworks", STARTFILE_VXWORKS_SPEC }, \
{ "startfile_default", STARTFILE_DEFAULT_SPEC }, \
{ "endfile_ads", ENDFILE_ADS_SPEC }, \
......@@ -1431,7 +1359,6 @@ ncrtn.o%s"
{ "endfile_freebsd", ENDFILE_FREEBSD_SPEC }, \
{ "endfile_linux", ENDFILE_LINUX_SPEC }, \
{ "endfile_netbsd", ENDFILE_NETBSD_SPEC }, \
{ "endfile_solaris", ENDFILE_SOLARIS_SPEC }, \
{ "endfile_vxworks", ENDFILE_VXWORKS_SPEC }, \
{ "endfile_default", ENDFILE_DEFAULT_SPEC }, \
{ "link_path", LINK_PATH_SPEC }, \
......@@ -1445,7 +1372,6 @@ ncrtn.o%s"
{ "link_start_freebsd", LINK_START_FREEBSD_SPEC }, \
{ "link_start_linux", LINK_START_LINUX_SPEC }, \
{ "link_start_netbsd", LINK_START_NETBSD_SPEC }, \
{ "link_start_solaris", LINK_START_SOLARIS_SPEC }, \
{ "link_start_vxworks", LINK_START_VXWORKS_SPEC }, \
{ "link_start_default", LINK_START_DEFAULT_SPEC }, \
{ "link_os", LINK_OS_SPEC }, \
......@@ -1456,7 +1382,6 @@ ncrtn.o%s"
{ "link_os_freebsd", LINK_OS_FREEBSD_SPEC }, \
{ "link_os_linux", LINK_OS_LINUX_SPEC }, \
{ "link_os_netbsd", LINK_OS_NETBSD_SPEC }, \
{ "link_os_solaris", LINK_OS_SOLARIS_SPEC }, \
{ "link_os_vxworks", LINK_OS_VXWORKS_SPEC }, \
{ "link_os_default", LINK_OS_DEFAULT_SPEC }, \
{ "cc1_endian_big", CC1_ENDIAN_BIG_SPEC }, \
......@@ -1464,7 +1389,6 @@ ncrtn.o%s"
{ "cc1_endian_default", CC1_ENDIAN_DEFAULT_SPEC }, \
{ "cpp_endian_big", CPP_ENDIAN_BIG_SPEC }, \
{ "cpp_endian_little", CPP_ENDIAN_LITTLE_SPEC }, \
{ "cpp_endian_solaris", CPP_ENDIAN_SOLARIS_SPEC }, \
{ "cpp_float_default", CPP_FLOAT_DEFAULT_SPEC }, \
{ "cpp_longdouble_default", CPP_LONGDOUBLE_DEFAULT_SPEC }, \
{ "cpp_os_ads", CPP_OS_ADS_SPEC }, \
......@@ -1474,7 +1398,6 @@ ncrtn.o%s"
{ "cpp_os_freebsd", CPP_OS_FREEBSD_SPEC }, \
{ "cpp_os_linux", CPP_OS_LINUX_SPEC }, \
{ "cpp_os_netbsd", CPP_OS_NETBSD_SPEC }, \
{ "cpp_os_solaris", CPP_OS_SOLARIS_SPEC }, \
{ "cpp_os_vxworks", CPP_OS_VXWORKS_SPEC }, \
{ "cpp_os_default", CPP_OS_DEFAULT_SPEC },
......
......@@ -40,12 +40,10 @@ INSTALL_LIBGCC = install-multilib
EXTRA_MULTILIB_PARTS = crtbegin$(objext) crtend$(objext) \
crtbeginS$(objext) crtendS$(objext) \
ecrti$(objext) ecrtn$(objext) \
scrt0$(objext) scrti$(objext) scrtn$(objext) \
ncrti$(objext) ncrtn$(objext)
# We build {e,s}crti.o, {e,s}crtn.o, and {s,n}crt0.o which serve to
# add begin and end labels to all of the special sections used when we
# link using gcc.
# We build {e,n}crti.o and {e,n}crtn.o, which serve to add begin and
# end labels to all of the special sections used when we link using gcc.
# Assemble startup files.
ecrti.S: $(srcdir)/config/rs6000/eabi-ci.asm
......@@ -55,21 +53,10 @@ ecrtn.S: $(srcdir)/config/rs6000/eabi-cn.asm
cat $(srcdir)/config/rs6000/eabi-cn.asm >ecrtn.S
ncrti.S: $(srcdir)/config/rs6000/sol-ci.asm
sed -e 's/__init/_init/' -e 's/__fini/_fini/' \
$(srcdir)/config/rs6000/sol-ci.asm >ncrti.S
cat $(srcdir)/config/rs6000/sol-ci.asm >ncrti.S
ncrtn.S: $(srcdir)/config/rs6000/sol-cn.asm
sed -e 's/__init/_init/' -e 's/__fini/_fini/' \
$(srcdir)/config/rs6000/sol-cn.asm >ncrtn.S
scrti.S: $(srcdir)/config/rs6000/sol-ci.asm
cat $(srcdir)/config/rs6000/sol-ci.asm >scrti.S
scrtn.S: $(srcdir)/config/rs6000/sol-cn.asm
cat $(srcdir)/config/rs6000/sol-cn.asm >scrtn.S
scrt0.c: $(srcdir)/config/rs6000/sol-c0.c
cat $(srcdir)/config/rs6000/sol-c0.c >scrt0.c
cat $(srcdir)/config/rs6000/sol-cn.asm >ncrtn.S
# Build multiple copies of ?crt{i,n}.o, one for each target switch.
$(T)ecrti$(objext): ecrti.S
......@@ -84,15 +71,6 @@ $(T)ncrti$(objext): ncrti.S
$(T)ncrtn$(objext): ncrtn.S
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c ncrtn.S -o $(T)ncrtn$(objext)
$(T)scrti$(objext): scrti.S
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c scrti.S -o $(T)scrti$(objext)
$(T)scrtn$(objext): scrtn.S
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c scrtn.S -o $(T)scrtn$(objext)
$(T)scrt0$(objext): scrt0.c
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c scrt0.c -o $(T)scrt0$(objext)
# It is important that crtbegin.o, etc., aren't surprised by stuff in .sdata.
CRTSTUFF_T_CFLAGS = -msdata=none
# There is no need to add -fPIC here because crtstuff is multilibbed
......
# Multilibs for a powerpc hosted ELF target (linux, SVR4, solaris)
# Multilibs for a powerpc hosted ELF target (linux, SVR4)
MULTILIB_OPTIONS = msoft-float
MULTILIB_DIRNAMES = nof
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment