configure.ac (mips*-*-*): Print an error if not using GAS.

* configure.ac (mips*-*-*): Print an error if not using GAS.
	* configure: Regenerated.
	* doc/install.texi: Remove irix5 bullet from --with-gnu-as.  Remove
	comments about buggy MIPSpro assemblers.
	* config.gcc (mips-sgi-irix[56]*): Combine stanzas.  Include elfos.h
	before mips.h and iris.h after it.  Use t-iris and t-slibgcc-irix.
	Use iris5.h only for IRIX 5 configs.  Use iris6.h and t-iris6 for
	IRIX 6 configs.  Define IRIX_USING_GNU_LD if using GNU ld.
	* config/mips/iris5.h (TARGET_IRIX, SWITCHES_NEED_SPACES)
	(DEFAULT_SIGNED_CHAR, WORD_SWITCH_TAKES_ARG, SUBTARGET_CC1_SPEC)
	(NO_IMPLICIT_EXTERN_C, MIPS_DEFAULT_GVALUE)
	(TARGET_ASM_EXTERNAL_LIBCALL): Move to iris.h.
	(WCHAR_TYPE, WCHAR_TYPE_SIZE, TARGET_OS_CPP_BUILTINS): Delete in favor
	of more general IRIX 6 definitions.
	(OBJECT_FORMAT_ELF, ASM_OUTPUT_ASCII, ASM_WEAKEN_LABEL)
	(HANDLE_SYSV_PRAGMA): Delete in favor of elfos.h definitions.
	(TARGET_IRIX5, ABICALLS_ASM_OP, BSS_SECTION_ASM_OP, HAS_INIT_SECTION)
	(LD_INIT_SWITCH, LD_FINI_SWITCH, SUBTARGET_ASM_OPTIMIZING_SPEC)
	(ASM_FINAL_SPEC, DBX_DEBUGGING_INFO, MIPS_DEBUGGING_INFO)
	(PREFERRED_DEBUGGING_TYPE, DWARF2_UNWIND_INFO, SET_FILE_NUMBER)
	(LABEL_AFTER_LOC, DOLLARS_IN_IDENTIFIERS, NO_DOLLAR_IN_LABEL)
	(TARGET_ASM_NAMED_SECTION, EXTRA_SECTION_FUNCTIONS)
	(ASM_DECLARE_FUNCTION_SIZE, ASM_OUTPUT_WEAK_ALIAS)
	(SUBTARGET_EXTRA_SPECS): Delete definitions or undefs.
	(LINK_SPEC): Move most of definition to iris.h.
	(SUBTARGET_LINK_SPEC): New macro.
	(IRIX_STARTFILE_SPEC): Fold into...
	(STARTFILE_SPEC): ...here.
	(IRIX_ENDFILE_SPEC): Fold into...
	(ENDFILE_SPEC): ...here.
	* config/mips/iris6.h (TARGET_IRIX5): Remove override.
	(WCHAR_TYPE, WCHAR_TYPE_SIZE, WINT_TYPE, WINT_TYPE_SIZE)
	(DWARF_OFFSET_SIZE, DWARF_INITIAL_LENGTH_SIZE, SET_ASM_OP)
	(LINK_ELIMINATE_DUPLICATE_LDIRECTORIES, ASM_DECLARE_OBJECT_NAME)
	(ASM_FINISH_DECLARE_OBJECT, LOCAL_LABEL_PREFIX): Move to iris.h.
	(TARGET_OS_CPP_BUILTINS): Likewise.  Guard IRIX6-specific bits.
	(DWARF2_UNWIND_INFO, DWARF2_GENERATE_TEXT_SECTION_LABEL)
	(SUBTARGET_CPP_SPEC, DWARF2_DEBUGGING_INFO, MIPS_DEBUGGING_INFO)
	(PREFERRED_DEBUGGING_TYPE, DWARF2_FRAME_INFO, MD_EXEC_PREFIX)
	(ASM_DECLARE_FUNCTION_NAME, ASM_DECLARE_FUNCTION_SIZE)
	(FUNCTION_NAME_ALREADY_DECLARED, SUPPORTS_INIT_PRIORITY)
	(POPSECTION_ASM_OP, SUBTARGET_ASM_SPEC, SUBTARGET_MIPS_AS_ASM_SPEC)
	(SUBTARGET_ASM_DEBUGGING_SPEC, SUBTARGET_ASM_OPTIMIZING_SPEC)
	(BSS_SECTION_ASM_OP*, READONLY_DATA_SECTION_ASM_OP*)
	(EH_FRAME_SECTION_NAME, MUST_USE_SJLJ_EXCEPTIONS, CTORS_SECTION_ASM_OP)
	(DTORS_SECTION_ASM_OP, TARGET_ASM_NAMED_SECTION, EH_FRAME_SECTION_NAME)
	(ASM_OUTPUT_ALIGN, ASM_OUTPUT_FILENAME, ASM_OUTPUT_ALIGNED_LOCAL)
	(ASM_OUTPUT_ALIGNED_BSS): Remove definitions or undefs.
	(TARGET_IRIX6): Define to 1.
	(DRIVER_SELF_SPECS): Define.
	(DWARF2_FRAME_INFO): Define to 1 rather than !TARGET_SGI_O32_AS.
	(SUBTARGET_CC1_SPEC): Remove in favor of DRIVER_SELF_SPECS.
	(SUBTARGET_LINK_SPEC): New macro.
	(IRIX_STARTFILE_SPEC): Fold into...
	(STARTFILE_SPEC): ...here.  Remove !mabi=* case.
	(SUBTARGET_{,DONT_}WARN_UNUSED_SPEC): New macros.
	(LIB_SPEC, LIBGCC_SPEC): Use them.
	(LIB_SPEC): Remove !mabi=* case.
	(IRIX_ENDFILE_SPEC): Fold into...
	(ENDFILE_SPEC): ...here.  Remove !mabi=* case.
	* config/mips/mips-protos.h (irix_output_external_libcall): Delete.
	* config/mips/mips.h (TARGET_IRIX5, TARGET_SGI_O32_AS): Delete.
	(TARGET_IRIX6): New macro.
	(ASM_ABI_DEFAULT_SPEC): Remove !ELF definition.
	(MD_EXEC_PREFIX, MD_STARTFILE_PREFIX, SET_FILE_NUMBER)
	(LABEL_AFTER_LOC): Delete.
	* config/mips/mips.c (TARGET_ASM_FILE_START, TARGET_ASM_FILE_END)
	(TARGET_SECTION_TYPE_FLAGS): Remove TARGET_IRIX versions.
	(mips_build_builtin_va_list): Check TARGET_IRIX6.
	(override_options): Remove TARGET_SGI_O32_AS-related code.
	(irix_output_external_libcall): Make static.
	(mips_output_filename): Avoid use of SET_FILE_NUMBER and
	LABEL_AFTER_LOC.
	(mips_file_start): Tidy guard for ABI sections.  Remove use of
	ABICALLS_ASM_OP; use .abicalls instead.
	(mips_output_aligned_decl_common, mips_declare_object_name)
	(mips_finish_declare_object): Remove use of TARGET_SGI_O32_AS.
	(mips_output_function_prologue): Set TREE_ASM_WRITTEN if emitting
	.globl foo .text directives.
	(irix_asm_named_section_1, irix_asm_named_section)
	(irix_section_align_entry, irix_section_align_htab)
	(irix_orig_asm_out_file, irix_section_align_entry_eq)
	(irix_section_align_entry_hash, irix_asm_output_align)
	(irix_file_start, irix_section_align_1, copy_file_data)
	(irix_file_end, irix_section_type_flags): Delete.
	* config/mips/irix-crti.asm (__gcc_init): Move to .gcc_init section.
	Use standard section syntax.  Remove protective "jr $31".
	(__gcc_fini): Likewise .gcc_fini.
	* config/mips/irix-crtn.asm: Adjust sections accordingly.
	* config/mips/sdb.h (PUT_SDB_SIZE, PUT_SDB_TYPE): Moved from
	iris5gas.h.
	* config/mips/t-iris (irix-crti.o, irix-crtn.o): New rules, moved
	from t-irix-gld.
	(EXTRA_MULTILIB_PARTS): Define.
	* config/mips/t-iris6: Remove bogus comment.
	(EXTRA_MULTILIB_PARTS, CRTSTUFF_T_CFLAGS): Delete.
	* config/mips/iris5gas.h, config/mips/iris5gld.h,
	config/mips/iris6gas.h, config/mips/iris6gld.h,
	config/mips/t-iris5-as, config/mips/t-iris5-gas
	config/mips/t-irix-gld: Delete.
	* config/mips/iris.h: New file.
	* config/mips/t-slibgcc-irix: Renamed from t-iris5-6.

From-SVN: r86309
This commit is contained in:
Richard Sandiford 2004-08-20 10:21:02 +00:00 committed by Richard Sandiford
parent c4cdb8e1d0
commit 82563d3508
25 changed files with 647 additions and 1491 deletions

View File

