Commit cfafe973 by Robert Millan Committed by Jim Wilson

Patch from Robert Millan.

* config.gcc: Merge kfreebsd*-gnu with linux* and add knetbsd*-gnu.
* config/i386/linux.h: Allow overriding of LINK_EMULATION,
  DYNAMIC_LINKER and register names in sc_ structure.
* config/kfreebsd-gnu.h: New. kfreebsd-gnu followup for linux.h.
* config/i386/kfreebsd-gnu.h: New. Ditto for i386-kfreebsd-gnu.
* config/knetbsd-gnu.h: New. Ditto for knetbsd-gnu.
* config/i386/knetbsd-gnu.h: New. Ditto for i386-knetbsd-gnu.
* config/kfreebsdgnu.h: Remove.
* config/t-kfreebsd-gnu: Likewise.
* config/i386/kfreebsdgnu.h: Likewise.

From-SVN: r83577
parent d1822754
2004-06-23 Robert Millan <robertmh@gnu.org>
* config.gcc: Merge kfreebsd*-gnu with linux* and add knetbsd*-gnu.
* config/i386/linux.h: Allow overriding of LINK_EMULATION,
DYNAMIC_LINKER and register names in sc_ structure.
* config/kfreebsd-gnu.h: New. kfreebsd-gnu followup for linux.h.
* config/i386/kfreebsd-gnu.h: New. Ditto for i386-kfreebsd-gnu.
* config/knetbsd-gnu.h: New. Ditto for knetbsd-gnu.
* config/i386/knetbsd-gnu.h: New. Ditto for i386-knetbsd-gnu.
* config/kfreebsdgnu.h: Remove.
* config/t-kfreebsd-gnu: Likewise.
* config/i386/kfreebsdgnu.h: Likewise.
2004-06-23 Eric Christopher <echristo@redhat.com> 2004-06-23 Eric Christopher <echristo@redhat.com>
* fold-const.c (make_range): Cleanup type checking through function. * fold-const.c (make_range): Cleanup type checking through function.
......
...@@ -412,21 +412,10 @@ case ${target} in ...@@ -412,21 +412,10 @@ case ${target} in
esac esac
fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h" fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h"
;; ;;
*-*-kfreebsd*-gnu)
# Must come before *-*-gnu*
xm_defines=POSIX # needed for cross-compiling from FreeBSD?
extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
# GNU tools are the only tools.
gas=yes
gnu_ld=yes
case ${enable_threads} in
"" | yes | posix) thread_file='posix' ;;
esac
;;
*-*-linux*libc1* | *-*-linux*aout*) *-*-linux*libc1* | *-*-linux*aout*)
# Avoid the generic linux case. # Avoid the generic linux case.
;; ;;
*-*-linux* | frv-*-*linux*) *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
# Must come before *-*-gnu* (because of *-*-linux-gnu* systems). # Must come before *-*-gnu* (because of *-*-linux-gnu* systems).
extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o" extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
gas=yes gas=yes
...@@ -926,10 +915,14 @@ i[34567]86-*-coff*) ...@@ -926,10 +915,14 @@ i[34567]86-*-coff*)
tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/i386-coff.h" tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/i386-coff.h"
use_fixproto=yes use_fixproto=yes
;; ;;
i[34567]86-*-linux*) # Intel 80386's running GNU/Linux i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu)
# Intel 80386's running GNU/*
# with ELF format using glibc 2 # with ELF format using glibc 2
# aka GNU/Linux C library 6
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h" tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h"
case ${target} in
i[34567]86-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h i386/knetbsd-gnu.h" ;;
i[34567]86-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;;
esac
tmake_file="${tmake_file} i386/t-crtstuff" tmake_file="${tmake_file} i386/t-crtstuff"
;; ;;
x86_64-*-linux*) x86_64-*-linux*)
...@@ -937,12 +930,6 @@ x86_64-*-linux*) ...@@ -937,12 +930,6 @@ x86_64-*-linux*)
i386/x86-64.h i386/linux64.h" i386/x86-64.h i386/linux64.h"
tmake_file="${tmake_file} i386/t-linux64" tmake_file="${tmake_file} i386/t-linux64"
;; ;;
i[34567]86-*-kfreebsd*-gnu) # must be before i[34567]86-*-gnu*
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h kfreebsdgnu.h i386/kfreebsdgnu.h"
tmake_file="t-slibgcc-elf-ver t-kfreebsd-gnu i386/t-crtstuff"
float_format=i386
use_fixproto=no
;;
i[34567]86-*-gnu*) i[34567]86-*-gnu*)
;; ;;
i[34567]86-pc-msdosdjgpp*) i[34567]86-pc-msdosdjgpp*)
......
/* Definitions for Intel 386 running kFreeBSD-based GNU systems with ELF format
Copyright (C) 2004
Free Software Foundation, Inc.
Contributed by Robert Millan.
This file is part of GCC.
GCC 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.
GCC 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 GCC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#undef LINK_EMULATION
#define LINK_EMULATION "elf_i386_fbsd"
#undef REG_NAME
#define REG_NAME(reg) sc_ ## reg
/* Definitions for Intel 386 running GNU/KFreeBSD systems with ELF format. /* Definitions for Intel 386 running kNetBSD-based GNU systems with ELF format
Copyright (C) 2002 Free Software Foundation, Inc. Copyright (C) 2004
Contributed by Bruno Haible. Free Software Foundation, Inc.
Contributed by Robert Millan.
This file is part of GCC. This file is part of GCC.
...@@ -19,17 +20,5 @@ along with GCC; see the file COPYING. If not, write to ...@@ -19,17 +20,5 @@ along with GCC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330, the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#undef TARGET_VERSION #undef REG_NAME
#define TARGET_VERSION fprintf (stderr, " (i386 KFreeBSD/ELF)"); #define REG_NAME(reg) sc_ ## reg
/* FIXME: Is a KFreeBSD-specific fallback mechanism necessary? */
#undef MD_FALLBACK_FRAME_STATE_FOR
#undef LINK_SPEC
#define LINK_SPEC "-m elf_i386_fbsd %{shared:-shared} \
%{!shared: \
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
%{static:-static}}}"
...@@ -108,24 +108,26 @@ Boston, MA 02111-1307, USA. */ ...@@ -108,24 +108,26 @@ Boston, MA 02111-1307, USA. */
/* If ELF is the default format, we should not use /lib/elf. */ /* If ELF is the default format, we should not use /lib/elf. */
#undef LINK_SPEC #define LINK_EMULATION "elf_i386"
#ifdef USE_GNULIBC_1 #ifdef USE_GNULIBC_1
#define LINK_SPEC "-m elf_i386 %{shared:-shared} \ # define DYNAMIC_LINKER "/lib/ld-linux.so.1"
%{!shared: \
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.1}} \
%{static:-static}}}"
#else #else
#define LINK_SPEC "-m elf_i386 %{shared:-shared} \ # define DYNAMIC_LINKER "/lib/ld-linux.so.2"
#endif
#undef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \
{ "link_emulation", LINK_EMULATION },\
{ "dynamic_linker", DYNAMIC_LINKER }
#undef LINK_SPEC
#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \
%{!shared: \ %{!shared: \
%{!ibcs: \ %{!ibcs: \
%{!static: \ %{!static: \
%{rdynamic:-export-dynamic} \ %{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ %{!dynamic-linker:-dynamic-linker %(dynamic_linker)}} \
%{static:-static}}}" %{static:-static}}}"
#endif
/* A C statement (sans semicolon) to output to the stdio stream /* A C statement (sans semicolon) to output to the stdio stream
FILE the assembler definition of uninitialized global DECL named FILE the assembler definition of uninitialized global DECL named
...@@ -217,6 +219,8 @@ Boston, MA 02111-1307, USA. */ ...@@ -217,6 +219,8 @@ Boston, MA 02111-1307, USA. */
#include <signal.h> #include <signal.h>
#include <sys/ucontext.h> #include <sys/ucontext.h>
#define REG_NAME(reg) reg
#define MD_FALLBACK_FRAME_STATE_FOR(CONTEXT, FS, SUCCESS) \ #define MD_FALLBACK_FRAME_STATE_FOR(CONTEXT, FS, SUCCESS) \
do { \ do { \
unsigned char *pc_ = (CONTEXT)->ra; \ unsigned char *pc_ = (CONTEXT)->ra; \
...@@ -245,28 +249,28 @@ Boston, MA 02111-1307, USA. */ ...@@ -245,28 +249,28 @@ Boston, MA 02111-1307, USA. */
else \ else \
break; \ break; \
\ \
new_cfa_ = sc_->esp; \ new_cfa_ = sc_->REG_NAME(esp); \
(FS)->cfa_how = CFA_REG_OFFSET; \ (FS)->cfa_how = CFA_REG_OFFSET; \
(FS)->cfa_reg = 4; \ (FS)->cfa_reg = 4; \
(FS)->cfa_offset = new_cfa_ - (long) (CONTEXT)->cfa; \ (FS)->cfa_offset = new_cfa_ - (long) (CONTEXT)->cfa; \
\ \
/* The SVR4 register numbering macros aren't usable in libgcc. */ \ /* The SVR4 register numbering macros aren't usable in libgcc. */ \
(FS)->regs.reg[0].how = REG_SAVED_OFFSET; \ (FS)->regs.reg[0].how = REG_SAVED_OFFSET; \
(FS)->regs.reg[0].loc.offset = (long)&sc_->eax - new_cfa_; \ (FS)->regs.reg[0].loc.offset = (long)&sc_->REG_NAME(eax) - new_cfa_; \
(FS)->regs.reg[3].how = REG_SAVED_OFFSET; \ (FS)->regs.reg[3].how = REG_SAVED_OFFSET; \
(FS)->regs.reg[3].loc.offset = (long)&sc_->ebx - new_cfa_; \ (FS)->regs.reg[3].loc.offset = (long)&sc_->REG_NAME(ebx) - new_cfa_; \
(FS)->regs.reg[1].how = REG_SAVED_OFFSET; \ (FS)->regs.reg[1].how = REG_SAVED_OFFSET; \
(FS)->regs.reg[1].loc.offset = (long)&sc_->ecx - new_cfa_; \ (FS)->regs.reg[1].loc.offset = (long)&sc_->REG_NAME(ecx) - new_cfa_; \
(FS)->regs.reg[2].how = REG_SAVED_OFFSET; \ (FS)->regs.reg[2].how = REG_SAVED_OFFSET; \
(FS)->regs.reg[2].loc.offset = (long)&sc_->edx - new_cfa_; \ (FS)->regs.reg[2].loc.offset = (long)&sc_->REG_NAME(edx) - new_cfa_; \
(FS)->regs.reg[6].how = REG_SAVED_OFFSET; \ (FS)->regs.reg[6].how = REG_SAVED_OFFSET; \
(FS)->regs.reg[6].loc.offset = (long)&sc_->esi - new_cfa_; \ (FS)->regs.reg[6].loc.offset = (long)&sc_->REG_NAME(esi) - new_cfa_; \
(FS)->regs.reg[7].how = REG_SAVED_OFFSET; \ (FS)->regs.reg[7].how = REG_SAVED_OFFSET; \
(FS)->regs.reg[7].loc.offset = (long)&sc_->edi - new_cfa_; \ (FS)->regs.reg[7].loc.offset = (long)&sc_->REG_NAME(edi) - new_cfa_; \
(FS)->regs.reg[5].how = REG_SAVED_OFFSET; \ (FS)->regs.reg[5].how = REG_SAVED_OFFSET; \
(FS)->regs.reg[5].loc.offset = (long)&sc_->ebp - new_cfa_; \ (FS)->regs.reg[5].loc.offset = (long)&sc_->REG_NAME(ebp) - new_cfa_; \
(FS)->regs.reg[8].how = REG_SAVED_OFFSET; \ (FS)->regs.reg[8].how = REG_SAVED_OFFSET; \
(FS)->regs.reg[8].loc.offset = (long)&sc_->eip - new_cfa_; \ (FS)->regs.reg[8].loc.offset = (long)&sc_->REG_NAME(eip) - new_cfa_; \
(FS)->retaddr_column = 8; \ (FS)->retaddr_column = 8; \
goto SUCCESS; \ goto SUCCESS; \
} while (0) } while (0)
......
/* Definitions for kFreeBSD-based GNU systems with ELF format
Copyright (C) 2004
Free Software Foundation, Inc.
Contributed by Robert Millan.
This file is part of GCC.
GCC 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.
GCC 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 GCC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#undef LINUX_TARGET_OS_CPP_BUILTINS
#define LINUX_TARGET_OS_CPP_BUILTINS() \
do \
{ \
builtin_define ("__FreeBSD_kernel__"); \
builtin_define ("__GLIBC__"); \
builtin_define_std ("unix"); \
builtin_assert ("system=unix"); \
builtin_assert ("system=posix"); \
} \
while (0)
#undef DYNAMIC_LINKER
#define DYNAMIC_LINKER "/lib/ld.so.1"
/* Definitions for GNU/KFreeBSD systems with ELF format.
Copyright (C) 2002 Free Software Foundation, Inc.
Contributed by Bruno Haible.
This file is part of GCC.
GCC 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.
GCC 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 GCC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#undef WCHAR_TYPE
#define WCHAR_TYPE "int"
#undef TARGET_OS_CPP_BUILTINS
#define TARGET_OS_CPP_BUILTINS() \
builtin_define ("__GNU_KFreeBSD__=0"); \
builtin_define ("__gnu_kfreebsd__=0"); \
builtin_define ("__FreeBSD_kernel__=5"); \
builtin_define ("__ELF__"); \
builtin_define_std ("unix"); \
builtin_assert ("system=posix");
#undef TARGET_CPU_CPP_BUILTINS
#define TARGET_CPU_CPP_BUILTINS() \
builtin_define ("__i386__"); \
builtin_define_std ("i386"); \
builtin_assert ("cpu=i386"); \
builtin_assert ("machine=i386");
/* do {} while (0) */
/* Definitions for kNetBSD-based GNU systems with ELF format
Copyright (C) 2004
Free Software Foundation, Inc.
Contributed by Robert Millan.
This file is part of GCC.
GCC 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.
GCC 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 GCC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#undef LINUX_TARGET_OS_CPP_BUILTINS
#define LINUX_TARGET_OS_CPP_BUILTINS() \
do \
{ \
builtin_define ("__NetBSD_kernel__"); \
builtin_define ("__GLIBC__"); \
builtin_define_std ("unix"); \
builtin_assert ("system=unix"); \
builtin_assert ("system=posix"); \
} \
while (0)
#undef DYNAMIC_LINKER
#define DYNAMIC_LINKER "/lib/ld.so.1"
# glibc provides a limits.h, which must be combined with gcc's limits.h.
LIMITS_H_TEST = true
# Compile crtbeginS.o and crtendS.o with pic.
CRTSTUFF_T_CFLAGS_S = -fPIC
# Compile libgcc2.a with pic.
TARGET_LIBGCC2_CFLAGS = -fPIC
# Override t-slibgcc-elf-ver to export some libgcc symbols with
# the symbol versions that glibc used.
SHLIB_MAPFILES += $(srcdir)/config/libgcc-glibc.ver
# Use unwind-dw2-fde-glibc
LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde-glibc.c \
$(srcdir)/unwind-sjlj.c
LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment