configure.in (mips*-*-irix6*o32): Enable stabs.

* configure.in (mips*-*-irix6*o32): Enable stabs.

	gcc:
	* config.gcc (mips-sgi-irix6*o32): New configuration.

	* configure.in (libgcc_visibility): Disable for mips-sgi-irix6*o32
	configurations.
	* configure: Regenerate.

	* config/mips/iris6-o32-as.h: New file.
	* config/mips/iris6-o32.h: New file.

	* config/mips/iris5gas.h (TARGET_ASM_NAMED_SECTION): Define.
	(NM_FLAGS): Define.
	(HAVE_AS_SHF_MERGE): Undefine.

	* config/mips/t-iris5-as: New file.
	* config.gcc (mips-sgi-irix6*o32, mips-sgi-irix5*): Use it.

	* config/mips/t-iris6 (SHLIB_EXT, SHLIB_SOLINK, SHLIB_SONAME,
	SHLIB_NAME, SHLIB_MAP, SHLIB_OBJS, SHLIB_SLIBDIR_QUAL, SHLIB_LINK,
	SHLIB_INSTALL, SHLIB_MKMAP, SHLIB_MAPFILES, FPBIT, DPBIT,
	dp-bit.c, fp-bit.c): Move ...
	* config/mips/t-iris5-6: ... here.
	New file, shared by IRIX 5 and IRIX 6.
	* config.gcc (mips-sgi-irix6*o32, mips-sgi-irix6*,
	mips-sgi-irix5*): Use it.

	* config/mips/iris6.h: Remove duplicate comment.

	* config/mips/mips.c (TARGET_ASM_UNALIGNED_DI_OP) [TARGET_IRIX5 &&
	!TARGET_IRIX6]: Define.
	(mips_asm_file_start): Don't emit mdebug.<ABI> sections on IRIX 5/6.

	* config/mips/mips.h (ASM_DECLARE_FUNCTION_NAME): Fix comment.

	gcc/testsuite:
	* gcc.misc-tests/linkage.exp: Handle mips-sgi-irix6*o32
	configuration and IRIX 6 O32 ABI.

	libstdc++-v3:
	* configure.target (target_os switch): Allow for irix6*o32
	configurations.

From-SVN: r55401
This commit is contained in:
Rainer Orth 2002-07-11 18:56:58 +00:00 committed by Rainer Orth
parent a18c2c5f98
commit 789b7de56b
19 changed files with 588 additions and 385 deletions

View File

@ -1,3 +1,7 @@
2002-07-11 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* configure.in (mips*-*-irix6*o32): Enable stabs.
2002-07-08 Nathanael Nerode <neroden@gcc.gnu.org>
* configure.in: Don't build grez.

View File

@ -1255,6 +1255,10 @@ esac
# Default to using --with-stabs for certain targets.
if test x${with_stabs} = x ; then
case "${target}" in
mips*-*-irix6*o32)
with_stabs=yes;
withoptions="${withoptions} --with-stabs"
;;
mips*-*-irix6*)
;;
mips*-*-* | alpha*-*-osf*)

View File

@ -1,3 +1,38 @@
2002-07-11 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* config.gcc (mips-sgi-irix6*o32): New configuration.
* configure.in (libgcc_visibility): Disable for mips-sgi-irix6*o32
configurations.
* configure: Regenerate.
* config/mips/iris6-o32-as.h: New file.
* config/mips/iris6-o32.h: New file.
* config/mips/iris5gas.h (TARGET_ASM_NAMED_SECTION): Define.
(NM_FLAGS): Define.
(HAVE_AS_SHF_MERGE): Undefine.
* config/mips/t-iris5-as: New file.
* config.gcc (mips-sgi-irix6*o32, mips-sgi-irix5*): Use it.
* config/mips/t-iris6 (SHLIB_EXT, SHLIB_SOLINK, SHLIB_SONAME,
SHLIB_NAME, SHLIB_MAP, SHLIB_OBJS, SHLIB_SLIBDIR_QUAL, SHLIB_LINK,
SHLIB_INSTALL, SHLIB_MKMAP, SHLIB_MAPFILES, FPBIT, DPBIT,
dp-bit.c, fp-bit.c): Move ...
* config/mips/t-iris5-6: ... here.
New file, shared by IRIX 5 and IRIX 6.
* config.gcc (mips-sgi-irix6*o32, mips-sgi-irix6*,
mips-sgi-irix5*): Use it.
* config/mips/iris6.h: Remove duplicate comment.
* config/mips/mips.c (TARGET_ASM_UNALIGNED_DI_OP) [TARGET_IRIX5 &&
!TARGET_IRIX6]: Define.
(mips_asm_file_start): Don't emit mdebug.<ABI> sections on IRIX 5/6.
* config/mips/mips.h (ASM_DECLARE_FUNCTION_NAME): Fix comment.
2002-07-11 John David Anglin <dave@hiauly1.hia.nrc.ca>
* pa.md (adddi3): Change predicate of operand 2 to adddi3_operand