@ -1,3 +1,108 @@
2004-08-20 Richard Sandiford <rsandifo@redhat.com>
* configure.ac (mips*-*-*): Print an error if not using GAS.
* configure: Regenerated.
* doc/install.texi: Remove irix5 bullet from --with-gnu-as. Remove
comments about buggy MIPSpro assemblers.
* config.gcc (mips-sgi-irix[56]*): Combine stanzas. Include elfos.h
before mips.h and iris.h after it. Use t-iris and t-slibgcc-irix.
Use iris5.h only for IRIX 5 configs. Use iris6.h and t-iris6 for
IRIX 6 configs. Define IRIX_USING_GNU_LD if using GNU ld.
* config/mips/iris5.h (TARGET_IRIX, SWITCHES_NEED_SPACES)
(DEFAULT_SIGNED_CHAR, WORD_SWITCH_TAKES_ARG, SUBTARGET_CC1_SPEC)
(NO_IMPLICIT_EXTERN_C, MIPS_DEFAULT_GVALUE)
(TARGET_ASM_EXTERNAL_LIBCALL): Move to iris.h.
(WCHAR_TYPE, WCHAR_TYPE_SIZE, TARGET_OS_CPP_BUILTINS): Delete in favor
of more general IRIX 6 definitions.
(OBJECT_FORMAT_ELF, ASM_OUTPUT_ASCII, ASM_WEAKEN_LABEL)
(HANDLE_SYSV_PRAGMA): Delete in favor of elfos.h definitions.
(TARGET_IRIX5, ABICALLS_ASM_OP, BSS_SECTION_ASM_OP, HAS_INIT_SECTION)
(LD_INIT_SWITCH, LD_FINI_SWITCH, SUBTARGET_ASM_OPTIMIZING_SPEC)
(ASM_FINAL_SPEC, DBX_DEBUGGING_INFO, MIPS_DEBUGGING_INFO)
(PREFERRED_DEBUGGING_TYPE, DWARF2_UNWIND_INFO, SET_FILE_NUMBER)
(LABEL_AFTER_LOC, DOLLARS_IN_IDENTIFIERS, NO_DOLLAR_IN_LABEL)
(TARGET_ASM_NAMED_SECTION, EXTRA_SECTION_FUNCTIONS)
(ASM_DECLARE_FUNCTION_SIZE, ASM_OUTPUT_WEAK_ALIAS)
(SUBTARGET_EXTRA_SPECS): Delete definitions or undefs.
(LINK_SPEC): Move most of definition to iris.h.
(SUBTARGET_LINK_SPEC): New macro.
(IRIX_STARTFILE_SPEC): Fold into...
(STARTFILE_SPEC): ...here.
(IRIX_ENDFILE_SPEC): Fold into...
(ENDFILE_SPEC): ...here.
* config/mips/iris6.h (TARGET_IRIX5): Remove override.
(WCHAR_TYPE, WCHAR_TYPE_SIZE, WINT_TYPE, WINT_TYPE_SIZE)
(DWARF_OFFSET_SIZE, DWARF_INITIAL_LENGTH_SIZE, SET_ASM_OP)
(LINK_ELIMINATE_DUPLICATE_LDIRECTORIES, ASM_DECLARE_OBJECT_NAME)
(ASM_FINISH_DECLARE_OBJECT, LOCAL_LABEL_PREFIX): Move to iris.h.
(TARGET_OS_CPP_BUILTINS): Likewise. Guard IRIX6-specific bits.
(DWARF2_UNWIND_INFO, DWARF2_GENERATE_TEXT_SECTION_LABEL)
(SUBTARGET_CPP_SPEC, DWARF2_DEBUGGING_INFO, MIPS_DEBUGGING_INFO)
(PREFERRED_DEBUGGING_TYPE, DWARF2_FRAME_INFO, MD_EXEC_PREFIX)
(ASM_DECLARE_FUNCTION_NAME, ASM_DECLARE_FUNCTION_SIZE)
(FUNCTION_NAME_ALREADY_DECLARED, SUPPORTS_INIT_PRIORITY)
(POPSECTION_ASM_OP, SUBTARGET_ASM_SPEC, SUBTARGET_MIPS_AS_ASM_SPEC)
(SUBTARGET_ASM_DEBUGGING_SPEC, SUBTARGET_ASM_OPTIMIZING_SPEC)
(BSS_SECTION_ASM_OP*, READONLY_DATA_SECTION_ASM_OP*)
(EH_FRAME_SECTION_NAME, MUST_USE_SJLJ_EXCEPTIONS, CTORS_SECTION_ASM_OP)
(DTORS_SECTION_ASM_OP, TARGET_ASM_NAMED_SECTION, EH_FRAME_SECTION_NAME)
(ASM_OUTPUT_ALIGN, ASM_OUTPUT_FILENAME, ASM_OUTPUT_ALIGNED_LOCAL)
(ASM_OUTPUT_ALIGNED_BSS): Remove definitions or undefs.
(TARGET_IRIX6): Define to 1.
(DRIVER_SELF_SPECS): Define.
(DWARF2_FRAME_INFO): Define to 1 rather than !TARGET_SGI_O32_AS.
(SUBTARGET_CC1_SPEC): Remove in favor of DRIVER_SELF_SPECS.
(SUBTARGET_LINK_SPEC): New macro.
(IRIX_STARTFILE_SPEC): Fold into...
(STARTFILE_SPEC): ...here. Remove !mabi=* case.
(SUBTARGET_{,DONT_}WARN_UNUSED_SPEC): New macros.
(LIB_SPEC, LIBGCC_SPEC): Use them.
(LIB_SPEC): Remove !mabi=* case.
(IRIX_ENDFILE_SPEC): Fold into...
(ENDFILE_SPEC): ...here. Remove !mabi=* case.
* config/mips/mips-protos.h (irix_output_external_libcall): Delete.
* config/mips/mips.h (TARGET_IRIX5, TARGET_SGI_O32_AS): Delete.
(TARGET_IRIX6): New macro.
(ASM_ABI_DEFAULT_SPEC): Remove !ELF definition.
(MD_EXEC_PREFIX, MD_STARTFILE_PREFIX, SET_FILE_NUMBER)
(LABEL_AFTER_LOC): Delete.
* config/mips/mips.c (TARGET_ASM_FILE_START, TARGET_ASM_FILE_END)
(TARGET_SECTION_TYPE_FLAGS): Remove TARGET_IRIX versions.
(mips_build_builtin_va_list): Check TARGET_IRIX6.
(override_options): Remove TARGET_SGI_O32_AS-related code.
(irix_output_external_libcall): Make static.
(mips_output_filename): Avoid use of SET_FILE_NUMBER and
LABEL_AFTER_LOC.
(mips_file_start): Tidy guard for ABI sections. Remove use of
ABICALLS_ASM_OP; use .abicalls instead.
(mips_output_aligned_decl_common, mips_declare_object_name)
(mips_finish_declare_object): Remove use of TARGET_SGI_O32_AS.
(mips_output_function_prologue): Set TREE_ASM_WRITTEN if emitting
.globl foo .text directives.
(irix_asm_named_section_1, irix_asm_named_section)
(irix_section_align_entry, irix_section_align_htab)
(irix_orig_asm_out_file, irix_section_align_entry_eq)
(irix_section_align_entry_hash, irix_asm_output_align)
(irix_file_start, irix_section_align_1, copy_file_data)
(irix_file_end, irix_section_type_flags): Delete.
* config/mips/irix-crti.asm (__gcc_init): Move to .gcc_init section.
Use standard section syntax. Remove protective "jr $31".
(__gcc_fini): Likewise .gcc_fini.
* config/mips/irix-crtn.asm: Adjust sections accordingly.
* config/mips/sdb.h (PUT_SDB_SIZE, PUT_SDB_TYPE): Moved from
iris5gas.h.
* config/mips/t-iris (irix-crti.o, irix-crtn.o): New rules, moved
from t-irix-gld.
(EXTRA_MULTILIB_PARTS): Define.
* config/mips/t-iris6: Remove bogus comment.
(EXTRA_MULTILIB_PARTS, CRTSTUFF_T_CFLAGS): Delete.
* config/mips/iris5gas.h, config/mips/iris5gld.h,
config/mips/iris6gas.h, config/mips/iris6gld.h,
config/mips/t-iris5-as, config/mips/t-iris5-gas
config/mips/t-irix-gld: Delete.
* config/mips/iris.h: New file.
* config/mips/t-slibgcc-irix: Renamed from t-iris5-6.
2004-08-20 Richard Earnshaw <rearnsha@arm.com>
* postreload.c (reload_cse_move2add): Allow any condjump, but check

View File

@ -1274,68 +1274,28 @@ mcore-*-pe*)
tmake_file=mcore/t-mcore-pe
use_fixproto=yes
;;
mips-sgi-irix6*) # SGI System V.4., IRIX 6
tm_file="${tm_file} mips/iris5.h mips/iris6.h"
tmake_file="mips/t-iris mips/t-iris5-6 mips/t-iris6"
if test x$gas = xyes
mips-sgi-irix[56]*)
tm_file="elfos.h ${tm_file} mips/iris.h"
tmake_file="mips/t-iris mips/t-slibgcc-irix"
target_cpu_default="MASK_GAS|MASK_ABICALLS"
case ${target} in
*-*-irix5*)
tm_file="${tm_file} mips/iris5.h"
;;
*-*-irix6*)
tm_file="${tm_file} mips/iris6.h"
tmake_file="${tmake_file} mips/t-iris6"
tm_defines="MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_N32"
;;
esac
if test "x$stabs" = xyes
then
tm_file="${tm_file} mips/iris6gas.h"
tm_file="${tm_file} dbx.h mips/dbxmdebug.h"
fi
if test "x$gnu_ld" = xyes
then
tm_file="${tm_file} mips/iris6gld.h"
tmake_file="$tmake_file mips/t-irix-gld"
fi
target_cpu_default="MASK_ABICALLS|MASK_FLOAT64|MASK_64BIT"
tm_defines="MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_N32"
# See comment in mips/iris5.h file. Only enabled for O32 ABI
# without GNU as.
if test x$gas = xno
then
use_collect2=yes
fi
# if test x$enable_threads = xyes; then
# thread_file='irix'
# fi
use_fixproto=yes
;;
mips-sgi-irix5cross64) # Irix5 host, Irix 6 target, cross64
tm_file="${tm_file} mips/iris5.h mips/iris6.h mips/cross64.h"
tmake_file="mips/t-iris mips/t-cross64"
target_cpu_default="MASK_ABICALLS|MASK_FLOAT64|MASK_64BIT"
tm_defines="MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_N32"
# See comment in mips/iris[56].h files.
use_collect2=yes
# if test x$enable_threads = xyes; then
# thread_file='irix'
# fi
use_fixproto=yes
;;
mips-sgi-irix5*) # SGI System V.4., IRIX 5
tm_file="${tm_file} mips/iris5.h"
if test x$gas = xyes
then
tm_file="${tm_file} mips/sdb.h mips/iris5gas.h"
if test x$stabs = xyes
then
tm_file="${tm_file} dbx.h mips/dbxmdebug.h"
fi
tmake_file=mips/t-iris5-gas
else
tmake_file=mips/t-iris5-as
fi
if test "x$gnu_ld" = xyes
then
tm_file="${tm_file} mips/iris5gld.h"
tmake_file="$tmake_file mips/t-irix-gld"
fi
tmake_file="${tmake_file} mips/t-iris mips/t-iris5-6"
target_cpu_default="MASK_ABICALLS"
# mips-tfile doesn't work yet
# See comment in mips/iris5.h file.
if test x$gas = xno
then
use_collect2=yes
tm_defines="${tm_defines} IRIX_USING_GNU_LD"
fi
# if test x$enable_threads = xyes; then
# thread_file='irix'

222
gcc/config/mips/iris.h Normal file
View File

@ -0,0 +1,222 @@
/* Definitions of target machine for GNU compiler. Generic IRIX version.
Copyright (C) 1993, 1995, 1996, 1998, 2000,
2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
GCC 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.
GCC 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 GCC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* We are compiling for IRIX now. */
#undef TARGET_IRIX
#define TARGET_IRIX 1
/* The size in bytes of a DWARF field indicating an offset or length
relative to a debug info section, specified to be 4 bytes in the DWARF-2
specification. The SGI/MIPS ABI defines it to be the same as PTR_SIZE. */
#define DWARF_OFFSET_SIZE PTR_SIZE
/* The size in bytes of the initial length field in a debug info
section. The DWARF 3 (draft) specification defines this to be
either 4 or 12 (with a 4-byte "escape" word when it's 12), but the
SGI/MIPS ABI predates this standard and defines it to be the same
as DWARF_OFFSET_SIZE. */
#define DWARF_INITIAL_LENGTH_SIZE DWARF_OFFSET_SIZE
/* MIPS assemblers don't have the usual .set foo,bar construct;
.set is used for assembler options instead. */
#undef SET_ASM_OP
#define ASM_OUTPUT_DEF(FILE, LABEL1, LABEL2) \
do \
{ \
fputc ('\t', FILE); \
assemble_name (FILE, LABEL1); \
fputs (" = ", FILE); \
assemble_name (FILE, LABEL2); \
fputc ('\n', FILE); \
} \
while (0)
/* The MIPSpro o32 linker warns about not linking .comment sections. */
#undef IDENT_ASM_OP
#undef LOCAL_LABEL_PREFIX
#define LOCAL_LABEL_PREFIX (TARGET_NEWABI ? "." : "$")
#undef ASM_DECLARE_OBJECT_NAME
#define ASM_DECLARE_OBJECT_NAME mips_declare_object_name
#undef ASM_FINISH_DECLARE_OBJECT
#define ASM_FINISH_DECLARE_OBJECT mips_finish_declare_object
/* Also do this for libcalls. */
#undef TARGET_ASM_EXTERNAL_LIBCALL
#define TARGET_ASM_EXTERNAL_LIBCALL irix_output_external_libcall
/* The linker needs a space after "-o". */
#define SWITCHES_NEED_SPACES "o"
/* Specify wchar_t types. */
#undef WCHAR_TYPE
#define WCHAR_TYPE (Pmode == DImode ? "int" : "long int")
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE INT_TYPE_SIZE
/* Same for wint_t. */
#undef WINT_TYPE
#define WINT_TYPE (Pmode == DImode ? "int" : "long int")
#undef WINT_TYPE_SIZE
#define WINT_TYPE_SIZE 32
/* Plain char is unsigned in the SGI compiler. */
#undef DEFAULT_SIGNED_CHAR
#define DEFAULT_SIGNED_CHAR 0
#define WORD_SWITCH_TAKES_ARG(STR) \
(DEFAULT_WORD_SWITCH_TAKES_ARG (STR) \
|| strcmp (STR, "rpath") == 0)
#define TARGET_OS_CPP_BUILTINS() \
do \
{ \
builtin_define_std ("host_mips"); \
builtin_define_std ("sgi"); \
builtin_define_std ("unix"); \
builtin_define_std ("SYSTYPE_SVR4"); \
builtin_define ("_MODERN_C"); \
builtin_define ("_SVR4_SOURCE"); \
builtin_define ("__DSO__"); \
builtin_assert ("system=unix"); \
builtin_assert ("system=svr4"); \
builtin_assert ("machine=sgi"); \
\
if (mips_abi == ABI_32) \
{ \
builtin_define ("_ABIO32=1"); \
builtin_define ("_MIPS_SIM=_ABIO32"); \
builtin_define ("_MIPS_SZINT=32"); \
builtin_define ("_MIPS_SZLONG=32"); \
builtin_define ("_MIPS_SZPTR=32"); \
} \
else if (mips_abi == ABI_64) \
{ \
builtin_define ("_ABI64=3"); \
builtin_define ("_MIPS_SIM=_ABI64"); \
builtin_define ("_MIPS_SZINT=32"); \
builtin_define ("_MIPS_SZLONG=64"); \
builtin_define ("_MIPS_SZPTR=64"); \
} \
else \
{ \
builtin_define ("_ABIN32=2"); \
builtin_define ("_MIPS_SIM=_ABIN32"); \
builtin_define ("_MIPS_SZINT=32"); \
builtin_define ("_MIPS_SZLONG=32"); \
builtin_define ("_MIPS_SZPTR=32"); \
} \
\
if (!ISA_MIPS1 && !ISA_MIPS2) \
builtin_define ("_COMPILER_VERSION=601"); \
\
if (!TARGET_FLOAT64) \
builtin_define ("_MIPS_FPSET=16"); \
else \
builtin_define ("_MIPS_FPSET=32"); \
\
/* We must always define _LONGLONG, even when -ansi is \
used, because IRIX 5 system header files require it. \
This is OK, because gcc never warns when long long \
is used in system header files. \
\
An alternative would be to support the SGI builtin \
type __long_long. */ \
builtin_define ("_LONGLONG"); \
\
/* IRIX 6.5.18 and above provide many ISO C99 \
features protected by the __c99 macro. \
libstdc++ v3 needs them as well. */ \
if (TARGET_IRIX6) \
if (flag_isoc99 || c_dialect_cxx ()) \
builtin_define ("__c99"); \
\
/* The GNU C++ standard library requires that \
__EXTENSIONS__ and _SGI_SOURCE be defined on at \
least IRIX 6.2 and probably all IRIX 6 prior to 6.5. \
We don't need this on IRIX 6.5 itself, but it \
shouldn't hurt other than the namespace pollution. */ \
if (!flag_iso || (TARGET_IRIX6 && c_dialect_cxx ())) \
{ \
builtin_define ("__EXTENSIONS__"); \
builtin_define ("_SGI_SOURCE"); \
} \
} \
while (0)
#undef SUBTARGET_CC1_SPEC
#define SUBTARGET_CC1_SPEC "%{static: -mno-abicalls}"
#undef INIT_SECTION_ASM_OP
#define INIT_SECTION_ASM_OP "\t.section\t.gcc_init,\"ax\",@progbits"
#undef FINI_SECTION_ASM_OP
#define FINI_SECTION_ASM_OP "\t.section\t.gcc_fini,\"ax\",@progbits"
#ifdef IRIX_USING_GNU_LD
#define IRIX_NO_UNRESOLVED ""
#else
#define IRIX_NO_UNRESOLVED "-no_unresolved"
#endif
/* Generic part of the LINK_SPEC. */
#undef LINK_SPEC
#define LINK_SPEC "\
%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} %{mips4} \
%{bestGnum} %{shared} %{non_shared} \
%{call_shared} %{no_archive} %{exact_version} \
%{!shared: \
%{!non_shared: %{!call_shared:%{!r: -call_shared " IRIX_NO_UNRESOLVED "}}}} \
%{rpath} -init __gcc_init -fini __gcc_fini " IRIX_SUBTARGET_LINK_SPEC
/* A linker error can empirically be avoided by removing duplicate
library search directories. */
#define LINK_ELIMINATE_DUPLICATE_LDIRECTORIES 1
/* Add -g to mips.h default to avoid confusing gas with local symbols
generated from stabs info. */
#undef NM_FLAGS
#define NM_FLAGS "-Bng"
/* The system header files are C++ aware. */
/* ??? Unfortunately, most but not all of the headers are C++ aware.
Specifically, curses.h is not, and as a consequence, defining this
used to prevent libg++ building. This is no longer the case so
define it again to prevent other problems, e.g. with getopt in
unistd.h. We still need some way to fix just those files that need
fixing. */
#define NO_IMPLICIT_EXTERN_C 1
/* -G is incompatible with -KPIC which is the default, so only allow objects
in the small data section if the user explicitly asks for it. */
#undef MIPS_DEFAULT_GVALUE
#define MIPS_DEFAULT_GVALUE 0
/* The native o32 IRIX linker does not support merging without a
special elspec(5) file. */
#ifndef IRIX_USING_GNU_LD
#undef HAVE_GAS_SHF_MERGE
#define HAVE_GAS_SHF_MERGE 0
#endif

