summaryrefslogtreecommitdiff
path: root/gcc/config/i386/freebsd64.h
diff options
context:
space:
mode:
authorDavid O'Brien <obrien@FreeBSD.org>2002-01-26 01:23:27 +0000
committerDavid O'Brien <obrien@gcc.gnu.org>2002-01-26 01:23:27 +0000
commite564e618054d9ea66778a4b7265da0f66e426104 (patch)
tree97620496215405c9831609f88ba7f80c87de4596 /gcc/config/i386/freebsd64.h
parent4857d29d810461f9eca00a0b677e850ebd1b432d (diff)
downloadgcc-e564e618054d9ea66778a4b7265da0f66e426104.tar.gz
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/config/i386/freebsd64.h')
-rw-r--r--gcc/config/i386/freebsd64.h52
1 files changed, 52 insertions, 0 deletions
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 <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