View File

@ -1745,6 +1745,29 @@ mcore-*-pe*)
tm_file=mcore/mcore-pe.h
tmake_file=mcore/t-mcore-pe
;;
mips-sgi-irix6*o32) # SGI System V.4., IRIX 6, O32 ABI
if test x$gas = xyes
then
tm_file="mips/iris5.h mips/iris5gas.h"
if test x$stabs = xyes
then
tm_file="${tm_file} dbx.h"
fi
else
tm_file="mips/iris5.h mips/iris6-o32-as.h"
tmake_file=mips/t-iris5-as
fi
tm_file="${tm_file} mips/iris6-o32.h"
tmake_file="${tmake_file} mips/t-iris mips/t-iris5-6"
xm_defines=POSIX
xm_file=mips/xm-iris5.h
# mips-tfile doesn't work yet
# See comment in mips/iris5.h file.
use_collect2=yes
# if test x$enable_threads = xyes; then
# thread_file='irix'
# fi
;;
mips-sgi-irix6*) # SGI System V.4., IRIX 6
if test "x$gnu_ld" = xyes
then
@ -1752,7 +1775,7 @@ mips-sgi-irix6*) # SGI System V.4., IRIX 6
else
tm_file=mips/iris6.h
fi
tmake_file="mips/t-iris mips/t-iris6"
tmake_file="mips/t-iris mips/t-iris5-6 mips/t-iris6"
xm_defines=POSIX
# if test x$enable_threads = xyes; then
# thread_file='irix'
@ -1805,8 +1828,9 @@ mips-sgi-irix5*) # SGI System V.4., IRIX 5
fi
else
tm_file=mips/iris5.h
tmake_file=mips/t-iris5-as
fi
tmake_file=mips/t-iris
tmake_file="${tmake_file} mips/t-iris mips/t-iris5-6"
xm_defines=POSIX
xm_file=mips/xm-iris5.h
# mips-tfile doesn't work yet

View File

@ -34,3 +34,16 @@ do { \
extern FILE *asm_out_text_file; \
fprintf (asm_out_text_file, "\t.etype\t0x%x;", (a)); \
} while (0)
/* Switch into a generic section. */
#undef TARGET_ASM_NAMED_SECTION
#define TARGET_ASM_NAMED_SECTION default_elf_asm_named_section
/* 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. */
#undef HAVE_GAS_SHF_MERGE

View File

@ -0,0 +1,13 @@
/* Definitions of target machine for GNU compiler, for MIPS running IRIX 6
(O32 ABI) using the SGI assembler. */
/* Override mips.h default: the IRIX 6 O32 assembler warns about -O3:
as: Warning: -O3 is not supported for assembly compiles for ucode
compilers; changing to -O2.
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}}"

View File

@ -0,0 +1,84 @@
/* Definitions of target machine for GNU compiler, for MIPS running IRIX 6
(O32 ABI). */
/* The O32 ABI on IRIX 6 defaults to the mips2 ISA. */
#undef MIPS_ISA_DEFAULT
#define MIPS_ISA_DEFAULT 2
/* Specify wchar_t and wint_t types. */
#undef WCHAR_TYPE
#define WCHAR_TYPE "long int"
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE 32
#undef WINT_TYPE
#define WINT_TYPE "long int"
#undef WINT_TYPE_SIZE
#define WINT_TYPE_SIZE 32
/* Copied from iris5.h, with _MIPS_SIM definition adapted to SGI cc usage
and -D_LONGLONG added as in iris6.h. */
#undef TARGET_OS_CPP_BUILTINS
#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);
/* Enforce use of O32 assembler, irrespective of SGI_ABI environment variable
and machine type (e.g., R8000 systems default to -64). Gas doesn't need
this, but doesn't hurt either. Need to pass -mips2 to gas which defaults
to -mips1 if no ISA is specified. */
#undef SUBTARGET_ASM_SPEC
#define SUBTARGET_ASM_SPEC "-32 %{!mips*:-mips2}"
/* Enforce use of O32 linker, irrespective of SGI_ABI environment variable
and machine type (e.g., R8000 systems default to -64). Copied from
iris5.h, only adding -32. The default options -call_shared -no_unresolved
are only passed if not invoked with -r. */
#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:%{!r: -call_shared -no_unresolved}}}}} \
%{rpath} \
-_SYSTYPE_SVR4 \
-32"

View File

@ -139,13 +139,6 @@ Boston, MA 02111-1307, USA. */
} \
} while (0)
/* The GNU C++ standard library requires that __EXTENSIONS__ and
_SGI_SOURCE be defined on at least irix6.2 and probably all irix6
prior to 6.5. They normally get defined in SUBTARGET_CPP_SPEC if
!ansi, for g++ we want them regardless. We don't need this on
irix6.5 itself, but it shouldn't hurt other than the namespace
pollution. */
/* Irix 6 uses DWARF-2. */
#define DWARF2_DEBUGGING_INFO
#define MIPS_DEBUGGING_INFO

View File

@ -575,6 +575,8 @@ enum reg_class mips_char_to_class[256] =
#define TARGET_ASM_UNALIGNED_HI_OP "\t.align 0\n\t.half\t"
#undef TARGET_ASM_UNALIGNED_SI_OP
#define TARGET_ASM_UNALIGNED_SI_OP "\t.align 0\n\t.word\t"
#undef TARGET_ASM_UNALIGNED_DI_OP
#define TARGET_ASM_UNALIGNED_DI_OP "\t.align 0\n\t.dword\t"
#endif
#undef TARGET_ASM_FUNCTION_PROLOGUE
@ -6343,13 +6345,14 @@ mips_asm_file_start (stream)
if (TARGET_GAS)
{
#if defined(OBJECT_FORMAT_ELF)
#if defined(OBJECT_FORMAT_ELF) && !(TARGET_IRIX5 || TARGET_IRIX6)
/* 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
bits. GDB needs this information in order to be able to correctly
debug these binaries. See the function mips_gdbarch_init() in
gdb/mips-tdep.c. */
debug these binaries. See the function mips_gdbarch_init() in
gdb/mips-tdep.c. This is unnecessary for the IRIX 5/6 ABIs and
causes unnecessary IRIX 6 ld warnings. */
const char * abi_string = NULL;
switch (mips_abi)

View File

@ -4260,7 +4260,7 @@ do { \
/* This is how to declare a function name. The actual work of
emitting the label is moved to function_prologue, so that we can
get the line number correctly emitted before the .ent directive,
and after any .file directives. Define to NULL so that the function
and after any .file directives. Define as empty so that the function
is not declared before the .ent directive elsewhere. */
#undef ASM_DECLARE_FUNCTION_NAME

45
gcc/config/mips/t-iris5-6 Normal file
View File

@ -0,0 +1,45 @@
# 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 = \
$$(SHELL) $$(srcdir)/mkinstalldirs $$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
$(INSTALL_DATA) $(SHLIB_NAME) \
$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
rm -f $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
$(LN_S) $(SHLIB_SONAME) \
$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver
# We want fine grained libraries, so use the new code to build the
# floating point emulation libraries.
FPBIT = fp-bit.c
DPBIT = dp-bit.c
dp-bit.c: $(srcdir)/config/fp-bit.c
echo '#undef US_SOFTWARE_GOFAST' > dp-bit.c
echo '#undef FLOAT' >> dp-bit.c
cat $(srcdir)/config/fp-bit.c >> dp-bit.c
fp-bit.c: $(srcdir)/config/fp-bit.c
echo '#define FLOAT' > fp-bit.c
echo '#undef US_SOFTWARE_GOFAST' >> fp-bit.c
cat $(srcdir)/config/fp-bit.c >> fp-bit.c

View File

@ -0,0 +1,7 @@
# omit -g, gcc doesn't support the o32 mdebug debugging format and warns about
# every invokation 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 =

View File

@ -14,53 +14,8 @@ INSTALL_LIBGCC = install-multilib
EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o
CRTSTUFF_T_CFLAGS=-g1
# 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_SLIBDIR_SUFFIXES = mabi=64:/mabi=64 mabi=n32:
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 = \
$$(SHELL) $$(srcdir)/mkinstalldirs $$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
$(INSTALL_DATA) $(SHLIB_NAME) \
$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
rm -f $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
$(LN_S) $(SHLIB_SONAME) \
$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver
# We want fine grained libraries, so use the new code to build the
# floating point emulation libraries.
FPBIT = fp-bit.c
DPBIT = dp-bit.c
dp-bit.c: $(srcdir)/config/fp-bit.c
echo '#undef US_SOFTWARE_GOFAST' > dp-bit.c
echo '#undef FLOAT' >> dp-bit.c
cat $(srcdir)/config/fp-bit.c >> dp-bit.c
fp-bit.c: $(srcdir)/config/fp-bit.c
echo '#define FLOAT' > fp-bit.c
echo '#undef US_SOFTWARE_GOFAST' >> fp-bit.c
cat $(srcdir)/config/fp-bit.c >> fp-bit.c
# This is only needed in the static libgcc as a band-aid until gcc correctly
# implements the N32/N64 ABI structure passing conventions
LIB2FUNCS_STATIC_EXTRA = $(srcdir)/config/mips/irix6-libc-compat.c

646
gcc/configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -1592,6 +1592,15 @@ if test x"$gcc_cv_as_hidden" = xyes; then
fi
AC_MSG_RESULT($gcc_cv_as_hidden)
libgcc_visibility=$gcc_cv_as_hidden
case "$target" in
mips-sgi-irix6*o32)
if test x"$gnu_ld_flag" = x"no"; then
# Even if using gas with .hidden support, the resulting object files
# cannot be linked with the IRIX 6 O32 linker.
libgcc_visibility=no
fi
;;
esac
AC_SUBST(libgcc_visibility)
AC_MSG_CHECKING(assembler leb128 support)

View File

@ -1,3 +1,8 @@
2002-07-11 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* gcc.misc-tests/linkage.exp: Handle mips-sgi-irix6*o32
configuration and IRIX 6 O32 ABI.
2002-07-11 Roger Sayle <roger@eyesopen.com>
* gcc.c-torture/execute/builtin-noret-1.c: Test non-ANSI functions.

View File

@ -1,4 +1,4 @@
# Copyright (C) 1988, 90-96, 1997, 2000, 2001 Free Software Foundation, Inc.
# Copyright (C) 1988, 90-96, 1997, 2000, 2001, 2002 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -32,10 +32,16 @@ if [isnative] then {
if [ string match "*64*" $file_string ] {
set native_cflags "-64"
}
if [ string match "*ELF 32*" $file_string ] {
set native_cflags "-32"
}
if [ string match "*N32*" $file_string ] {
set native_cflags "-n32"
}
}
if [istarget "mips-sgi-iris6*o32" ] {
set native_cflags "-32"
}
if [istarget "sparc*-sun-solaris2*"] {
set file_string [exec file "linkage-x.o"]
if [ string match "*64*" $file_string ] {

View File

@ -1,3 +1,8 @@
2002-07-11 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* configure.target (target_os switch): Allow for irix6*o32
configurations.
2002-07-10 Gabriel Dos Reis <gdr@nerim.net>
* include/bits/valarray_meta.h (_UnFunBase): Take a second

View File

@ -160,12 +160,12 @@ case "${target_os}" in
os_include_dir="os/hpux"
CPULIMITSH="os/hpux"
;;
irix[1-6] | irix[1-5].* | irix6.[0-4])
irix[1-6] | irix[1-5].* | irix6.[0-4]*)
# This is known to work on at least IRIX 5.2 and 6.3.
os_include_dir="os/irix/irix5.2"
ATOMICITYH=$os_include_dir
;;
irix6.5)
irix6.5*)
os_include_dir="os/irix/irix6.5"
ATOMICITYH=$os_include_dir
;;