View File

@ -19,286 +19,27 @@ along with GCC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* We are compiling for IRIX now. */
#undef TARGET_IRIX
#define TARGET_IRIX 1
#ifdef IRIX_USING_GNU_LD
#define IRIX_SUBTARGET_LINK_SPEC "-melf32bsmip"
#else
#define IRIX_SUBTARGET_LINK_SPEC "-_SYSTYPE_SVR4"
#endif
/* Allow some special handling for IRIX 5. */
#undef TARGET_IRIX5
#define TARGET_IRIX5 1
#define ABICALLS_ASM_OP "\t.option pic2"
/* Dummy definition which allows EXTRA_SECTION_FUNCTIONS to be the same
for IRIX 5 and 6. */
#define BSS_SECTION_ASM_OP "\t.data"
/* ??? This is correct, but not very useful, because there is no file that
uses this macro. */
/* ??? The best way to handle global constructors under ELF is to use .init
and .fini sections. Unfortunately, there is apparently no way to get
the IRIX 5.x (x <= 2) assembler to create these sections. So we instead
use collect. The linker can create these sections via -init and -fini
options, but using this would require modifying how crtstuff works, and
I will leave that for another time (or someone else). */
#define OBJECT_FORMAT_ELF
#define HAS_INIT_SECTION
#define LD_INIT_SWITCH "-init"
#define LD_FINI_SWITCH "-fini"
/* The linker needs a space after "-o". */
#define SWITCHES_NEED_SPACES "o"
/* Specify wchar_t types. */
#undef WCHAR_TYPE
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE "int"
#define WCHAR_TYPE_SIZE INT_TYPE_SIZE
/* Plain char is unsigned in the SGI compiler. */
#undef DEFAULT_SIGNED_CHAR
#define DEFAULT_SIGNED_CHAR 0
#define WORD_SWITCH_TAKES_ARG(STR) \
(DEFAULT_WORD_SWITCH_TAKES_ARG (STR) \
|| !strcmp (STR, "rpath"))
/* We must pass -D_LONGLONG always, even when -ansi is used, because IRIX 5
system header files require it. This is OK, because gcc never warns
when long long is used in system header files. Alternatively, we can
add support for the SGI builtin type __long_long. */
#define TARGET_OS_CPP_BUILTINS() \
do { \
builtin_define_std ("host_mips"); \
builtin_define_std ("sgi"); \
builtin_define_std ("unix"); \
builtin_define_std ("SYSTYPE_SVR4"); \
builtin_define ("_LONGLONG"); \
builtin_define ("_MODERN_C"); \
builtin_define ("_SVR4_SOURCE"); \
builtin_define ("__DSO__"); \
builtin_define ("_ABIO32=1"); \
builtin_define ("_MIPS_SIM=_ABIO32"); \
builtin_define ("_MIPS_SZPTR=32"); \
builtin_assert ("system=unix"); \
builtin_assert ("system=svr4"); \
builtin_assert ("machine=sgi"); \
\
if (!TARGET_FLOAT64) \
builtin_define ("_MIPS_FPSET=16"); \
else \
builtin_define ("_MIPS_FPSET=32"); \
\
if (!TARGET_INT64) \
builtin_define ("_MIPS_SZINT=32"); \
else \
builtin_define ("_MIPS_SZINT=64"); \
\
if (!TARGET_LONG64) \
builtin_define ("_MIPS_SZLONG=32"); \
else \
builtin_define ("_MIPS_SZLONG=64"); \
\
if (!flag_iso) \
{ \
builtin_define ("__EXTENSIONS__"); \
builtin_define ("_SGI_SOURCE"); \
} \
} while (0);
#undef SUBTARGET_CC1_SPEC
#define SUBTARGET_CC1_SPEC "%{static: -mno-abicalls}"
/* Override mips.h default: the IRIX 5 assembler warns about -O3:
as1: Warning: <file>.s, line 1: Binasm file dictates -pic: 2
uld:
No ucode object file linked -- please use -O2 or lower.
So avoid passing it in the first place. */
#undef SUBTARGET_ASM_OPTIMIZING_SPEC
#define SUBTARGET_ASM_OPTIMIZING_SPEC "\
%{noasmopt:-O0} \
%{!noasmopt:%{O|O1|O2|O3:-O2}}"
#undef LINK_SPEC
#define LINK_SPEC "\
%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} \
%{bestGnum} %{shared} %{non_shared} \
%{call_shared} %{no_archive} %{exact_version} \
%{static: -non_shared} \
%{!static: \
%{!shared:%{!non_shared:%{!call_shared: -call_shared -no_unresolved}}}} \
%{rpath} \
-_SYSTYPE_SVR4"
/* We now support shared libraries. */
#define IRIX_STARTFILE_SPEC "\
#undef STARTFILE_SPEC
#define STARTFILE_SPEC "\
%{!static: \
%{!shared:%{pg:gcrt1.o%s}%{!pg:%{p:mcrt1.o%s libprof1.a%s}%{!p:crt1.o%s}}}} \
%{static: \
%{pg:gcrt1.o%s} \
%{!pg:%{p:/usr/lib/nonshared/mcrt1.o%s libprof1.a%s} \
%{!p:/usr/lib/nonshared/crt1.o%s}}}"
#undef STARTFILE_SPEC
#define STARTFILE_SPEC "%(irix_startfile_spec)"
%{!p:/usr/lib/nonshared/crt1.o%s}}} \
irix-crti.o%s crtbegin.o%s"
#undef LIB_SPEC
#define LIB_SPEC "%{!shared:%{p:-lprof1} %{pg:-lprof1} -lc}"
#define IRIX_ENDFILE_SPEC "%{!shared:crtn.o%s}"
#undef ENDFILE_SPEC
#define ENDFILE_SPEC "%(irix_endfile_spec)"
/* We do not want to run mips-tfile! */
#undef ASM_FINAL_SPEC
/* The system header files are C++ aware. */
/* ??? Unfortunately, most but not all of the headers are C++ aware.
Specifically, curses.h is not, and as a consequence, defining this
used to prevent libg++ building. This is no longer the case so
define it again to prevent other problems, e.g. with getopt in
unistd.h. We still need some way to fix just those files that need
fixing. */
#define NO_IMPLICIT_EXTERN_C 1
/* We don't support debugging info for now. */
#undef DBX_DEBUGGING_INFO
#undef MIPS_DEBUGGING_INFO
#undef PREFERRED_DEBUGGING_TYPE
/* Likewise, the assembler doesn't handle DWARF2 directives. */
#define DWARF2_UNWIND_INFO 0
#define ENDFILE_SPEC "crtend.o%s irix-crtn.o%s %{!shared:crtn.o%s}"
#undef MACHINE_TYPE
#define MACHINE_TYPE "SGI running IRIX 5.x"
/* Always use 1 for .file number. I [meissner@osf.org] wonder why
IRIX needs this. */
#undef SET_FILE_NUMBER
#define SET_FILE_NUMBER() num_source_filenames = 1
/* Put out a label after a .loc. I [meissner@osf.org] wonder why
IRIX needs this. */
#undef LABEL_AFTER_LOC
#define LABEL_AFTER_LOC(STREAM) fprintf (STREAM, "LM%d:\n", ++sym_lineno)
/* Dollar signs are OK in IRIX 5 but not in IRIX 3. */
#undef DOLLARS_IN_IDENTIFIERS
#undef NO_DOLLAR_IN_LABEL
/* -G is incompatible with -KPIC which is the default, so only allow objects
in the small data section if the user explicitly asks for it. */
#undef MIPS_DEFAULT_GVALUE
#define MIPS_DEFAULT_GVALUE 0
/* Switch into a generic section. */
#undef TARGET_ASM_NAMED_SECTION
#define TARGET_ASM_NAMED_SECTION irix_asm_named_section
/* Define functions to read the name and flags of the current section.
They are used by irix_asm_output_align. */
#undef EXTRA_SECTION_FUNCTIONS
#define EXTRA_SECTION_FUNCTIONS \
const char * \
current_section_name (void) \
{ \
switch (in_section) \
{ \
case no_section: return NULL; \
case in_unlikely_executed_text: \
case in_text: return ".text"; \
case in_data: return ".data"; \
case in_bss: return ".bss"; \
case in_readonly_data: \
if (mips_abi != ABI_32 && mips_abi != ABI_O64) \
return ".rodata"; \
else \
return ".rdata"; \
case in_named: \
return in_named_name; \
default: abort(); \
} \
} \
\
unsigned int \
current_section_flags (void) \
{ \
switch (in_section) \
{ \
case no_section: return 0; \
case in_unlikely_executed_text: \
case in_text: return SECTION_CODE; \
case in_data: return SECTION_WRITE; \
case in_bss: return SECTION_WRITE | SECTION_BSS; \
case in_readonly_data: return 0; \
case in_named: return get_named_section_flags (in_named_name); \
default: abort (); \
} \
}
/* Some assemblers have a bug that causes backslash escaped chars in .ascii
to be misassembled, so avoid it by using .byte instead. Write the original
string in a comment, partly to improve readability and partly for the sake
of scan-assembler-type tests. */
#undef ASM_OUTPUT_ASCII
#define ASM_OUTPUT_ASCII(FILE,PTR,LEN) \
do { \
const unsigned char *s_ = (const unsigned char *)(PTR); \
unsigned len_ = (LEN); \
unsigned i_; \
mips_output_ascii (FILE, (const char *) s_, len_, "\t# "); \
for (i_ = 0; i_ < len_; s_++, i_++) \
{ \
if ((i_ % 8) == 0) \
fputs ("\n\t.byte\t", (FILE)); \
fprintf ((FILE), "%s0x%x", (i_%8?",":""), *s_); \
} \
fputs ("\n", (FILE)); \
} while (0)
/* Also do this for libcalls. */
#undef TARGET_ASM_EXTERNAL_LIBCALL
#define TARGET_ASM_EXTERNAL_LIBCALL irix_output_external_libcall
/* This does for functions what ASM_DECLARE_OBJECT_NAME does for variables.
This is used indirectly by ASM_OUTPUT_EXTERNAL. */
#define ASM_DECLARE_FUNCTION_SIZE(STREAM, NAME, DECL) \
do { \
tree name_tree = get_identifier (NAME); \
TREE_ASM_WRITTEN (name_tree) = 1; \
} while (0)
/* This is how we tell the assembler that a symbol is weak. */
#define ASM_OUTPUT_WEAK_ALIAS(FILE, NAME, VALUE) \
do \
{ \
(*targetm.asm_out.globalize_label) (FILE, NAME); \
fputs ("\t.weakext\t", FILE); \
assemble_name (FILE, NAME); \
if (VALUE) \
{ \
fputc (' ', FILE); \
assemble_name (FILE, VALUE); \
} \
fputc ('\n', FILE); \
} \
while (0)
#define ASM_WEAKEN_LABEL(FILE, NAME) ASM_OUTPUT_WEAK_ALIAS(FILE, NAME, 0)
/* Handle #pragma weak and #pragma pack. */
#define HANDLE_SYSV_PRAGMA 1
#undef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \
{ "irix_startfile_spec", IRIX_STARTFILE_SPEC }, \
{ "irix_endfile_spec", IRIX_ENDFILE_SPEC },

