From: Jason Thorpe Date: Tue, 26 Nov 2002 00:05:07 +0000 (+0000) Subject: config.gcc (powerpc-*-netbsd*): Replace "svr4.h" with "netbsd.h netbsd-elf.h" in... X-Git-Tag: releases/gcc-3.3.0~1639 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a4967b8db12d7f2d9b0d80830507f806c4c36e5b;p=thirdparty%2Fgcc.git config.gcc (powerpc-*-netbsd*): Replace "svr4.h" with "netbsd.h netbsd-elf.h" in tm_file. * config.gcc (powerpc-*-netbsd*): Replace "svr4.h" with "netbsd.h netbsd-elf.h" in tm_file. Set tmake_file to "${tmake_file} rs6000/t-netbsd". * config/rs6000/netbsd.h: Rewrite. * config/rs6000/t-netbsd: New file. From-SVN: r59479 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ed24bbd72acf..c0eea4110904 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2002-11-25 Jason Thorpe + + * config.gcc (powerpc-*-netbsd*): Replace "svr4.h" with + "netbsd.h netbsd-elf.h" in tm_file. Set tmake_file to + "${tmake_file} rs6000/t-netbsd". + * config/rs6000/netbsd.h: Rewrite. + * config/rs6000/t-netbsd: New file. + 2002-11-25 Kazu Hirata * config/h8300/h8300.md (an anonymous pattern): Relax the diff --git a/gcc/config.gcc b/gcc/config.gcc index 902f0a2242ff..0fe9fa720d62 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -2001,8 +2001,8 @@ powerpc-*-sysv*) tmake_file="rs6000/t-ppcos rs6000/t-ppccomm" ;; powerpc-*-netbsd*) - tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h" - tmake_file="rs6000/t-ppcos rs6000/t-ppccomm" + tm_file="${tm_file} dbxelf.h elfos.h netbsd.h netbsd-elf.h freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h" + tmake_file="${tmake_file} rs6000/t-netbsd" ;; powerpc-*-chorusos*) xm_defines=POSIX diff --git a/gcc/config/rs6000/netbsd.h b/gcc/config/rs6000/netbsd.h index d41e576d4e7a..6791a4d6622f 100644 --- a/gcc/config/rs6000/netbsd.h +++ b/gcc/config/rs6000/netbsd.h @@ -1,6 +1,7 @@ /* Definitions of target machine for GNU compiler, for PowerPC NetBSD systems. - Copyright 2001 Free Software Foundation, Inc. + Copyright 2002 Free Software Foundation, Inc. + Contributed by Wasabi Systems, Inc. This file is part of GNU CC. @@ -19,48 +20,54 @@ 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. */ -/* Under NetBSD, the normal location of the various *crt*.o files is - the /usr/lib directory [from config/netbsd.h]. */ +#undef TARGET_OS_CPP_BUILTINS /* FIXME: sysv4.h should not define this! */ +#define TARGET_OS_CPP_BUILTINS() \ + do \ + { \ + NETBSD_OS_CPP_BUILTINS_ELF(); \ + builtin_define ("__powerpc__"); \ + builtin_assert ("cpu=powerpc"); \ + builtin_assert ("machine=powerpc"); \ + } \ + while (0) -#undef STANDARD_STARTFILE_PREFIX -#define STANDARD_STARTFILE_PREFIX "/usr/lib/" +/* Make GCC agree with . */ -/* FIXME: Should this macro be treated the same as for the other - spec's? */ -/* NOTE: -dc and -dp are equivalent yet NetBSD's CC passes both both! - NetBSD's CC also passes -O1 but we can skip that. NetBSD explictly - sets ``-e _start'', since LD knows this, skip it. */ +#undef SIZE_TYPE +#define SIZE_TYPE "unsigned int" -#undef LINK_SHLIB_SPEC -#define LINK_SHLIB_SPEC "\ -%{shared:-shared} \ -%{!shared: %{static:-dc -dp -static}} \ -%{!shared: %{!static:-dc -dp}} \ -" +#undef PTRDIFF_TYPE +#define PTRDIFF_TYPE "int" -/* Override the defaults. */ -#undef LIB_DEFAULT_SPEC -#define LIB_DEFAULT_SPEC "%(lib_netbsd)" +/* Undo the spec mess from sysv4.h, and just define the specs + the way NetBSD systems actually expect. */ -#undef STARTFILE_DEFAULT_SPEC -#define STARTFILE_DEFAULT_SPEC "%(startfile_netbsd)" +#undef CPP_SPEC +#define CPP_SPEC NETBSD_CPP_SPEC -#undef ENDFILE_DEFAULT_SPEC -#define ENDFILE_DEFAULT_SPEC "%(endfile_netbsd)" +#undef LINK_SPEC +#define LINK_SPEC \ + "%{!msdata=none:%{G*}} %{msdata=none:-G0} \ + %(netbsd_link_spec)" -#undef LINK_START_DEFAULT_SPEC -#define LINK_START_DEFAULT_SPEC "%(link_start_netbsd)" +#define NETBSD_ENTRY_POINT "_start" -#undef LINK_OS_DEFAULT_SPEC -#define LINK_OS_DEFAULT_SPEC "%(link_os_netbsd)" +#undef STARTFILE_SPEC +#define STARTFILE_SPEC NETBSD_STARTFILE_SPEC -#undef CPP_OS_DEFAULT_SPEC -#define CPP_OS_DEFAULT_SPEC "%(cpp_os_netbsd)" +#undef ENDFILE_SPEC +#define ENDFILE_SPEC \ + "crtsavres%O%s %(netbsd_endfile_spec)" -#undef TARGET_VERSION -#define TARGET_VERSION fprintf (stderr, " (PowerPC NetBSD/ELF)"); +#undef LIB_SPEC +#define LIB_SPEC NETBSD_LIB_SPEC + +#undef SUBTARGET_EXTRA_SPECS +#define SUBTARGET_EXTRA_SPECS \ + { "netbsd_link_spec", NETBSD_LINK_SPEC_ELF }, \ + { "netbsd_entry_point", NETBSD_ENTRY_POINT }, \ + { "netbsd_endfile_spec", NETBSD_ENDFILE_SPEC }, -/* Use STABS debugging information by default. DWARF2 makes a mess of - the 1.5.2 linker. */ -#undef PREFERRED_DEBUGGING_TYPE -#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG + +#undef TARGET_VERSION +#define TARGET_VERSION fprintf (stderr, " (NetBSD/powerpc ELF)"); diff --git a/gcc/config/rs6000/t-netbsd b/gcc/config/rs6000/t-netbsd new file mode 100644 index 000000000000..0cb08e730c06 --- /dev/null +++ b/gcc/config/rs6000/t-netbsd @@ -0,0 +1,42 @@ +# Support for NetBSD PowerPC ELF targets (SVR4 ABI). + +LIB2FUNCS_EXTRA = tramp.S + +tramp.S: $(srcdir)/config/rs6000/tramp.asm + cat $(srcdir)/config/rs6000/tramp.asm > tramp.S + +crtsavres.S: $(srcdir)/config/rs6000/crtsavres.asm + cat $(srcdir)/config/rs6000/crtsavres.asm >crtsavres.S + +EXTRA_PARTS += crtsavres$(objext) + +# It is important that crtbegin.o, etc., aren't surprised by stuff in .sdata. +CRTSTUFF_T_CFLAGS += -msdata=none +CRTSTUFF_T_CFLAGS_S += -msdata=none + +# Switch synonyms +MULTILIB_MATCHES_FLOAT = msoft-float=mcpu?401 \ + msoft-float=mcpu?403 \ + msoft-float=mcpu?405 \ + msoft-float=mcpu?ec603e \ + msoft-float=mcpu?801 \ + msoft-float=mcpu?821 \ + msoft-float=mcpu?823 \ + msoft-float=mcpu?860 + +MULTILIB_OPTIONS = msoft-float +MULTILIB_DIRNAMES = soft-float +MULTILIB_EXTRA_OPTS = fPIC mstrict-align +MULTILIB_EXCEPTIONS = + +MULTILIB_MATCHES = ${MULTILIB_MATCHES_FLOAT} + +LIBGCC = stmp-multilib +INSTALL_LIBGCC = install-multilib +EXTRA_MULTILIB_PARTS = crtbegin$(objext) crtend$(objext) \ + crtbeginS$(objext) crtendS$(objext) crtbeginT$(objext) \ + crtsavres$(objext) + +$(T)crtsavres$(objext): crtsavres.S + $(GCC_FOR_TARGET) $(CRTSTUFF_CFLAGS) $(CRTSTUFF_T_CFLAGS) \ + -c crtsavres.S -o $(T)crtsavres$(objext)