From: David O'Brien Date: Sat, 26 Jan 2002 01:23:27 +0000 (+0000) Subject: config.gcc (x86_64-*-freebsd*): New target. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e564e618054d9ea66778a4b7265da0f66e426104;p=gcc.git config.gcc (x86_64-*-freebsd*): New target. 2002-01-25 David O'Brien * config.gcc (x86_64-*-freebsd*): New target. (x86_64-*-netbsd*,x86_64-*-linux*): Use ${tm_file} rather than its value. (i[34567]86-*-freebsd*): Don't include svr4.h. * config/i386/freebsd64.h: New file. Approved by: Richard Henderson Message-ID: <20020125160119.B17943@redhat.com> From-SVN: r49233 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d16404e2175..765cadb4a93 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2002-01-25 David O'Brien + + * config.gcc (x86_64-*-freebsd*): New target. + (x86_64-*-netbsd*,x86_64-*-linux*): Use ${tm_file} rather than its + value. + (i[34567]86-*-freebsd*): Don't include svr4.h. + * config/i386/freebsd64.h: New file. + 2002-01-25 Douglas B Rupp * config/alpha/x-vms (version): Make static. diff --git a/gcc/config.gcc b/gcc/config.gcc index bdbb3c592ff..10d6e1fd732 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -270,6 +270,13 @@ if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-protos.h then tm_p_file=${cpu_type}/${cpu_type}-protos.h fi + +case $machine in +x86_64-*-*) + tm_file="i386/biarch64.h ${tm_file}" + ;; +esac + # On a.out targets, we need to use collect2. case $machine in *-*-*aout*) @@ -1127,7 +1134,10 @@ i[34567]86-*-freebsd[12] | i[34567]86-*-freebsd[12].* | i[34567]86-*-freebsd*aou tmake_file=t-freebsd ;; i[34567]86-*-freebsd*) - tm_file="${tm_file} i386/att.h dbxelf.h elfos.h svr4.h ${fbsd_tm_file} i386/freebsd.h" + tm_file="${tm_file} i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/freebsd.h" + ;; +x86_64-*-freebsd*) + tm_file="${tm_file} i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h" ;; i[34567]86-*-netbsdelf*) tm_file="${tm_file} i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/netbsd-elf.h" @@ -1139,7 +1149,7 @@ i[34567]86-*-netbsd*) use_collect2=yes ;; x86_64-*-netbsd*) - tm_file="i386/biarch64.h i386/i386.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/x86-64.h i386/netbsd64.h" + tm_file="${tm_file} i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/x86-64.h i386/netbsd64.h" float_format=i386 ;; i[34567]86-*-openbsd*) @@ -1205,7 +1215,7 @@ i[34567]86-*-linux*) # Intel 80386's running GNU/Linux fi ;; x86_64-*-linux*) - tm_file="i386/biarch64.h i386/i386.h i386/att.h dbxelf.h elfos.h svr4.h linux.h \ + tm_file="${tm_file} i386/att.h dbxelf.h elfos.h svr4.h linux.h \ i386/x86-64.h i386/linux64.h" tmake_file="t-slibgcc-elf-ver t-linux i386/t-crtstuff" extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o" diff --git a/gcc/config/i386/freebsd64.h b/gcc/config/i386/freebsd64.h new file mode 100644 index 00000000000..3437e694d45 --- /dev/null +++ b/gcc/config/i386/freebsd64.h @@ -0,0 +1,52 @@ +/* Definitions for AMD x86-64 running FreeBSD with ELF format + Copyright (C) 2002 Free Software Foundation, Inc. + Contributed by David O'Brien + +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 TARGET_VERSION +#define TARGET_VERSION fprintf (stderr, " (FreeBSD/x86-64 ELF)"); + +/* Provide a LINK_SPEC appropriate for the FreeBSD/x86-64 ELF target. + This is a copy of LINK_SPEC from tweaked for + the x86-64 target. */ + +#undef LINK_SPEC +#define LINK_SPEC "\ + %{!m32:-m elf_x86_64} \ + %{m32:-m elf_i386} \ + %{Wl,*:%*} \ + %{v:-V} \ + %{assert*} %{R*} %{rpath*} %{defsym*} \ + %{shared:-Bshareable %{h*} %{soname*}} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker /usr/libexec/ld-elf.so.1}} \ + %{static:-Bstatic}} \ + %{symbolic:-Bsymbolic}" + +/* Grrr... x86-64.h gets this wrong and it shouldn't be trying to set this + policy... Restore to the FreeBSD/i386 setting. */ +/* Don't default to pcc-struct-return for IA-32 ELF code, because we need to + retain compatibility with older FreeBSD/i386 ELF gcc versions (even though + the SVR4 ABI for the i386 says that records and unions are returned in + memory). */ +#undef DEFAULT_PCC_STRUCT_RETURN +#define DEFAULT_PCC_STRUCT_RETURN 0