View File

@ -1,83 +0,0 @@
/* Definitions of target machine for GNU compiler. IRIX version 5 with gas.
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
GCC 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.
GCC 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 GCC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Reenable debugging. */
#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
/* GNU as does handle DWARF2 directives. */
#undef DWARF2_UNWIND_INFO
#define DWARF2_UNWIND_INFO 1
/* Override iris5.h version to invoke [cd]tors and register eh frame
information. */
#undef LINK_SPEC
#define LINK_SPEC "\
%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} \
%{bestGnum} %{shared} %{non_shared} \
%{call_shared} %{no_archive} %{exact_version} \
%{static: -non_shared} \
%{!static: \
%{!shared:%{!non_shared:%{!call_shared: -call_shared -no_unresolved}}}} \
%{rpath} -init __do_global_ctors -fini __do_global_dtors \
%{shared:-hidden_symbol __do_global_ctors,__do_global_ctors_1,__do_global_dtors} \
-_SYSTYPE_SVR4"
/* Override iris5.h versions to include crtbegin.o and crtend.o. */
#undef STARTFILE_SPEC
#define STARTFILE_SPEC "%(irix_startfile_spec) crtbegin.o%s"
#undef ENDFILE_SPEC
#define ENDFILE_SPEC "crtend.o%s %(irix_endfile_spec)"
/* Irix 5 does not have some strange restrictions that Irix 3 had. */
#undef SET_FILE_NUMBER
#define SET_FILE_NUMBER() ++num_source_filenames
#undef LABEL_AFTER_LOC
#define LABEL_AFTER_LOC(STREAM)
/* We need to use .esize and .etype instead of .size and .type to
avoid conflicting with ELF directives. These are only recognized
by gas, anyhow, not the native assembler. */
#undef PUT_SDB_SIZE
#define PUT_SDB_SIZE(a) \
do { \
fprintf (asm_out_file, "\t.esize\t" HOST_WIDE_INT_PRINT_DEC ";", \
(HOST_WIDE_INT) (a)); \
} while (0)
#undef PUT_SDB_TYPE
#define PUT_SDB_TYPE(a) \
do { \
fprintf (asm_out_file, "\t.etype\t0x%x;", (a)); \
} while (0)
/* Add -g to mips.h default to avoid confusing gas with local symbols
generated from stabs info. */
#undef NM_FLAGS
#define NM_FLAGS "-Bng"
/* Disable SHF_MERGE support. Even if gas supports it, the IRIX ld does not
without a special elspec(5) file.
FIXME: Only do this if not using GNU ld. */
#undef HAVE_GAS_SHF_MERGE
#define HAVE_GAS_SHF_MERGE 0

View File

@ -1,75 +0,0 @@
/* Definitions of target machine for GNU compiler. IRIX 5 with GNU ld.
Copyright (C) 2004 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.
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. */
#undef LINK_SPEC
#define LINK_SPEC "\
%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} \
%{bestGnum} %{shared} %{non_shared} \
%{call_shared} %{no_archive} %{exact_version} \
%{static: -non_shared} \
%{!static: \
%{!shared: %{!non_shared: %{!call_shared: -call_shared}}}} \
%{rpath} -init __gcc_init -fini __gcc_fini \
-melf32bsmip"
#undef STARTFILE_SPEC
#define STARTFILE_SPEC "%(irix_startfile_spec) irix-crti.o%s crtbegin.o%s"
#undef ENDFILE_SPEC
#define ENDFILE_SPEC "crtend.o%s irix-crtn.o%s %(irix_endfile_spec)"
/* The GNU linker supports one-only sections. */
#define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
#define INIT_SECTION_ASM_OP "\t.section\t.init,0x1,0x6,4,4"
#define FINI_SECTION_ASM_OP "\t.section\t.fini,0x1,0x6,4,4"
/* Definitions of target machine for GNU compiler. IRIX 5 with GNU ld.
Copyright (C) 2003 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.
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. */
#undef LINK_SPEC
#define LINK_SPEC "\
%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} \
%{bestGnum} %{shared} %{non_shared} \
%{call_shared} %{no_archive} %{exact_version} \
%{static: -non_shared} \
%{!static: \
%{!shared: %{!non_shared: %{!call_shared: -call_shared}}}} \
%{rpath} -init __do_global_ctors -fini __do_global_dtors \
-melf32bsmip"
/* The GNU linker supports one-only sections. */
#define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)

View File

