diff options
author | David O'Brien <obrien@FreeBSD.org> | 2002-01-26 01:23:27 +0000 |
---|---|---|
committer | David O'Brien <obrien@gcc.gnu.org> | 2002-01-26 01:23:27 +0000 |
commit | e564e618054d9ea66778a4b7265da0f66e426104 (patch) | |
tree | 97620496215405c9831609f88ba7f80c87de4596 /gcc | |
parent | 4857d29d810461f9eca00a0b677e850ebd1b432d (diff) | |
download | gcc-e564e618054d9ea66778a4b7265da0f66e426104.zip gcc-e564e618054d9ea66778a4b7265da0f66e426104.tar.gz gcc-e564e618054d9ea66778a4b7265da0f66e426104.tar.bz2 |
config.gcc (x86_64-*-freebsd*): New target.
2002-01-25 David O'Brien <obrien@FreeBSD.org>
* 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 <rth@redhat.com>
Message-ID: <20020125160119.B17943@redhat.com>
From-SVN: r49233
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config.gcc | 16 | ||||
-rw-r--r-- | gcc/config/i386/freebsd64.h | 52 |
3 files changed, 73 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d16404e..765cadb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2002-01-25 David O'Brien <obrien@FreeBSD.org> + + * 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 <rupp@gnat.com> * config/alpha/x-vms (version): Make static. diff --git a/gcc/config.gcc b/gcc/config.gcc index bdbb3c5..10d6e1f 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 0000000..3437e69 --- /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 <obrien@FreeBSD.org> + +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 <i386/freebsd.h> 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 |