@ -19,384 +19,39 @@ along with GCC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* No more special IRIX 5 handling. */
#undef TARGET_IRIX5
#define TARGET_IRIX5 0
/* Allow some special handling for IRIX 6. */
#undef TARGET_IRIX6
#define TARGET_IRIX6 1
/* Default to -mabi=n32 and -mips3. */
#undef MULTILIB_DEFAULTS
#define MULTILIB_DEFAULTS { "mabi=n32" }
/* The IRIX 6 O32 assembler cannot calculate label differences, while both
the N32/N64 assembler and gas can. Override setting in iris5.h file. */
#undef DWARF2_UNWIND_INFO
#define DWARF2_UNWIND_INFO !TARGET_SGI_O32_AS
/* The IRIX 6 assembler will sometimes assign labels to the wrong
section unless the labels are within .ent/.end blocks. Therefore,
we avoid creating such labels. */
#define DWARF2_GENERATE_TEXT_SECTION_LABEL 0
/* wchar_t is defined differently with and without -mabi=64. */
#undef WCHAR_TYPE
#define WCHAR_TYPE (Pmode == DImode ? "int" : "long int")
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE 32
/* Same for wint_t. */
#undef WINT_TYPE
#define WINT_TYPE (Pmode == DImode ? "int" : "long int")
#undef WINT_TYPE_SIZE
#define WINT_TYPE_SIZE 32
/* For IRIX 6, -mabi=64 implies TARGET_LONG64. */
/* This is handled in override_options. */
/* Default to the mips2 ISA for the O32 ABI. */
#undef SUBTARGET_CC1_SPEC
#define SUBTARGET_CC1_SPEC "%{mabi=32: %{!mips*: -mips2}}"
/* #line directives let the O32 assembler create object files that cause the
O32 linker to crash. */
#undef SUBTARGET_CPP_SPEC
#define SUBTARGET_CPP_SPEC "%{mabi=32: %{.S:-P}}"
/* We must pass -D_LONGLONG always, even when -ansi is used, because IRIX 6
system header files require it. This is OK, because gcc never warns
when long long is used in system header files. Alternatively, we can
add support for the SGI builtin type __long_long. */
/* The GNU C++ standard library requires that __EXTENSIONS__ and
_SGI_SOURCE be defined on at least IRIX 6.2 and probably all IRIX 6
prior to 6.5. They normally get defined if !ansi, for g++ we want
them regardless. We don't need this on IRIX 6.5 itself, but it
shouldn't hurt other than the namespace pollution. */
/* Undefine because this includes iris5.h. */
#undef TARGET_OS_CPP_BUILTINS
#define TARGET_OS_CPP_BUILTINS() \
do { \
builtin_define_std ("host_mips"); \
builtin_define ("_LONGLONG"); \
builtin_define ("_MODERN_C"); \
builtin_define ("_SVR4_SOURCE"); \
builtin_define_std ("SYSTYPE_SVR4"); \
builtin_define ("__DSO__"); \
builtin_define_std ("unix"); \
builtin_define_std ("sgi"); \
builtin_assert ("system=svr4"); \
builtin_assert ("system=unix"); \
builtin_assert ("machine=sgi"); \
\
if (mips_abi == ABI_32) \
{ \
builtin_define ("_ABIO32=1"); \
builtin_define ("_MIPS_SIM=_ABIO32"); \
builtin_define ("_MIPS_SZLONG=32"); \
builtin_define ("_MIPS_SZPTR=32"); \
} \
else if (mips_abi == ABI_64) \
{ \
builtin_define ("_ABI64=3"); \
builtin_define ("_MIPS_SIM=_ABI64"); \
builtin_define ("_MIPS_SZLONG=64"); \
builtin_define ("_MIPS_SZPTR=64"); \
} \
else \
{ \
builtin_define ("_ABIN32=2"); \
builtin_define ("_MIPS_SIM=_ABIN32"); \
builtin_define ("_MIPS_SZLONG=32"); \
builtin_define ("_MIPS_SZPTR=32"); \
} \
\
if (!TARGET_FLOAT64) \
builtin_define ("_MIPS_FPSET=16"); \
else \
builtin_define ("_MIPS_FPSET=32"); \
\
if (!TARGET_INT64) \
builtin_define ("_MIPS_SZINT=32"); \
else \
builtin_define ("_MIPS_SZINT=64"); \
\
if (!ISA_MIPS1 && !ISA_MIPS2) \
builtin_define ("_COMPILER_VERSION=601"); \
\
/* IRIX 6.5.18 and above provide many ISO C99 \
features protected by the __c99 macro. \
libstdc++ v3 needs them as well. */ \
if ((!c_dialect_cxx () && flag_isoc99) \
|| c_dialect_cxx ()) \
builtin_define ("__c99"); \
\
if (c_dialect_cxx ()) \
{ \
builtin_define ("__EXTENSIONS__"); \
builtin_define ("_SGI_SOURCE"); \
} \
\
if (!flag_iso) \
{ \
builtin_define ("__EXTENSIONS__"); \
builtin_define ("_SGI_SOURCE"); \
} \
} while (0)
/* IRIX 6 uses DWARF-2. */
#define DWARF2_DEBUGGING_INFO 1
#define MIPS_DEBUGGING_INFO 1
#undef PREFERRED_DEBUGGING_TYPE
#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
/* Force the default ABI onto the command line in order to make the specs
easier to write. Default to the mips2 ISA for the O32 ABI. */
#define DRIVER_SELF_SPECS \
"%{!mabi=*: -mabi=n32}", \
"%{mabi=32: %{!mips*: -mips2}}"
/* Force the generation of dwarf .debug_frame sections even if not
compiling -g. This guarantees that we can unwind the stack. */
#define DWARF2_FRAME_INFO !TARGET_SGI_O32_AS
/* The size in bytes of a DWARF field indicating an offset or length
relative to a debug info section, specified to be 4 bytes in the DWARF-2
specification. The SGI/MIPS ABI defines it to be the same as PTR_SIZE. */
#define DWARF_OFFSET_SIZE PTR_SIZE
/* The size in bytes of the initial length field in a debug info
section. The DWARF 3 (draft) specification defines this to be
either 4 or 12 (with a 4-byte "escape" word when it's 12), but the
SGI/MIPS ABI predates this standard and defines it to be the same
as DWARF_OFFSET_SIZE. */
#define DWARF_INITIAL_LENGTH_SIZE DWARF_OFFSET_SIZE
/* There is no GNU as port for IRIX 6 yet, so we set MD_EXEC_PREFIX so that
gcc will automatically find SGI as instead of searching the user's path.
The latter can fail when building a cross compiler if the user has . in
the path before /usr/bin, since then gcc will find and try to use the link
to the cross assembler which can't possibly work. */
#undef MD_EXEC_PREFIX
#define MD_EXEC_PREFIX "/usr/bin/"
/* We have no need for MD_STARTFILE_PREFIX. */
#undef MD_STARTFILE_PREFIX
#define DWARF2_FRAME_INFO 1
#undef MACHINE_TYPE
#define MACHINE_TYPE "SGI running IRIX 6.x"
/* Stuff we need for IRIX 6 that isn't in IRIX 5. */
/* The SGI assembler doesn't like labels before the .ent, so we must output
the .ent and function name here, which is the normal place for it. */
#undef ASM_DECLARE_FUNCTION_NAME
#define ASM_DECLARE_FUNCTION_NAME(STREAM, NAME, DECL) \
do { \
if (mips_abi != ABI_32) \
{ \
fputs ("\t.ent\t", STREAM); \
assemble_name (STREAM, NAME); \
fputs ("\n", STREAM); \
assemble_name (STREAM, NAME); \
fputs (":\n", STREAM); \
} \
} while (0)
/* Likewise, the SGI assembler doesn't like labels after the .end, so we
must output the .end here. */
#undef ASM_DECLARE_FUNCTION_SIZE
#define ASM_DECLARE_FUNCTION_SIZE(STREAM, NAME, DECL) \
do { \
if (mips_abi == ABI_32) \
{ \
tree name_tree = get_identifier (NAME); \
TREE_ASM_WRITTEN (name_tree) = 1; \
} \
else \
{ \
fputs ("\t.end\t", STREAM); \
assemble_name (STREAM, NAME); \
fputs ("\n", STREAM); \
} \
} while (0)
/* Tell function_prologue in mips.c that we have already output the .ent/.end
pseudo-ops. */
#undef FUNCTION_NAME_ALREADY_DECLARED
#define FUNCTION_NAME_ALREADY_DECLARED (mips_abi != ABI_32)
#undef SET_ASM_OP /* Has no equivalent. See ASM_OUTPUT_DEF below. */
#if 0
/* This is *NOT* how to equate one symbol to another symbol. The assembler
'=' syntax just equates a name to a constant expression.
See ASM_OUTPUT_WEAK_ALIAS. */
#define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2) \
do { fprintf ((FILE), "\t"); \
assemble_name (FILE, LABEL1); \
fprintf (FILE, " = "); \
assemble_name (FILE, LABEL2); \
fprintf (FILE, "\n"); \
} while (0)
#ifdef IRIX_USING_GNU_LD
#define IRIX_SUBTARGET_LINK_SPEC \
"%{mabi=32: -melf32bsmip}%{mabi=n32: -melf32bmipn32}%{mabi=64: -melf64bmip}"
#else
#define IRIX_SUBTARGET_LINK_SPEC \
"%{w} -_SYSTYPE_SVR4 -woff 131 \
%{mabi=32: -32}%{mabi=n32: -n32}%{mabi=64: -64}%{!mabi*: -n32}"
#endif
/* Define the strings used for the special svr4 .type and .size directives. */
#define TYPE_ASM_OP "\t.type\t"
#define SIZE_ASM_OP "\t.size\t"
/* IRIX assembler does not support the init_priority C++ attribute. */
#undef SUPPORTS_INIT_PRIORITY
#define SUPPORTS_INIT_PRIORITY 0
/* A linker error can empirically be avoided by removing duplicate
library search directories. */
#define LINK_ELIMINATE_DUPLICATE_LDIRECTORIES 1
#define POPSECTION_ASM_OP "\t.popsection"
/* ??? If no mabi=X option give, but a mipsX option is, then should depend
on the mipsX option. */
/* If no mips[3,4] option given, give the appropriate default for mabi=X */
#undef SUBTARGET_ASM_SPEC
#define SUBTARGET_ASM_SPEC "%{!mabi*:-n32} %{mabi=32:-32} %{!mips*: %{!mabi*:-mips3} %{mabi=32:-mips2} %{mabi=n32|mabi=64:-mips3}}"
/* Must pass -g0 to the assembler, otherwise it may overwrite our
debug info with its own debug info. */
/* Must pass -show instead of -v. */
/* Must pass -G 0 to the assembler, otherwise we may get warnings about
GOT overflow. */
/* Must pass -w to the assembler to quiet warnings about .ent/.end for dwarf2. */
#if ((TARGET_CPU_DEFAULT | TARGET_DEFAULT) & MASK_GAS) == 0
/* We have a separate file for gas. */
#undef SUBTARGET_MIPS_AS_ASM_SPEC
#define SUBTARGET_MIPS_AS_ASM_SPEC "%{v:-show} -G 0 -w"
#undef SUBTARGET_ASM_DEBUGGING_SPEC
#define SUBTARGET_ASM_DEBUGGING_SPEC "-g0"
/* The MIPS assembler occasionally misoptimizes. Since GCC should be
doing scheduling anyhow, just turn off optimization in the assembler. */
#undef SUBTARGET_ASM_OPTIMIZING_SPEC
#define SUBTARGET_ASM_OPTIMIZING_SPEC "-O0"
#endif
/* The assembler now accepts .section pseudo-ops, but it does not allow
one to change the section in the middle of a function, so we can't use
the INIT_SECTION_ASM_OP code in crtstuff. But we can build up the ctor
and dtor lists this way, so we use -init and -fini to invoke the
do_global_* functions instead of running collect2. */
#undef BSS_SECTION_ASM_OP
#define BSS_SECTION_ASM_OP_32 "\t.data"
#define BSS_SECTION_ASM_OP_64 "\t.section\t.bss"
#define BSS_SECTION_ASM_OP \
(mips_abi != ABI_32 && mips_abi != ABI_O64 \
? BSS_SECTION_ASM_OP_64 \
: BSS_SECTION_ASM_OP_32)
#undef READONLY_DATA_SECTION_ASM_OP
#define READONLY_DATA_SECTION_ASM_OP_32 "\t.rdata"
#define READONLY_DATA_SECTION_ASM_OP_64 "\t.section\t.rodata"
#define READONLY_DATA_SECTION_ASM_OP \
(mips_abi != ABI_32 && mips_abi != ABI_O64 \
? READONLY_DATA_SECTION_ASM_OP_64 \
: READONLY_DATA_SECTION_ASM_OP_32)
/* The default definition in defaults.h cannot cope with the runtime-variable
definition of DWARF2_UNWIND_INFO above, so define here explicitly. */
#define EH_FRAME_SECTION_NAME ".eh_frame"
/* MUST_USE_SJLJ_EXCEPTIONS has the same problem. */
#define MUST_USE_SJLJ_EXCEPTIONS (DWARF2_UNWIND_INFO == 0)
/* The native IRIX 6 O32 assembler doesn't support named sections, while
the N32/N64 assembler does. We need crt{begin, end}.o for the N32/N64
ABIs, but there's no way to disable them for just one multilib.
Therefore we provide dummy definitions to allow crtstuff.c to compile,
but the resulting files are not used for the O32 ABI. */
#if (defined _ABIO32 && _MIPS_SIM == _ABIO32) \
&& ((TARGET_CPU_DEFAULT | TARGET_DEFAULT) & MASK_GAS) == 0
/* Provide dummy definitions. */
#define CTORS_SECTION_ASM_OP ""
#define DTORS_SECTION_ASM_OP ""
/* Undef so JCR_SECTION_NAME isn't defined and __JCR_{LIST, END}__ are not
used. */
#undef TARGET_ASM_NAMED_SECTION
/* Undef so __EH_FRAME_BEGIN__/__FRAME_END__ are not used. */
#undef EH_FRAME_SECTION_NAME
#endif /* _MIPS_SIM == _ABIO32 && !GAS */
/* SGI assembler needs all sorts of extra help to do alignment properly. */
#undef ASM_OUTPUT_ALIGN
#define ASM_OUTPUT_ALIGN irix_asm_output_align
#undef MAX_OFILE_ALIGNMENT
#define MAX_OFILE_ALIGNMENT (32768*8)
/* ??? SGI assembler may core dump when compiling with -g.
Sometimes as succeeds, but then we get a linker error. (cmds.c in 072.sc)
Getting rid of .file solves both problems. */
#undef ASM_OUTPUT_FILENAME
#define ASM_OUTPUT_FILENAME(STREAM, NUM_SOURCE_FILENAMES, NAME) \
do \
{ \
if (mips_abi == ABI_32) \
fprintf (STREAM, "\t.file\t%d ", NUM_SOURCE_FILENAMES); \
else \
fprintf (STREAM, "\t#.file\t%d ", NUM_SOURCE_FILENAMES); \
output_quoted_string (STREAM, NAME); \
fputs ("\n", STREAM); \
} \
while (0)
/* ??? SGI assembler gives warning whenever .lcomm is used. */
#undef ASM_OUTPUT_ALIGNED_LOCAL
#define ASM_OUTPUT_ALIGNED_LOCAL(STREAM, NAME, SIZE, ALIGN) \
do \
{ \
if (mips_abi != ABI_32 && mips_abi != ABI_O64) \
{ \
bss_section (); \
mips_declare_object (STREAM, NAME, "", ":\n", 0); \
ASM_OUTPUT_ALIGN (STREAM, floor_log2 (ALIGN / BITS_PER_UNIT)); \
ASM_OUTPUT_SKIP (STREAM, SIZE); \
} \
else \
mips_declare_common_object (STREAM, NAME, "\n\t.lcomm\t", \
SIZE, ALIGN, false); \
} \
while (0)
/* A C statement (sans semicolon) to output to the stdio stream
FILE the assembler definition of uninitialized global DECL named
NAME whose size is SIZE bytes and alignment is ALIGN bytes.
Try to use asm_output_aligned_bss to implement this macro. */
#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
#undef ASM_DECLARE_OBJECT_NAME
#define ASM_DECLARE_OBJECT_NAME mips_declare_object_name
#undef ASM_FINISH_DECLARE_OBJECT
#define ASM_FINISH_DECLARE_OBJECT mips_finish_declare_object
#undef LOCAL_LABEL_PREFIX
#define LOCAL_LABEL_PREFIX ((mips_abi == ABI_32 || mips_abi == ABI_O64) \
? "$" : ".")
/* Profiling is supported via libprof1.a not -lc_p as in IRIX 3. */
/* ??? If no mabi=X option give, but a mipsX option is, then should depend
on the mipsX option. */
#undef IRIX_STARTFILE_SPEC
#define IRIX_STARTFILE_SPEC \
#undef STARTFILE_SPEC
#define STARTFILE_SPEC \
"%{!shared: \
%{mabi=32:%{pg:gcrt1.o%s} \
%{!pg:%{p:mcrt1.o%s libprof1.a%s}%{!p:crt1.o%s}}} \
@ -413,17 +68,16 @@ while (0)
%{!p:/usr/lib64/mips4/crt1.o}}} \
%{!mips4:%{pg:/usr/lib64/mips3/gcrt1.o} \
%{!pg:%{p:/usr/lib64/mips3/mcrt1.o /usr/lib64/mips3/libprof1.a} \
%{!p:/usr/lib64/mips3/crt1.o}}}} \
%{!mabi*: \
%{mips4:%{pg:/usr/lib32/mips4/gcrt1.o%s} \
%{!pg:%{p:/usr/lib32/mips4/mcrt1.o%s /usr/lib32/mips4/libprof1.a%s} \
%{!p:/usr/lib32/mips4/crt1.o%s}}} \
%{!mips4:%{pg:/usr/lib32/mips3/gcrt1.o%s} \
%{!pg:%{p:/usr/lib32/mips3/mcrt1.o%s /usr/lib32/mips3/libprof1.a%s} \
%{!p:/usr/lib32/mips3/crt1.o%s}}}}}"
%{!p:/usr/lib64/mips3/crt1.o}}}}} \
irix-crti.o%s crtbegin.o%s"
#undef STARTFILE_SPEC
#define STARTFILE_SPEC "%(irix_startfile_spec) crtbegin.o%s"
#ifdef IRIX_USING_GNU_LD
#define SUBTARGET_DONT_WARN_UNUSED_SPEC ""
#define SUBTARGET_WARN_UNUSED_SPEC ""
#else
#define SUBTARGET_DONT_WARN_UNUSED_SPEC "-dont_warn_unused"
#define SUBTARGET_WARN_UNUSED_SPEC "-warn_unused"
#endif
#undef LIB_SPEC
#define LIB_SPEC \
@ -431,51 +85,24 @@ while (0)
-L/usr/lib32} \
%{mabi=64: %{mips4:-L/usr/lib64/mips4} %{!mips4:-L/usr/lib64/mips3} \
-L/usr/lib64} \
%{!mabi*: %{mips4:-L/usr/lib32/mips4} %{!mips4:-L/usr/lib32/mips3} \
-L/usr/lib32} \
%{!shared: \
-dont_warn_unused %{p:libprof1.a%s}%{pg:libprof1.a%s} -lc -warn_unused}"
%{!shared:" \
SUBTARGET_DONT_WARN_UNUSED_SPEC \
" %{p:libprof1.a%s}%{pg:libprof1.a%s} -lc " \
SUBTARGET_WARN_UNUSED_SPEC "}"
/* Avoid getting two warnings for libgcc.a everytime we link. */
#undef LIBGCC_SPEC
#define LIBGCC_SPEC "-dont_warn_unused -lgcc -warn_unused"
#define LIBGCC_SPEC \
SUBTARGET_DONT_WARN_UNUSED_SPEC " -lgcc " SUBTARGET_WARN_UNUSED_SPEC
/* ??? If no mabi=X option give, but a mipsX option is, then should depend
on the mipsX option. */
#undef IRIX_ENDFILE_SPEC
#define IRIX_ENDFILE_SPEC \
"%{!shared: \
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
"crtend.o%s irix-crtn.o%s \
%{!shared: \
%{mabi=32:crtn.o%s}\
%{mabi=n32:%{mips4:/usr/lib32/mips4/crtn.o%s}\
%{!mips4:/usr/lib32/mips3/crtn.o%s}}\
%{mabi=64:%{mips4:/usr/lib64/mips4/crtn.o%s}\
%{!mips4:/usr/lib64/mips3/crtn.o%s}}\
%{!mabi*:%{mips4:/usr/lib32/mips4/crtn.o%s}\
%{!mips4:/usr/lib32/mips3/crtn.o%s}}}"
#undef ENDFILE_SPEC
#define ENDFILE_SPEC "crtend.o%s %(irix_endfile_spec)"
/* ??? If no mabi=X option give, but a mipsX option is, then should depend
on the mipsX option. */
#undef LINK_SPEC
#define LINK_SPEC "\
%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} %{mips4} \
%{bestGnum} %{shared} %{non_shared} \
%{call_shared} %{no_archive} %{exact_version} %{w} \
%{!shared: %{!non_shared: %{!call_shared:%{!r: -call_shared -no_unresolved}}}} \
%{rpath} %{!mabi=32: -init __do_global_ctors -fini __do_global_dtors} \
%{shared:-hidden_symbol __do_global_ctors,__do_global_ctors_1,__do_global_dtors} \
-_SYSTYPE_SVR4 -woff 131 \
%{mabi=32: -32}%{mabi=n32: -n32}%{mabi=64: -64}%{!mabi*: -n32}"
/* We need to disable collecting for the N32 and N64 ABIs. */
#define COLLECT_PARSE_FLAG(FLAG) \
do { \
if (! strcmp (FLAG, "-n32") || ! strcmp (FLAG, "-64")) \
do_collecting = 0; \
if (! strcmp (FLAG, "-32") || ! strcmp (FLAG, "-o32")) \
do_collecting = 1; \
} while (0)
%{!mips4:/usr/lib64/mips3/crtn.o%s}}}"
#define MIPS_TFMODE_FORMAT mips_extended_format

View File

@ -1,48 +0,0 @@
/* Definitions for MIPS running IRIX 6 using GNU AS
Copyright (C) 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
GCC 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.
GCC 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 GCC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Definitions of target machine for GNU compiler. IRIX 6 with GNU as. */
/* Override iris6.h version to always use -init/-fini.
FIXME: integrate those use separate spec/define for this? */
#undef LINK_SPEC
#define LINK_SPEC "\
%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} %{mips4} \
%{bestGnum} %{shared} %{non_shared} \
%{call_shared} %{no_archive} %{exact_version} %{w} \
%{!shared: %{!non_shared: %{!call_shared:%{!r: -call_shared -no_unresolved}}}} \
%{rpath} -init __do_global_ctors -fini __do_global_dtors \
%{shared:-hidden_symbol __do_global_ctors,__do_global_ctors_1,__do_global_dtors} \
-_SYSTYPE_SVR4 -woff 131 \
%{mabi=32: -32}%{mabi=n32: -n32}%{mabi=64: -64}%{!mabi*: -n32}"
/* Disable SHF_MERGE support. Even if gas supports it, the IRIX 6 O32 ld
does not without a special elspec(5) file.
FIXME: Only do this if not using GNU ld. */
#if HAVE_GAS_SHF_MERGE
#undef HAVE_GAS_SHF_MERGE
#define HAVE_GAS_SHF_MERGE (mips_abi != ABI_32)
#endif /* HAVE_GAS_SHF_MERGE */
/* There's no need to perform collecting with GNU as. */
#undef COLLECT_PARSE_FLAG

View File

@ -1,60 +0,0 @@
/* Definitions of target machine for GNU compiler. Iris version 6 with
GNU ld.
Copyright (C) 1999, 2000, 2002, 2004 Free Software Foundation, Inc.
Written by Mark Mitchell <mark@codesourcery.com>.
This file is part of GCC.
GCC 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.
GCC 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 GCC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#undef LIB_SPEC
#define LIB_SPEC \
"%{mabi=n32: %{mips4:-L/usr/lib32/mips4} %{!mips4:-L/usr/lib32/mips3} \
-L/usr/lib32} \
%{mabi=64: %{mips4:-L/usr/lib64/mips4} %{!mips4:-L/usr/lib64/mips3} \
-L/usr/lib64} \
%{!mabi*: %{mips4:-L/usr/lib32/mips4} %{!mips4:-L/usr/lib32/mips3} \
-L/usr/lib32} \
%{!shared: \
%{p:libprof1.a%s}%{pg:libprof1.a%s} -lc}"
/* Use the default libgcc spec. */
#undef LIBGCC_SPEC
/* ??? If no mabi=X option give, but a mipsX option is, then should depend
on the mipsX option. */
#undef LINK_SPEC
#define LINK_SPEC "\
%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} %{mips4} \
%{bestGnum} %{shared} %{non_shared} \
%{call_shared} %{no_archive} %{exact_version} \
%{static: -non_shared} \
%{!static: \
%{!shared: %{!non_shared: %{!call_shared: -call_shared}}}} \
%{rpath} -init __gcc_init -fini __gcc_fini \
%{mabi=32: -melf32bsmip}%{mabi=n32: -melf32bmipn32}%{mabi=64: -melf64bmip}%{!mabi*: -melf32bmipn32}"
#undef STARTFILE_SPEC
#define STARTFILE_SPEC "%(irix_startfile_spec) irix-crti.o%s crtbegin.o%s"
#undef ENDFILE_SPEC
#define ENDFILE_SPEC "crtend.o%s irix-crtn.o%s %(irix_endfile_spec)"
/* The GNU linker supports one-only sections. */
#define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
#define INIT_SECTION_ASM_OP "\t.section\t.init,0x1,0x6,4,4"
#define FINI_SECTION_ASM_OP "\t.section\t.fini,0x1,0x6,4,4"

View File

@ -2,10 +2,31 @@
.set noreorder
.set nomacro
.section .init,0x1,0x6,4,4
jr $31
nop
/* The GNU and SGI linkers differ in their implementation of -init and -fini.
With the GNU linker, there can only be a single -init option, and the
linker simply sets DT_INIT to that value. gcc's initialization and
finalization code can go directly in .init, with the prologue and
epilogue of the main initialization routine being provided by external
object files (*crti.o and *crtn.o in this case).
The SGI linker instead accepts several -init options. It will set DT_INIT
to a linker-created function (placed in .init) that calls each of the -init
functions in turn. If there is any user code in .init, this linker-created
function will be placed after it. Note that such user code is not treated
specially; it will only be called if the -init options arrange for it to
be called.
In theory, the SGI model should allow the crti, crtn and intermediate code
to go in .init, just like it can with the GNU linker. However, doing this
seems to confuse the linker and triggers an internal error:
ld32: FATAL 2 : Internal: at ../../ld/mips_code.c mips_code_fixup()
text section overflow!
(seen with MIPSpro 7.30). We therefore put everything in a special
.gcc_init section instead. */
.section .gcc_init,"ax",@progbits
.globl __gcc_init
__gcc_init:
#if _MIPS_SIM == _ABIO32
@ -17,10 +38,7 @@ __gcc_init:
sd $28,8($sp)
#endif
.section .fini,0x1,0x6,4,4
jr $31
nop
.section .gcc_fini,"ax",@progbits
.globl __gcc_fini
__gcc_fini:
#if _MIPS_SIM == _ABIO32

View File

@ -2,7 +2,7 @@
.set noreorder
.set nomacro
.section .init,0x1,0x6,4,4
.section .gcc_init,"ax",@progbits
#if _MIPS_SIM == _ABIO32
lw $31,0($sp)
jr $31
@ -14,7 +14,7 @@
daddiu $sp,$sp,16
#endif
.section .fini,0x1,0x6,4,4
.section .gcc_fini,"ax",@progbits
#if _MIPS_SIM == _ABIO32
lw $31,0($sp)
jr $31

View File

@ -157,9 +157,6 @@ extern HOST_WIDE_INT mips_debugger_offset (rtx, HOST_WIDE_INT);
extern void print_operand (FILE *, rtx, int);
extern void print_operand_address (FILE *, rtx);
extern int mips_output_external (FILE *, tree, const char *);
#if TARGET_IRIX
extern void irix_output_external_libcall (rtx);
#endif
extern void mips_output_filename (FILE *, const char *);
extern void mips_output_lineno (FILE *, int);
extern void mips_output_ascii (FILE *, const char *, size_t, const char *);

View File

@ -181,6 +181,9 @@ static void mips_set_tune (const struct mips_cpu_info *);
static struct machine_function *mips_init_machine_status (void);
static void print_operand_reloc (FILE *, rtx, const char **);
static bool mips_assemble_integer (rtx, unsigned int, int);
#if TARGET_IRIX
static void irix_output_external_libcall (rtx);
#endif
static void mips_file_start (void);
static void mips_file_end (void);
static bool mips_rewrite_small_data_p (rtx);
@ -265,19 +268,6 @@ static tree mips_gimplify_va_arg_expr (tree, tree, tree *, tree *);
static bool mips_pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode mode,
tree, bool);
#if TARGET_IRIX
static void irix_asm_named_section_1 (const char *, unsigned int,
unsigned int);
static void irix_asm_named_section (const char *, unsigned int);
static int irix_section_align_entry_eq (const void *, const void *);
static hashval_t irix_section_align_entry_hash (const void *);
static void irix_file_start (void);
static int irix_section_align_1 (void **, void *);
static void copy_file_data (FILE *, FILE *);
static void irix_file_end (void);
static unsigned int irix_section_type_flags (tree, const char *, int);
#endif
/* Structure to be filled in by compute_frame_size with register
save masks, and offsets for the current function. */
@ -663,21 +653,11 @@ const struct mips_cpu_info mips_cpu_info_table[] = {
#undef TARGET_ASM_FILE_START
#undef TARGET_ASM_FILE_END
#if TARGET_IRIX
#define TARGET_ASM_FILE_START irix_file_start
#define TARGET_ASM_FILE_END irix_file_end
#else
#define TARGET_ASM_FILE_START mips_file_start
#define TARGET_ASM_FILE_END mips_file_end
#endif
#undef TARGET_ASM_FILE_START_FILE_DIRECTIVE
#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
#if TARGET_IRIX
#undef TARGET_SECTION_TYPE_FLAGS
#define TARGET_SECTION_TYPE_FLAGS irix_section_type_flags
#endif
#undef TARGET_INIT_LIBFUNCS
#define TARGET_INIT_LIBFUNCS mips_init_libfuncs
@ -3432,7 +3412,7 @@ mips_build_builtin_va_list (void)
layout_type (record);
return record;
}
else if (TARGET_IRIX && !TARGET_IRIX5)
else if (TARGET_IRIX && TARGET_IRIX6)
/* On IRIX 6, this type is 'char *'. */
return build_pointer_type (char_type_node);
else
@ -4037,58 +4017,6 @@ override_options (void)
if (!TARGET_OLDABI)
flag_pcc_struct_return = 0;
#if defined(USE_COLLECT2)
/* For IRIX 5 or IRIX 6 with integrated O32 ABI support, USE_COLLECT2 is
always defined when GNU as is not in use, but collect2 is only used
for the O32 ABI, so override the toplev.c and target-def.h defaults
for flag_gnu_linker, TARGET_ASM_{CONSTRUCTOR, DESTRUCTOR} and
TARGET_HAVE_CTORS_DTORS.
Since the IRIX 5 and IRIX 6 O32 assemblers cannot handle named
sections, constructor/destructor handling depends on the ABI in use.
Since USE_COLLECT2 is defined, we only need to restore the non-collect2
defaults for the N32/N64 ABIs. */
if (TARGET_IRIX && !TARGET_SGI_O32_AS)
{
targetm.have_ctors_dtors = true;
targetm.asm_out.constructor = default_named_section_asm_out_constructor;
targetm.asm_out.destructor = default_named_section_asm_out_destructor;
}
#endif
/* Handle some quirks of the IRIX 5 and IRIX 6 O32 assemblers. */
if (TARGET_SGI_O32_AS)
{
/* They don't recognize `.[248]byte'. */
targetm.asm_out.unaligned_op.hi = "\t.align 0\n\t.half\t";
targetm.asm_out.unaligned_op.si = "\t.align 0\n\t.word\t";
/* The IRIX 6 O32 assembler gives an error for `align 0; .dword',
contrary to the documentation, so disable it. */
targetm.asm_out.unaligned_op.di = NULL;
/* They cannot handle named sections. */
targetm.have_named_sections = false;
/* Therefore, EH_FRAME_SECTION_NAME isn't defined and we must use
collect2. */
targetm.terminate_dw2_eh_frame_info = true;
targetm.asm_out.eh_frame_section = collect2_eh_frame_section;
/* They cannot handle debug information. */
if (write_symbols != NO_DEBUG)
{
/* Adapt wording to IRIX version: IRIX 5 only had a single ABI,
so -mabi=32 isn't usually specified. */
if (TARGET_IRIX5)
inform ("-g is only supported using GNU as,");
else
inform ("-g is only supported using GNU as with -mabi=32,");
inform ("-g option disabled");
write_symbols = NO_DEBUG;
}
}
if ((target_flags_explicit & MASK_BRANCHLIKELY) == 0)
{
/* If neither -mbranch-likely nor -mno-branch-likely was given
@ -4996,7 +4924,7 @@ mips_output_external (FILE *file ATTRIBUTE_UNUSED, tree decl, const char *name)
}
#if TARGET_IRIX
void
static void
irix_output_external_libcall (rtx fun)
{
register struct extern_list *p;
@ -5027,7 +4955,7 @@ mips_output_filename (FILE *stream, const char *name)
else if (mips_output_filename_first_time)
{
mips_output_filename_first_time = 0;
SET_FILE_NUMBER ();
num_source_filenames += 1;
current_function_file = name;
ASM_OUTPUT_FILENAME (stream, num_source_filenames, name);
/* This tells mips-tfile that stabs will follow. */
@ -5046,7 +4974,7 @@ mips_output_filename (FILE *stream, const char *name)
else if (name != current_function_file
&& strcmp (name, current_function_file) != 0)
{
SET_FILE_NUMBER ();
num_source_filenames += 1;
current_function_file = name;
ASM_OUTPUT_FILENAME (stream, num_source_filenames, name);
}
@ -5070,7 +4998,6 @@ mips_output_lineno (FILE *stream, int line)
else
{
fprintf (stream, "\n\t.loc\t%d %d\n", num_source_filenames, line);
LABEL_AFTER_LOC (stream);
}
}
@ -5168,9 +5095,8 @@ mips_file_start (void)
if (TARGET_MIPS_AS && optimize && flag_delayed_branch)
fprintf (asm_out_file, "\t.set\tnobopt\n");
if (TARGET_GAS)
if (TARGET_GAS && !TARGET_IRIX)
{
#if defined(OBJECT_FORMAT_ELF) && !TARGET_IRIX
/* Generate a special section to describe the ABI switches used to
produce the resultant binary. This used to be done by the assembler
setting bits in the ELF header's flags field, but we have run out of
@ -5205,16 +5131,12 @@ mips_file_start (void)
/* Restore the default section. */
fprintf (asm_out_file, "\t.previous\n");
#endif
}
/* Generate the pseudo ops that System V.4 wants. */
#ifndef ABICALLS_ASM_OP
#define ABICALLS_ASM_OP "\t.abicalls"
#endif
if (TARGET_ABICALLS)
/* ??? but do not want this (or want pic0) if -non-shared? */
fprintf (asm_out_file, "%s\n", ABICALLS_ASM_OP);
fprintf (asm_out_file, "\t.abicalls\n");
if (TARGET_MIPS16)
fprintf (asm_out_file, "\t.set\tmips16\n");
@ -5317,7 +5239,7 @@ mips_output_aligned_decl_common (FILE *stream, tree decl, const char *name,
else
/* The SGI o32 assembler doesn't accept an alignment. */
mips_declare_common_object (stream, name, "\n\t.comm\t",
size, align, !TARGET_SGI_O32_AS);
size, align, true);
}
/* Declare a common object of SIZE bytes using asm directive INIT_STRING.
@ -5380,21 +5302,18 @@ void
mips_declare_object_name (FILE *stream, const char *name,
tree decl ATTRIBUTE_UNUSED)
{
if (!TARGET_SGI_O32_AS)
{
#ifdef ASM_OUTPUT_TYPE_DIRECTIVE
ASM_OUTPUT_TYPE_DIRECTIVE (stream, name, "object");
ASM_OUTPUT_TYPE_DIRECTIVE (stream, name, "object");
#endif
size_directive_output = 0;
if (!flag_inhibit_size_directive && DECL_SIZE (decl))
{
HOST_WIDE_INT size;
size_directive_output = 0;
if (!flag_inhibit_size_directive && DECL_SIZE (decl))
{
HOST_WIDE_INT size;
size_directive_output = 1;
size = int_size_in_bytes (TREE_TYPE (decl));
ASM_OUTPUT_SIZE_DIRECTIVE (stream, name, size);
}
size_directive_output = 1;
size = int_size_in_bytes (TREE_TYPE (decl));
ASM_OUTPUT_SIZE_DIRECTIVE (stream, name, size);
}
mips_declare_object (stream, name, "", ":\n", 0);
@ -5408,8 +5327,7 @@ mips_finish_declare_object (FILE *stream, tree decl, int top_level, int at_end)
const char *name;
name = XSTR (XEXP (DECL_RTL (decl), 0), 0);
if (!TARGET_SGI_O32_AS
&& !flag_inhibit_size_directive
if (!flag_inhibit_size_directive
&& DECL_SIZE (decl) != 0
&& !at_end && top_level
&& DECL_INITIAL (decl) == error_mark_node
@ -5981,6 +5899,10 @@ mips_output_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
fputs (":\n", file);
}
/* Stop mips_file_end from treating this function as external. */
if (TARGET_IRIX && mips_abi == ABI_32)
TREE_ASM_WRITTEN (DECL_NAME (cfun->decl)) = 1;
if (!flag_inhibit_size_directive)
{
/* .frame FRAMEREG, FRAMESIZE, RETREG */
@ -9265,204 +9187,4 @@ mips_emit_prefetch (rtx *operands)
return "";
}
#if TARGET_IRIX
/* Output assembly to switch to section NAME with attribute FLAGS. */
static void
irix_asm_named_section_1 (const char *name, unsigned int flags,
unsigned int align)
{
unsigned int sh_type, sh_flags, sh_entsize;
sh_flags = 0;
if (!(flags & SECTION_DEBUG))
sh_flags |= 2; /* SHF_ALLOC */
if (flags & SECTION_WRITE)
sh_flags |= 1; /* SHF_WRITE */
if (flags & SECTION_CODE)
sh_flags |= 4; /* SHF_EXECINSTR */
if (flags & SECTION_SMALL)
sh_flags |= 0x10000000; /* SHF_MIPS_GPREL */
if (strcmp (name, ".debug_frame") == 0)
sh_flags |= 0x08000000; /* SHF_MIPS_NOSTRIP */
if (flags & SECTION_DEBUG)
sh_type = 0x7000001e; /* SHT_MIPS_DWARF */
else if (flags & SECTION_BSS)
sh_type = 8; /* SHT_NOBITS */
else
sh_type = 1; /* SHT_PROGBITS */
if (flags & SECTION_CODE)
sh_entsize = 4;
else
sh_entsize = 0;
fprintf (asm_out_file, "\t.section %s,%#x,%#x,%u,%u\n",
name, sh_type, sh_flags, sh_entsize, align);
}
static void
irix_asm_named_section (const char *name, unsigned int flags)
{
if (TARGET_SGI_O32_AS)
default_no_named_section (name, flags);
else if (mips_abi == ABI_32 && TARGET_GAS)
default_elf_asm_named_section (name, flags);
else
irix_asm_named_section_1 (name, flags, 0);
}
/* In addition to emitting a .align directive, record the maximum
alignment requested for the current section. */
struct irix_section_align_entry GTY (())
{
const char *name;
unsigned int log;
unsigned int flags;
};
static htab_t irix_section_align_htab;
static FILE *irix_orig_asm_out_file;
static int
irix_section_align_entry_eq (const void *p1, const void *p2)
{
const struct irix_section_align_entry *old = p1;
const char *new = p2;
return strcmp (old->name, new) == 0;
}
static hashval_t
irix_section_align_entry_hash (const void *p)
{
const struct irix_section_align_entry *old = p;
return htab_hash_string (old->name);
}
void
irix_asm_output_align (FILE *file, unsigned int log)
{
const char *section = current_section_name ();
struct irix_section_align_entry **slot, *entry;
if (mips_abi != ABI_32)
{
if (! section)
abort ();
slot = (struct irix_section_align_entry **)
htab_find_slot_with_hash (irix_section_align_htab, section,
htab_hash_string (section), INSERT);
entry = *slot;
if (! entry)
{
entry = (struct irix_section_align_entry *)
xmalloc (sizeof (struct irix_section_align_entry));
*slot = entry;
entry->name = section;
entry->log = log;
entry->flags = current_section_flags ();
}
else if (entry->log < log)
entry->log = log;
}
fprintf (file, "\t.align\t%u\n", log);
}
/* The IRIX assembler does not record alignment from .align directives,
but takes it from the first .section directive seen. Play file
switching games so that we can emit a .section directive at the
beginning of the file with the proper alignment attached. */
static void
irix_file_start (void)
{
mips_file_start ();
if (mips_abi == ABI_32)
return;
irix_orig_asm_out_file = asm_out_file;
asm_out_file = tmpfile ();
irix_section_align_htab = htab_create (31, irix_section_align_entry_hash,
irix_section_align_entry_eq, NULL);
}
static int
irix_section_align_1 (void **slot, void *data ATTRIBUTE_UNUSED)
{
const struct irix_section_align_entry *entry
= *(const struct irix_section_align_entry **) slot;
irix_asm_named_section_1 (entry->name, entry->flags, 1 << entry->log);
return 1;
}
static void
copy_file_data (FILE *to, FILE *from)
{
char buffer[8192];
size_t len;
rewind (from);
if (ferror (from))
fatal_error ("can't rewind temp file: %m");
while ((len = fread (buffer, 1, sizeof (buffer), from)) > 0)
if (fwrite (buffer, 1, len, to) != len)
fatal_error ("can't write to output file: %m");
if (ferror (from))
fatal_error ("can't read from temp file: %m");
if (fclose (from))
fatal_error ("can't close temp file: %m");
}
static void
irix_file_end (void)
{
if (mips_abi != ABI_32)
{
/* Emit section directives with the proper alignment at the top of the
real output file. */
FILE *temp = asm_out_file;
asm_out_file = irix_orig_asm_out_file;
htab_traverse (irix_section_align_htab, irix_section_align_1, NULL);
/* Copy the data emitted to the temp file to the real output file. */
copy_file_data (asm_out_file, temp);
}
mips_file_end ();
}
/* Implement TARGET_SECTION_TYPE_FLAGS. Make sure that .sdata and
.sbss sections get the SECTION_SMALL flag: this isn't set by the
default code. */
static unsigned int
irix_section_type_flags (tree decl, const char *section, int relocs_p)
{
unsigned int flags;
flags = default_section_type_flags (decl, section, relocs_p);
if (strcmp (section, ".sdata") == 0
|| strcmp (section, ".sbss") == 0
|| strncmp (section, ".gnu.linkonce.s.", 16) == 0
|| strncmp (section, ".gnu.linkonce.sb.", 17) == 0)
flags |= SECTION_SMALL;
return flags;
}
#endif /* TARGET_IRIX */
#include "gt-mips.h"

View File

@ -365,8 +365,7 @@ extern const struct mips_cpu_info *mips_tune_info;
/* IRIX specific stuff. */
#define TARGET_IRIX 0
#define TARGET_IRIX5 0
#define TARGET_SGI_O32_AS (TARGET_IRIX && mips_abi == ABI_32 && !TARGET_GAS)
#define TARGET_IRIX6 0
/* Define preprocessor macros for the -march and -mtune options.
PREFIX is either _MIPS_ARCH or _MIPS_TUNE, INFO is the selected
@ -1060,12 +1059,6 @@ extern const struct mips_cpu_info *mips_tune_info;
#define ASM_ABI_DEFAULT_SPEC "-mabi=eabi"
#endif
/* Only ELF targets can switch the ABI. */
#ifndef OBJECT_FORMAT_ELF
#undef ASM_ABI_DEFAULT_SPEC
#define ASM_ABI_DEFAULT_SPEC ""
#endif
/* TARGET_ASM_SPEC is used to select either MIPS_AS_ASM_SPEC or
GAS_ASM_SPEC as the default, depending upon the value of
TARGET_DEFAULT. */
@ -1210,18 +1203,6 @@ extern const struct mips_cpu_info *mips_tune_info;
#ifndef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS
#endif
/* If defined, this macro is an additional prefix to try after
`STANDARD_EXEC_PREFIX'. */
#ifndef MD_EXEC_PREFIX
#define MD_EXEC_PREFIX "/usr/lib/cmplrs/cc/"
#endif
#ifndef MD_STARTFILE_PREFIX
#define MD_STARTFILE_PREFIX "/usr/lib/cmplrs/cc/"
#endif
#define DBX_DEBUGGING_INFO 1 /* generate stabs (OSF/rose) */
#define MIPS_DEBUGGING_INFO 1 /* MIPS specific debugging info */
@ -2858,11 +2839,6 @@ while (0)
/* How to tell the debugger about changes of source files. */
#ifndef SET_FILE_NUMBER
#define SET_FILE_NUMBER() ++num_source_filenames
#endif
#define ASM_OUTPUT_SOURCE_FILENAME(STREAM, NAME) \
mips_output_filename (STREAM, NAME)
@ -2876,14 +2852,6 @@ do \
} \
while (0)
/* This is how to output a note the debugger telling it the line number
to which the following sequence of instructions corresponds.
Silicon graphics puts a label after each .loc. */
#ifndef LABEL_AFTER_LOC
#define LABEL_AFTER_LOC(STREAM)
#endif
#ifndef ASM_OUTPUT_SOURCE_LINE
#define ASM_OUTPUT_SOURCE_LINE(STREAM, LINE, COUNTER) \
mips_output_lineno (STREAM, LINE)

View File

@ -87,3 +87,18 @@ do { \
} while (0)
#define PUT_SDB_EPILOGUE_END(NAME)
/* We need to use .esize and .etype instead of .size and .type to
avoid conflicting with ELF directives. */
#undef PUT_SDB_SIZE
#define PUT_SDB_SIZE(a) \
do { \
fprintf (asm_out_file, "\t.esize\t" HOST_WIDE_INT_PRINT_DEC ";", \
(HOST_WIDE_INT) (a)); \
} while (0)
#undef PUT_SDB_TYPE
#define PUT_SDB_TYPE(a) \
do { \
fprintf (asm_out_file, "\t.etype\t0x%x;", (a)); \
} while (0)

View File

@ -1,2 +1,12 @@
# Find all of the declarations from the header files
FIXPROTO_DEFINES= -D__EXTENSIONS__ -D_SGI_SOURCE -D_LANGUAGE_C_PLUS_PLUS
FIXPROTO_DEFINES = -D__EXTENSIONS__ -D_SGI_SOURCE -D_LANGUAGE_C_PLUS_PLUS
$(T)irix-crti.o: $(srcdir)/config/mips/irix-crti.asm $(GCC_PASSES)
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-c -o $@ -x assembler-with-cpp $<
$(T)irix-crtn.o: $(srcdir)/config/mips/irix-crtn.asm $(GCC_PASSES)
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-c -o $@ -x assembler-with-cpp $<
EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o irix-crti.o irix-crtn.o

View File

@ -1,30 +0,0 @@
# Build a shared libgcc library.
SHLIB_EXT = .so
SHLIB_SOLINK = @shlib_base_name@.so
SHLIB_SONAME = @shlib_so_name@.so.1
SHLIB_NAME = @shlib_dir@@shlib_so_name@.so.1
SHLIB_MAP = @shlib_map_file@
SHLIB_OBJS = @shlib_objs@
SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-Wl,-soname,$(SHLIB_SONAME) \
-o $(SHLIB_NAME) @multilib_flags@ $(SHLIB_OBJS) -lc && \
rm -f $(SHLIB_SOLINK) && \
$(LN_S) $(SHLIB_NAME) $(SHLIB_SOLINK)
# ??? Irix 6.5 seems to eat the option fine (if we somehow remove the
# -hidden_symbol option, which is documented to be ignored in conjunction
# with -exports_file), but fails to actually hide any symbols.
# -Wl,-exports_file,$(SHLIB_MAP)
# $(slibdir) double quoted to protect it from expansion while building
# libgcc.mk. We want this delayed until actual install time.
SHLIB_INSTALL = \
$$(mkinstalldirs) $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
$(INSTALL_DATA) $(SHLIB_NAME) \
$$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
$(LN_S) $(SHLIB_SONAME) \
$$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver

View File

@ -1,11 +0,0 @@
# omit -g, gcc doesn't support the o32 mdebug debugging format and warns about
# every invocation with -g*
# add -save-temps to avoid comparison failure due to embedded temp file names
BOOT_CFLAGS = -O2 -save-temps
# omit -g1
LIBGCC2_DEBUG_CFLAGS =
# omit -g
FORCE_DEBUG_ADAFLAGS =
GNATLIBCFLAGS = -O2

View File

@ -1,5 +0,0 @@
# For svr4 we build crtbegin.o and crtend.o which serve to add begin and
# end labels to the .ctors and .dtors section when we link using gcc.
EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o
CRTSTUFF_T_CFLAGS=-g1

View File

@ -1,5 +1,3 @@
# ??? If no mabi=X option given, but a mipsX option is, then should deal
# with that.
MULTILIB_OPTIONS=mabi=n32/mabi=32/mabi=64
MULTILIB_DIRNAMES=
MULTILIB_MATCHES=
@ -8,12 +6,6 @@ MULTILIB_OSDIRNAMES=. mabi=32 mabi=64
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
# For svr4 we build crtbegin.o and crtend.o which serve to add begin and
# end labels to the .ctors and .dtors section when we link using gcc.
EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o
CRTSTUFF_T_CFLAGS=-g1
LIB2FUNCS_EXTRA = $(srcdir)/config/mips/_tilib.c
TPBIT = tp-bit.c

View File

@ -1,9 +0,0 @@
$(T)irix-crti.o: $(srcdir)/config/mips/irix-crti.asm $(GCC_PASSES)
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-c -o $@ -x assembler-with-cpp $<
$(T)irix-crtn.o: $(srcdir)/config/mips/irix-crtn.asm $(GCC_PASSES)
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-c -o $@ -x assembler-with-cpp $<
EXTRA_MULTILIB_PARTS += irix-crti.o irix-crtn.o

View File

@ -0,0 +1,28 @@
# Build a shared libgcc library.
SHLIB_EXT = .so
SHLIB_SOLINK = @shlib_base_name@.so
SHLIB_SOVERSION = 1
SHLIB_SONAME = @shlib_so_name@.so.$(SHLIB_SOVERSION)
SHLIB_NAME = @shlib_dir@@shlib_so_name@.so.$(SHLIB_SOVERSION)
SHLIB_MAP = @shlib_map_file@
SHLIB_OBJS = @shlib_objs@
SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
SHLIB_LC = -lc
SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-Wl,-soname,$(SHLIB_SONAME) \
-o $(SHLIB_NAME) @multilib_flags@ $(SHLIB_OBJS) $(SHLIB_LC) && \
rm -f $(SHLIB_SOLINK) && \
$(LN_S) $(SHLIB_NAME) $(SHLIB_SOLINK)
# $(slibdir) double quoted to protect it from expansion while building
# libgcc.mk. We want this delayed until actual install time.
SHLIB_INSTALL = \
$$(mkinstalldirs) $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
$(INSTALL_DATA) $(SHLIB_NAME) \
$$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
$(LN_S) $(SHLIB_SONAME) \
$$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver

195
gcc/configure vendored
View File

@ -1030,7 +1030,7 @@ esac
else
echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
fi
cd "$ac_popdir"
cd $ac_popdir
done
fi
@ -2379,7 +2379,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -2437,7 +2438,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -2553,7 +2555,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -2607,7 +2610,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -2652,7 +2656,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -2696,7 +2701,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -3102,7 +3108,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -3173,7 +3180,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -3232,7 +3240,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -3298,7 +3307,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -3368,7 +3378,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -3438,7 +3449,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -3508,7 +3520,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -3579,7 +3592,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -3651,7 +3665,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -3724,7 +3739,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -3774,7 +3790,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -3832,7 +3849,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -4044,7 +4062,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -4214,7 +4233,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -4277,7 +4297,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -5242,7 +5263,7 @@ if test "${gcc_cv_prog_makeinfo_modern+set}" = set; then
else
ac_prog_version=`$MAKEINFO --version 2>&1 |
sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
echo "configure:5245: version of makeinfo is $ac_prog_version" >&5
echo "configure:5266: version of makeinfo is $ac_prog_version" >&5
case $ac_prog_version in
'') gcc_cv_prog_makeinfo_modern=no;;
4.[2-9]*)
@ -5497,7 +5518,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -5567,7 +5589,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -5732,7 +5755,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -5793,7 +5817,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -5863,7 +5888,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -6137,7 +6163,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -6210,7 +6237,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -6251,7 +6279,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -6453,7 +6482,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -6527,7 +6557,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -6581,7 +6612,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -6659,7 +6691,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -6713,7 +6746,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -6781,7 +6815,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -6911,7 +6946,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -7032,7 +7068,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -7383,7 +7420,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -7500,7 +7538,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -7612,7 +7651,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -7770,7 +7810,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -8139,7 +8180,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -8189,7 +8231,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -8264,7 +8307,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -8338,7 +8382,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -8440,7 +8485,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -8525,7 +8571,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -8594,7 +8641,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -8663,7 +8711,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -8746,7 +8795,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -8822,7 +8872,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -8888,7 +8939,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -9024,7 +9076,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -9107,7 +9160,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -9397,7 +9451,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -9666,7 +9721,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -9720,7 +9776,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@ -11728,6 +11785,15 @@ if test $gcc_cv_as_mips_explicit_relocs = yes; then
fi
fi
if test x$gas_flag = xyes \
|| test x"$host" != x"$build" \
|| test ! -x "$gcc_cv_as" \
|| "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
:
else
echo "*** This configuration requires the GNU assembler" >&2
exit 1
fi
;;
esac
# ??? Not all targets support dwarf2 debug_line, even within a version
@ -13408,6 +13474,11 @@ esac
if test x"$ac_file" != x-; then
{ echo "$as_me:$LINENO: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
rm -f "$ac_file"
fi
# Let's still pretend it is `configure' which instantiates (i.e., don't
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
@ -13446,12 +13517,6 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
fi;;
esac
done` || { (exit 1); exit 1; }
if test x"$ac_file" != x-; then
{ echo "$as_me:$LINENO: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
rm -f "$ac_file"
fi
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
sed "$ac_vpsub

View File

@ -2674,6 +2674,15 @@ foo: nop
else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
fi])
if test x$gas_flag = xyes \
|| test x"$host" != x"$build" \
|| test ! -x "$gcc_cv_as" \
|| "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
:
else
echo "*** This configuration requires the GNU assembler" >&2
exit 1
fi
;;
esac
# ??? Not all targets support dwarf2 debug_line, even within a version

View File

@ -788,14 +788,13 @@ whether you use the GNU assembler. On any other system,
@item @samp{m68k-hp-hpux}
@item @samp{m68000-hp-hpux}
@item @samp{m68000-att-sysv}
@item @samp{mips-@var{any}}
@item @samp{sparc-sun-solaris2.@var{any}}
@item @samp{sparc64-@var{any}-solaris2.@var{any}}
@end itemize
On the systems listed above (except for the HP-PA, the SPARC, for ISC on
the 386, and for @samp{mips-sgi-irix5.*}), if you use the GNU assembler,
you should also use the GNU linker (and specify @option{--with-gnu-ld}).
the 386, if you use the GNU assembler, you should also use the GNU linker
(and specify @option{--with-gnu-ld}).
@item @anchor{with-as}--with-as=@var{pathname}
Specify that the
@ -3199,9 +3198,9 @@ to increase its table size for switch statements with the
optimization option, you also need to use @option{-Olimit 3000}.
To enable debugging under IRIX 5, you must use GNU binutils 2.15 or
later, and use the @option{--with-gnu-as} and @option{--with-gnu-ld}
@command{configure} options when configuring GCC@. You need to use GNU
@command{ar} and @command{nm}, also distributed with GNU binutils.
later, and use the @option{--with-gnu-ld} @command{configure} option
when configuring GCC@. You need to use GNU @command{ar} and @command{nm},
also distributed with GNU binutils.
@html
<hr />
@ -3231,12 +3230,7 @@ test.o: ELF 64-bit MSB @dots{}
then your version of @command{cc} uses the O32 or N64 ABI by default. You
should set the environment variable @env{CC} to @samp{cc -n32}
before configuring GCC@. SGI's MIPSpro 7.2 assembler may misassemble
parts of the compiler, causing bootstrap failures. MIPSpro 7.3 is
known to work. MIPSpro C 7.4 may cause bootstrap failures, too, due
to a bug when inlining @code{memcmp}. Either add @code{-U__INLINE_INTRINSICS}
to the @env{CC} environment variable as a workaround or upgrade to
MIPSpro C 7.4.1m.
before configuring GCC@.
If you want the resulting @command{gcc} to run on old 32-bit systems
with the MIPS R4400 CPU, you need to ensure that only code for the @samp{mips3}
@ -3259,6 +3253,10 @@ test.o: ELF N32 MSB mips-4 @dots{}
instead, you should set the environment variable @env{CC} to @samp{cc
-n32 -mips3} or @samp{gcc -mips3} respectively before configuring GCC@.
MIPSpro C 7.4 may cause bootstrap failures, due to a bug when inlining
@code{memcmp}. Either add @code{-U__INLINE_INTRINSICS} to the @env{CC}
environment variable as a workaround or upgrade to MIPSpro C 7.4.1m.
GCC on IRIX 6 is usually built to support the N32, O32 and N64 ABIs. If
you build GCC on a system that doesn't have the N64 libraries installed
or cannot run 64-bit binaries,