Change the system name from 'FreeBSD' to 'DragonFly'. We are now officially
authorMatthew Dillon <dillon@dragonflybsd.org>
Wed, 19 Nov 2003 00:51:38 +0000 (00:51 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Wed, 19 Nov 2003 00:51:38 +0000 (00:51 +0000)
DragonFly 1.0-CURRENT.  The change is fairly straight forward but involves
adding support for the 'DragonFly' OS type in various gnu contributed pieces
(typically configure based), as well as compiler and BFD support for building
GCC and friends (basically just copied the FreeBSD files for DragonFly).

Additionally, hack the ports makefiles with UNAME_xxx environment variables
so ports builds think its still a FreeBSD-4.8 system.  Otherwise most of the
ports will fail.

46 files changed:
contrib/binutils/bfd/Makefile.am
contrib/binutils/bfd/Makefile.in
contrib/binutils/bfd/config.bfd
contrib/binutils/bfd/configure
contrib/binutils/bfd/configure.in
contrib/binutils/bfd/dragonfly.h [new file with mode: 0644]
contrib/binutils/bfd/i386dragonfly.c [new file with mode: 0644]
contrib/binutils/bfd/targets.c
contrib/binutils/config.guess
contrib/gcc/config/dragonfly.h [new file with mode: 0644]
contrib/gcc/config/i386/dragonfly-aout.h [new file with mode: 0644]
contrib/gcc/config/i386/dragonfly.h [new file with mode: 0644]
contrib/gcc/config/i386/dragonfly.h.fixed [new file with mode: 0644]
contrib/gcc/config/i386/xm-dragonfly.h [new file with mode: 0644]
contrib/gcc/config/t-dragonfly [new file with mode: 0644]
contrib/gcc/config/xm-dragonfly.h [new file with mode: 0644]
contrib/gcc/configure
contrib/gcc/configure.in
contrib/gdb/config.guess
contrib/libgmp/config.guess
contrib/libreadline/support/config.guess
contrib/ncurses/config.guess
contrib/ntp/config.guess
contrib/nvi/build/config.guess
contrib/tcsh/config.guess
contrib/traceroute/config.guess
gnu/lib/libgcc/Makefile
gnu/usr.bin/binutils/gdb/alpha/version.c
gnu/usr.bin/binutils/gdb/i386/version.c
gnu/usr.bin/binutils/ld/Makefile.alpha
gnu/usr.bin/binutils/ld/Makefile.i386
gnu/usr.bin/binutils/libbinutils/Makefile
gnu/usr.bin/binutils/libbinutils/Makefile.alpha
gnu/usr.bin/binutils/libbinutils/Makefile.i386
gnu/usr.bin/binutils/libbinutils/Makefile.mips
gnu/usr.bin/binutils/libbinutils/config.h
gnu/usr.bin/binutils/update.sh
gnu/usr.bin/cc/Makefile.inc
libexec/rtld-elf/i386/elf_rtld.x
share/man/man4/vinum.4
share/mk/bsd.dfport.mk
share/mk/bsd.port.mk
sys/conf/newvers.sh
sys/sys/copyright.h
sys/sys/param.h
usr.sbin/ntp/config.h

index 411351b..45e6dff 100644 (file)
@@ -1,4 +1,5 @@
 ## Process this file with automake to generate Makefile.in
+# $DragonFly: src/contrib/binutils/bfd/Attic/Makefile.am,v 1.2 2003/11/19 00:51:30 dillon Exp $
 
 AUTOMAKE_OPTIONS = cygnus
 
@@ -238,6 +239,7 @@ BFD32_BACKENDS = \
        i386aout.lo \
        i386bsd.lo \
        i386dynix.lo \
+       i386dragonfly.lo \
        i386freebsd.lo \
        i386linux.lo \
        i386lynx.lo \
@@ -1217,6 +1219,9 @@ i386dynix.lo: i386dynix.c $(INCDIR)/aout/dynix3.h aoutx.h \
 i386freebsd.lo: i386freebsd.c freebsd.h $(INCDIR)/filenames.h \
   libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
   $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+i386dragonfly.lo: i386dragonfly.c dragonfly.h $(INCDIR)/filenames.h \
+  libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+  $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
 i386linux.lo: i386linux.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
   $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
   libaout.h $(INCDIR)/bfdlink.h aout-target.h
index 643196a..d71aa8c 100644 (file)
@@ -9,6 +9,7 @@
 # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
+# $DragonFly: src/contrib/binutils/bfd/Attic/Makefile.in,v 1.2 2003/11/19 00:51:30 dillon Exp $
 
 
 SHELL = @SHELL@
@@ -366,6 +367,7 @@ BFD32_BACKENDS = \
        i386aout.lo \
        i386bsd.lo \
        i386dynix.lo \
+       i386dragonfly.lo \
        i386freebsd.lo \
        i386linux.lo \
        i386lynx.lo \
@@ -514,6 +516,7 @@ BFD32_BACKENDS_CFILES = \
        i386aout.c \
        i386bsd.c \
        i386dynix.c \
+       i386dragonfly.c \
        i386freebsd.c \
        i386linux.c \
        i386lynx.c \
@@ -667,7 +670,8 @@ CFILES = $(SOURCE_CFILES) $(BUILD_CFILES)
 SOURCE_HFILES = \
        aout-target.h aoutf1.h aoutx.h coffcode.h coffswap.h ecoffswap.h \
        elf-bfd.h elf-hppa.h elf32-arm.h elf32-hppa.h elf64-hppa.h \
-       elfcode.h elfcore.h elflink.h freebsd.h genlink.h go32stub.h \
+       elfcode.h elfcore.h elflink.h dragonfly.h freebsd.h genlink.h \
+       go32stub.h \
        libaout.h libbfd.h libcoff.h libecoff.h libhppa.h \
        libieee.h libnlm.h liboasys.h libpei.h netbsd.h nlm-target.h \
        nlmcode.h nlmswap.h ns32k.h peicode.h som.h vms.h libxcoff.h \
@@ -1758,6 +1762,9 @@ i386dynix.lo: i386dynix.c $(INCDIR)/aout/dynix3.h aoutx.h \
   $(INCDIR)/filenames.h $(INCDIR)/safe-ctype.h $(INCDIR)/bfdlink.h \
   libaout.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
   $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h aout-target.h
+i386dragonfly.lo: i386dragonfly.c dragonfly.h $(INCDIR)/filenames.h \
+  libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+  $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
 i386freebsd.lo: i386freebsd.c freebsd.h $(INCDIR)/filenames.h \
   libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
   $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
index 58c7315..937179e 100755 (executable)
@@ -22,6 +22,8 @@
 # vector, but c++filt does not deal with object files and is not
 # linked against libbfd.a.  It is not terribly important that c++filt
 # get this right; it is just convenient.
+#
+# $DragonFly: src/contrib/binutils/bfd/Attic/config.bfd,v 1.2 2003/11/19 00:51:31 dillon Exp $
 
 targ_defvec=
 targ_selvecs=
@@ -100,11 +102,15 @@ case "${targ}" in
     targ_defvec=bfd_elf64_ia64_little_vec
     targ_selvecs="bfd_elf64_ia64_big_vec bfd_efi_app_ia64_vec"
     ;;
+  ia64*-*-dragonfly*)
+    targ_defvec=bfd_elf64_ia64_little_vec
+    targ_selvecs="bfd_elf64_ia64_big_vec bfd_efi_app_ia64_vec"
+    ;;
   ia64*-*-hpux*)
     targ_defvec=bfd_elf32_ia64_hpux_big_vec
     targ_selvecs="bfd_elf64_ia64_hpux_big_vec"
     ;;
-  sparc64-*-freebsd* | sparc64-*-netbsd*)
+  sparc64-*-freebsd* | sparc64-*-netbsd* | sparc64-*-dragonfly*)
     targ_defvec=bfd_elf64_sparc_vec
     targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec"
     ;;
@@ -174,6 +180,10 @@ case "${targ}" in
     targ_defvec=bfd_elf32_littlearm_vec
     targ_selvecs=bfd_elf32_bigarm_vec
     ;;
+  arm-*-dragonfly*)
+    targ_defvec=bfd_elf32_littlearm_vec
+    targ_selvecs=bfd_elf32_bigarm_vec
+    ;;
   arm9e-*-elf)
     targ_defvec=bfd_elf32_littlearm_vec
     targ_selvecs=bfd_elf32_bigarm_vec
@@ -373,6 +383,10 @@ case "${targ}" in
     targ_defvec=bfd_elf32_i386_vec
     targ_selvecs=i386coff_vec
     ;;
+  i[3456]86-*-dragonfly*)
+    targ_defvec=bfd_elf32_i386_vec
+    targ_selvecs=i386coff_vec
+    ;;
   i[3456]86-*-netbsdelf*) 
     targ_defvec=bfd_elf32_i386_vec
     targ_selvecs=i386netbsd_vec
@@ -400,6 +414,10 @@ case "${targ}" in
     targ_defvec=bfd_elf64_x86_64_vec
     targ_selvecs="bfd_elf32_i386_vec i386coff_vec bfd_efi_app_ia32_vec"
     ;;
+  x86_64-*-dragonfly*)
+    targ_defvec=bfd_elf64_x86_64_vec
+    targ_selvecs="bfd_elf32_i386_vec i386coff_vec bfd_efi_app_ia32_vec"
+    ;;
   x86_64-*-netbsd*)
     targ_defvec=bfd_elf64_x86_64_vec
     targ_selvecs="bfd_elf32_i386_vec i386netbsd_vec i386coff_vec bfd_efi_app_ia32_vec"
index 94c88ab..c005954 100755 (executable)
@@ -1,4 +1,6 @@
 #! /bin/sh
+#
+# $DragonFly: src/contrib/binutils/bfd/Attic/configure,v 1.2 2003/11/19 00:51:31 dillon Exp $
 
 # Guess values for system-dependent variables and create Makefiles.
 # Generated automatically using autoconf version 2.13 
@@ -1623,6 +1625,22 @@ freebsd* )
   fi
   ;;
 
+dragonfly* )
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (DragonFly|FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
 gnu*)
   lt_cv_deplibs_check_method=pass_all
   ;;
@@ -5036,6 +5054,7 @@ if test "${target}" = "${host}"; then
        ;;
   alpha*-*-netbsd*)    COREFILE=netbsd-core.lo ;;
   alpha*-*-*)          COREFILE=osf-core.lo ;;
+  arm-*-dragonfly*)    COREFILE='' ;;
   arm-*-freebsd*)      COREFILE='' ;;
   arm-*-netbsd*)       COREFILE=netbsd-core.lo ;;
   arm-*-riscix)                COREFILE=trad-core.lo ;;
@@ -5065,6 +5084,10 @@ if test "${target}" = "${host}"; then
        COREFILE=trad-core.lo
        TRAD_HEADER='"hosts/i386bsd.h"'
        ;;
+  i[3456]86-*-dragonfly*)
+       COREFILE=''
+       TRAD_HEADER='"hosts/i386bsd.h"'
+       ;;
   i[3456]86-*-freebsd*)
        COREFILE=''
        TRAD_HEADER='"hosts/i386bsd.h"'
@@ -5205,6 +5228,7 @@ rm -f conftest*
   powerpc-*-aix4*)     COREFILE=rs6000-core.lo ;;
   powerpc-*-aix*)      COREFILE=rs6000-core.lo ;;
   powerpc-*-beos*)     ;;
+  powerpc-*-dragonfly*)        COREFILE='' ;;
   powerpc-*-freebsd*)  COREFILE='' ;;
   powerpc-*-netbsd*)   COREFILE=netbsd-core.lo ;;
   powerpc-*-*bsd*)     COREFILE=netbsd-core.lo ;;
@@ -6116,6 +6140,7 @@ do
     i386bsd_vec)               tb="$tb i386bsd.lo aout32.lo" ;;
     i386coff_vec)              tb="$tb coff-i386.lo cofflink.lo" ;;
     i386dynix_vec)             tb="$tb i386dynix.lo aout32.lo" ;;
+    i386dragonfly_vec)         tb="$tb i386dragonfly.lo aout32.lo" ;;
     i386freebsd_vec)           tb="$tb i386freebsd.lo aout32.lo" ;;
     i386linux_vec)             tb="$tb i386linux.lo aout32.lo" ;;
     i386lynx_aout_vec)         tb="$tb i386lynx.lo lynx-core.lo aout32.lo" ;;
index defa540..3e3aae7 100644 (file)
@@ -1,4 +1,6 @@
 dnl Process this file with autoconf to produce a configure script.
+dnl $DragonFly: src/contrib/binutils/bfd/Attic/configure.in,v 1.2 2003/11/19 00:51:31 dillon Exp $
+
 dnl
 
 AC_PREREQ(2.13)
@@ -164,6 +166,7 @@ if test "${target}" = "${host}"; then
        ;;
   alpha*-*-netbsd*)    COREFILE=netbsd-core.lo ;;
   alpha*-*-*)          COREFILE=osf-core.lo ;;
+  arm-*-dragonfly*)    COREFILE='' ;;
   arm-*-freebsd*)      COREFILE='' ;;
   arm-*-netbsd*)       COREFILE=netbsd-core.lo ;;
   arm-*-riscix)                COREFILE=trad-core.lo ;;
@@ -203,6 +206,11 @@ changequote([,])dnl
        ;;
 changequote(,)dnl
   i[3456]86-*-freebsd*)
+changequote([,])dnl
+       COREFILE=''
+       TRAD_HEADER='"hosts/i386bsd.h"'
+       ;;
+  i[3456]86-*-dragonfly*)
 changequote([,])dnl
        COREFILE=''
        TRAD_HEADER='"hosts/i386bsd.h"'
@@ -341,6 +349,7 @@ changequote([,])dnl
   powerpc-*-aix4*)     COREFILE=rs6000-core.lo ;;
   powerpc-*-aix*)      COREFILE=rs6000-core.lo ;;
   powerpc-*-beos*)     ;;
+  powerpc-*-dragonfly*)        COREFILE='' ;;
   powerpc-*-freebsd*)  COREFILE='' ;;
   powerpc-*-netbsd*)   COREFILE=netbsd-core.lo ;;
   powerpc-*-*bsd*)     COREFILE=netbsd-core.lo ;;
@@ -653,6 +662,7 @@ do
     i386bsd_vec)               tb="$tb i386bsd.lo aout32.lo" ;;
     i386coff_vec)              tb="$tb coff-i386.lo cofflink.lo" ;;
     i386dynix_vec)             tb="$tb i386dynix.lo aout32.lo" ;;
+    i386dragonfly_vec)         tb="$tb i386dargonfly.lo aout32.lo" ;;
     i386freebsd_vec)           tb="$tb i386freebsd.lo aout32.lo" ;;
     i386linux_vec)             tb="$tb i386linux.lo aout32.lo" ;;
     i386lynx_aout_vec)         tb="$tb i386lynx.lo lynx-core.lo aout32.lo" ;;
diff --git a/contrib/binutils/bfd/dragonfly.h b/contrib/binutils/bfd/dragonfly.h
new file mode 100644 (file)
index 0000000..e618791
--- /dev/null
@@ -0,0 +1,145 @@
+/* BFD back-end definitions used by all FreeBSD targets.
+   Copyright 1990, 1991, 1992, 1996, 1997, 2000, 2001
+   Free Software Foundation, Inc.
+
+This file is part of BFD, the Binary File Descriptor library.
+
+This program 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 of the License, or
+(at your option) any later version.
+
+This program 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 this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+
+/* $FreeBSD: src/contrib/binutils/bfd/freebsd.h,v 1.2.6.4 2002/09/01 23:43:39 obrien Exp $ */
+/* $DragonFly: src/contrib/binutils/bfd/Attic/dragonfly.h,v 1.1 2003/11/19 00:51:31 dillon Exp $ */
+
+/* FreeBSD QMAGIC files have the header in the text. */
+#define        N_HEADER_IN_TEXT(x)     1
+#define MY_text_includes_header 1
+
+#define TEXT_START_ADDR                (TARGET_PAGE_SIZE + 0x20)
+
+/*
+ * FreeBSD uses a weird mix of byte orderings for its a_info field.
+ * Its assembler emits NetBSD style object files, with a big-endian
+ * a_info.  Its linker seems to accept either byte ordering, but
+ * emits a little-endian a_info.
+ *
+ * Here, we accept either byte ordering, but always produce
+ * little-endian.
+ *
+ * FIXME - Probably we should always produce the _native_ byte
+ * ordering.  I.e., it should be in the architecture-specific
+ * file, not here.  But in reality, there is no chance
+ * that FreeBSD will ever use a.out in a new port.
+ */
+
+#define N_MACHTYPE(exec) \
+       ((enum machine_type) \
+        ((freebsd_swap_magic(&(exec).a_info) >> 16) & 0x3ff))
+#define N_FLAGS(exec) \
+       ((enum machine_type) \
+        ((freebsd_swap_magic(&(exec).a_info) >> 26) & 0x3f))
+
+#define N_SET_INFO(exec, magic, type, flags) \
+       ((exec).a_info = ((magic) & 0xffff) \
+        | (((int)(type) & 0x3ff) << 16) \
+        | (((flags) & 0x3f) << 26))
+#define N_SET_MACHTYPE(exec, machtype) \
+       ((exec).a_info = \
+         ((exec).a_info & 0xfb00ffff) | ((((int)(machtype))&0x3ff) << 16))
+#define N_SET_FLAGS(exec, flags) \
+       ((exec).a_info = \
+        ((exec).a_info & 0x03ffffff) | ((flags & 0x03f) << 26))
+
+#include "bfd.h"
+#include "sysdep.h"
+#include "libbfd.h"
+#include "libaout.h"
+
+#define SWAP_MAGIC(ext)                        (freebsd_swap_magic(ext))
+
+#define MY_bfd_final_link MY(bfd_final_link)
+#define MY_write_object_contents MY(write_object_contents)
+
+static boolean MY(bfd_final_link) PARAMS ((bfd *, struct bfd_link_info *));
+static boolean MY(write_object_contents) PARAMS ((bfd *abfd));
+static long freebsd_swap_magic PARAMS ((void *ext));
+
+#include "aout-target.h"
+
+static boolean
+MY(bfd_final_link) (abfd, info)
+  bfd *abfd;
+  struct bfd_link_info *info;
+{
+  obj_aout_subformat (abfd) = q_magic_format;
+  return NAME(aout,final_link) (abfd, info, MY_final_link_callback);
+}
+
+/* Swap a magic number.  We accept either endian, whichever looks valid. */
+
+static long
+freebsd_swap_magic (ext)
+  void *ext;
+{
+  long linfo = bfd_getl32(ext);
+  long binfo = bfd_getb32(ext);
+  int lmagic = linfo & 0xffff;
+  int bmagic = binfo & 0xffff;
+  int lmagic_ok = lmagic == OMAGIC || lmagic == NMAGIC ||
+    lmagic == ZMAGIC || lmagic == QMAGIC;
+  int bmagic_ok = bmagic == OMAGIC || bmagic == NMAGIC ||
+    bmagic == ZMAGIC || bmagic == QMAGIC;
+
+  return bmagic_ok && !lmagic_ok ? binfo : linfo;
+}
+
+/* Write an object file.
+   Section contents have already been written.  We write the
+   file header, symbols, and relocation.  */
+
+static boolean
+MY(write_object_contents) (abfd)
+     bfd *abfd;
+{
+  struct external_exec exec_bytes;
+  struct internal_exec *execp = exec_hdr (abfd);
+
+  obj_reloc_entry_size (abfd) = RELOC_STD_SIZE;
+
+  /* Magic number, maestro, please!  */
+  switch (bfd_get_arch(abfd)) {
+  case bfd_arch_m68k:
+    if (strcmp (abfd->xvec->name, "a.out-m68k4k-netbsd") == 0)
+      N_SET_MACHTYPE(*execp, M_68K4K_NETBSD);
+    else
+      N_SET_MACHTYPE(*execp, M_68K_NETBSD);
+    break;
+  case bfd_arch_sparc:
+    N_SET_MACHTYPE(*execp, M_SPARC_NETBSD);
+    break;
+  case bfd_arch_i386:
+    N_SET_MACHTYPE(*execp, M_386_NETBSD);
+    break;
+  case bfd_arch_ns32k:
+    N_SET_MACHTYPE(*execp, M_532_NETBSD);
+    break;
+  default:
+    N_SET_MACHTYPE(*execp, M_UNKNOWN);
+    break;
+  }
+
+  WRITE_HEADERS(abfd, execp);
+
+  return true;
+}
diff --git a/contrib/binutils/bfd/i386dragonfly.c b/contrib/binutils/bfd/i386dragonfly.c
new file mode 100644 (file)
index 0000000..f2ef020
--- /dev/null
@@ -0,0 +1,39 @@
+/* BFD back-end for FreeBSD/386 a.out-ish binaries.
+   Copyright 1990, 1991, 1992, 1996, 2001 Free Software Foundation, Inc.
+
+$DragonFly: src/contrib/binutils/bfd/Attic/i386dragonfly.c,v 1.1 2003/11/19 00:51:31 dillon Exp $
+
+This file is part of BFD, the Binary File Descriptor library.
+
+This program 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 of the License, or
+(at your option) any later version.
+
+This program 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 this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#define        BYTES_IN_WORD   4
+#undef TARGET_IS_BIG_ENDIAN_P
+
+#define        TARGET_PAGE_SIZE        4096
+#define        SEGMENT_SIZE    TARGET_PAGE_SIZE
+
+#define        DEFAULT_ARCH    bfd_arch_i386
+#define MACHTYPE_OK(mtype) ((mtype) == M_386_NETBSD || (mtype) == M_UNKNOWN)
+
+/* Do not "beautify" the CONCAT* macro args.  Traditional C will not
+   remove whitespace added here, and thus will fail to concatenate
+   the tokens.  */
+#define MY(OP) CONCAT2 (i386freebsd_,OP)
+
+/* This needs to start with a.out so GDB knows it is an a.out variant.  */
+#define TARGETNAME "a.out-i386-freebsd"
+
+#include "freebsd.h"
index 78b4bbb..f89fb8b 100644 (file)
@@ -4,6 +4,8 @@
    Free Software Foundation, Inc.
    Written by Cygnus Support.
 
+$DragonFly: src/contrib/binutils/bfd/Attic/targets.c,v 1.2 2003/11/19 00:51:31 dillon Exp $
+
 This file is part of BFD, the Binary File Descriptor library.
 
 This program is free software; you can redistribute it and/or modify
@@ -586,6 +588,7 @@ extern const bfd_target i386bsd_vec;
 extern const bfd_target i386coff_vec;
 extern const bfd_target i386dynix_vec;
 extern const bfd_target i386freebsd_vec;
+extern const bfd_target i386dragonfly_vec;
 extern const bfd_target i386linux_vec;
 extern const bfd_target i386lynx_aout_vec;
 extern const bfd_target i386lynx_coff_vec;
@@ -852,6 +855,7 @@ static const bfd_target * const _bfd_target_vector[] = {
        &i386dynix_vec,
 #endif
        &i386freebsd_vec,
+       &i386dragonfly_vec,
 #if 0
        /* Since a.out files lack decent magic numbers, no way to recognize
           which kind of a.out file it is.  */
index db494f8..c7f292a 100755 (executable)
@@ -2,6 +2,7 @@
 # Attempt to guess a canonical system name.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
 #   2000, 2001, 2002 Free Software Foundation, Inc.
+# $DragonFly: src/contrib/binutils/Attic/config.guess,v 1.2 2003/11/19 00:51:30 dillon Exp $
 
 timestamp='2002-02-19'
 
@@ -722,6 +723,9 @@ EOF
     *:FreeBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
        exit 0 ;;
+    *:DragonFly:*:*)
+       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+       exit 0 ;;
     i*:CYGWIN*:*)
        echo ${UNAME_MACHINE}-pc-cygwin
        exit 0 ;;
diff --git a/contrib/gcc/config/dragonfly.h b/contrib/gcc/config/dragonfly.h
new file mode 100644 (file)
index 0000000..5c52ce6
--- /dev/null
@@ -0,0 +1,539 @@
+/* Base configuration file for all FreeBSD targets.
+   Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+
+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.  */
+
+/* Common FreeBSD configuration. 
+   All FreeBSD architectures should include this file, which will specify
+   their commonalities.
+   Adapted from /usr/src/contrib/gcc/config/i386/freebsd.h,
+   /usr/src/contrib/gcc/config/svr4.h & 
+   egcs/gcc/config/i386/freebsd-elf.h by
+   David O'Brien <obrien@FreeBSD.org>.  */
+
+/* $FreeBSD: src/contrib/gcc/config/freebsd.h,v 1.25.2.10 2002/06/20 23:12:36 obrien Exp $ */
+/* $DragonFly: src/contrib/gcc/config/Attic/dragonfly.h,v 1.1 2003/11/19 00:51:31 dillon Exp $ */
+
+
+/* Cpp, assembler, linker, library, and startfile spec's.  */
+
+/* This defines which switch letters take arguments.  On FreeBSD, most of
+   the normal cases (defined in gcc.c) apply, and we also have -h* and
+   -z* options (for the linker) (coming from SVR4).
+   We also have -R (alias --rpath), no -z, --soname (-h), --assert etc.  */
+
+#define FBSD_SWITCH_TAKES_ARG(CHAR)                                    \
+  (DEFAULT_SWITCH_TAKES_ARG (CHAR)                                     \
+    || (CHAR) == 'h'                                                   \
+    || (CHAR) == 'z' /* ignored by ld */                               \
+    || (CHAR) == 'R')
+
+#undef  SWITCH_TAKES_ARG
+#define SWITCH_TAKES_ARG(CHAR) (FBSD_SWITCH_TAKES_ARG(CHAR))
+
+/* This defines which multi-letter switches take arguments.  */
+
+#define FBSD_WORD_SWITCH_TAKES_ARG(STR)                                        \
+  (DEFAULT_WORD_SWITCH_TAKES_ARG (STR)                                 \
+   || !strcmp ((STR), "rpath") || !strcmp ((STR), "rpath-link")                \
+   || !strcmp ((STR), "soname") || !strcmp ((STR), "defsym")           \
+   || !strcmp ((STR), "assert") || !strcmp ((STR), "dynamic-linker"))
+
+#undef  WORD_SWITCH_TAKES_ARG
+#define WORD_SWITCH_TAKES_ARG(STR) (FBSD_WORD_SWITCH_TAKES_ARG(STR))
+
+/* Place spaces around this string.  We depend on string splicing to produce
+   the final CPP_PREDEFINES value.  */
+
+#define FBSD_CPP_PREDEFINES \
+  " -D__DragonFly__=1 -D__DragonFly_cc_version=100001 -D__FreeBSD__=4 -D__FreeBSD_cc_version=460001 -Dunix -Asystem(unix) -Asystem(FreeBSD) -Asystem(DragonFly) "
+
+#define FBSD_CPP_SPEC "                                                        \
+  %(cpp_cpu)                                                           \
+  %{!maout: -D__ELF__}                                                 \
+  %{munderscores: -D__UNDERSCORES__}                                   \
+  %{maout: %{!mno-underscores: -D__UNDERSCORES__}}                     \
+  %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__}              \
+  %{posix:-D_POSIX_SOURCE}                                             \
+  %{pthread:-D_THREAD_SAFE}"
+
+#undef  CPP_SPEC
+#define CPP_SPEC FBSD_CPP_SPEC
+
+/* Provide a LIB_SPEC appropriate for FreeBSD.  Before
+   __FreeBSD_version 500016, select the appropriate libc, depending on
+   whether we're doing profiling or need threads support.  (similar to
+   the default, except no -lg, and no -p).  At __FreeBSD_version
+   500016 and later, when threads support is requested include both
+   -lc and -lc_r instead of only -lc_r.  */
+
+#undef  LIB_SPEC
+#include <sys/param.h>
+#if __FreeBSD_version >= 500016
+#define LIB_SPEC "                                                     \
+  %{!shared:                                                           \
+    %{!pg: %{pthread:-lc_r} -lc}                                       \
+    %{pg:  %{pthread:-lc_r_p} -lc_p}                                   \
+  }"
+#else
+#define LIB_SPEC "                                                     \
+  %{!shared:                                                           \
+    %{!pg:                                                             \
+      %{!pthread:-lc}                                                  \
+      %{pthread:-lc_r}}                                                        \
+    %{pg:                                                              \
+      %{!pthread:-lc_p}                                                        \
+      %{pthread:-lc_r_p}}                                              \
+  }"
+#endif
+
+
+/************************[  Target stuff  ]***********************************/
+
+/* All FreeBSD Architectures support the ELF object file format.  */
+#undef  OBJECT_FORMAT_ELF
+#define OBJECT_FORMAT_ELF
+
+/* Don't assume anything about the header files.  */
+#undef  NO_IMPLICIT_EXTERN_C
+#define NO_IMPLICIT_EXTERN_C
+
+/* Implicit library calls should use memcpy, not bcopy, etc.  */
+#undef  TARGET_MEM_FUNCTIONS
+#define TARGET_MEM_FUNCTIONS
+
+/* Allow #sccs in preprocessor.  */
+#undef  SCCS_DIRECTIVE
+#define SCCS_DIRECTIVE
+
+#undef  HAVE_ATEXIT
+#define HAVE_ATEXIT
+
+/* Code generation parameters.  */
+
+/* Don't default to pcc-struct-return, because gcc is the only compiler, and
+   we want to retain compatibility with older 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
+
+/* Writing `int' for a bitfield forces int alignment for the structure.  */
+/* XXX: ok for Alpha??  */
+#undef  PCC_BITFIELD_TYPE_MATTERS
+#define PCC_BITFIELD_TYPE_MATTERS 1
+
+/* Use periods rather than dollar signs in special g++ assembler names.
+   This ensures the configuration knows our system correctly so we can link
+   with libraries compiled with the native cc.  */
+#undef NO_DOLLAR_IN_LABEL
+
+/* The prefix to add to user-visible assembler symbols.
+   For System V Release 4 & ELF the convention is *not* to prepend a leading
+   underscore onto user-level symbol names.  */
+
+#undef  USER_LABEL_PREFIX
+#define USER_LABEL_PREFIX ""
+
+/* Handle #pragma weak and #pragma pack.  */
+#undef  HANDLE_SYSV_PRAGMA
+#define HANDLE_SYSV_PRAGMA
+
+/* While FreeBSD ELF no longer uses our home-grown crtbegin.o/crtend.o and thus
+   could switch to the DWARF2 unwinding mechanisms.  I don't want to make the
+   switch mid-branch.  So continue to use sjlj-exceptions.  */
+#ifdef WANT_DWARF2_UNWIND
+/* FreeBSD ELF will use DWARF2 unwinding in 5.0+, as some psABI requires it.  */
+#define DWARF2_UNWIND_INFO 1
+#else
+/* Maintain compatibility with the FreeBSD {3,4}.x C++ ABI.  */
+#define DWARF2_UNWIND_INFO 0
+#endif
+
+/* Do not use ``thunks'' to implement C++ vtables.  This method still has
+   fatal bugs.  Also, GCC 3.0 will have a new C++ ABI that may not even
+   support `thunks'.  */
+#undef DEFAULT_VTABLE_THUNKS
+
+
+/************************[  Assembler stuff  ]********************************/
+
+/* Override the default comment-starter of "/".  */
+#undef  ASM_COMMENT_START
+#define ASM_COMMENT_START      "#"
+
+/* Attach a special .ident directive to the end of the file to identify
+   the version of GCC which compiled this code.  The format of the .ident
+   string is patterned after the ones produced by native SVR4 C compilers.  */
+
+#undef  IDENT_ASM_OP
+#define IDENT_ASM_OP   "\t.ident\t"
+
+/* Output #ident as a .ident.  */
+
+#undef  ASM_OUTPUT_IDENT
+#define ASM_OUTPUT_IDENT(FILE, NAME)                                   \
+  fprintf ((FILE), "%s\"%s\"\n", IDENT_ASM_OP, (NAME));
+
+/* Identify the front-end which produced this file.  To keep symbol
+   space down, and not confuse kdb, only do this if the language is
+   not C. (svr4.h defines ASM_IDENTIFY_GCC but neglects this) */
+
+#undef  ASM_IDENTIFY_LANGUAGE
+#define ASM_IDENTIFY_LANGUAGE(FILE)                                    \
+  {                                                                    \
+    if (strcmp (lang_identify (), "c") != 0)                           \
+        output_lang_identify (FILE);                                   \
+  }
+
+#undef  ASM_FILE_END
+#define ASM_FILE_END(FILE)                                             \
+  do {                                                                 \
+    if (!flag_no_ident)                                                        \
+      fprintf ((FILE), "%s\"GCC: (GNU) %s %s\"\n",                     \
+              IDENT_ASM_OP, lang_identify(), version_string);          \
+  } while (0)
+
+/* This is the pseudo-op used to generate a contiguous sequence of byte
+   values from a double-quoted string WITHOUT HAVING A TERMINATING NUL
+   AUTOMATICALLY APPENDED.  This is the same for most SVR4 assemblers.  */
+
+#undef  ASCII_DATA_ASM_OP
+#define ASCII_DATA_ASM_OP      "\t.ascii\t"
+
+#undef  ASM_BYTE_OP
+#define ASM_BYTE_OP            "\t.byte\t"
+
+/* This is how to allocate empty space in some section.  The .zero
+   pseudo-op is used for this on most ELF assemblers.  */
+
+#undef  SKIP_ASM_OP
+#define SKIP_ASM_OP            "\t.zero\t"
+
+/* A table of bytes codes used by the ASM_OUTPUT_ASCII and
+   ASM_OUTPUT_LIMITED_STRING macros.  Each byte in the table
+   corresponds to a particular byte value [0..255].  For any
+   given byte value, if the value in the corresponding table
+   position is zero, the given character can be output directly.
+   If the table value is 1, the byte must be output as a \ooo
+   octal escape.  If the tables value is anything else, then the
+   byte value should be output as a \ followed by the value
+   in the table.  Note that we can use standard UN*X escape
+   sequences for many control characters, but we don't use
+   \a to represent BEL because some SVR4 assemblers (e.g. on
+   the i386) don't know about that.  Also, we don't use \v
+   since some versions of gas, such as 2.2 did not accept it.  */
+
+#define ESCAPES \
+"\1\1\1\1\1\1\1\1btn\1fr\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\
+\0\0\"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\\0\0\0\
+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\
+\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\
+\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\
+\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\
+\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1"
+
+/* Some SVR4 assemblers have a limit on the number of characters which
+   can appear in the operand of a .string directive.  If your assembler
+   has such a limitation, you should define STRING_LIMIT to reflect that
+   limit.  Note that at least some SVR4 assemblers have a limit on the
+   actual number of bytes in the double-quoted string, and that they
+   count each character in an escape sequence as one byte.  Thus, an
+   escape sequence like \377 would count as four bytes.
+
+   If your target assembler doesn't support the .string directive, you
+   should define this to zero.
+*/
+
+#undef  STRING_LIMIT
+#define STRING_LIMIT   ((unsigned) 256)
+
+#undef  STRING_ASM_OP
+#define STRING_ASM_OP  "\t.string\t"
+
+/* Output the label which precedes a jumptable.  Note that for all svr4/ELF
+   systems where we actually generate jumptables (which is to say every
+   SVR4 target except i386, where we use casesi instead) we put the jump-
+   tables into the .rodata section and since other stuff could have been
+   put into the .rodata section prior to any given jumptable, we have to
+   make sure that the location counter for the .rodata section gets pro-
+   perly re-aligned prior to the actual beginning of the jump table.  */
+
+#undef  ALIGN_ASM_OP
+#define ALIGN_ASM_OP   "\t.align\t"
+
+/* This says how to output assembler code to declare an
+   uninitialized external linkage data object.  Under SVR4/ELF,
+   the linker seems to want the alignment of data objects
+   to depend on their types.  We do exactly that here.  */
+
+#undef  COMMON_ASM_OP
+#define COMMON_ASM_OP  "\t.comm\t"
+
+/* This says how to output assembler code to declare an
+   uninitialized internal linkage data object.  Under SVR4/ELF,
+   the linker seems to want the alignment of data objects
+   to depend on their types.  We do exactly that here.  */
+
+#undef  LOCAL_ASM_OP
+#define LOCAL_ASM_OP   "\t.local\t"
+
+#undef  ASM_OUTPUT_BEFORE_CASE_LABEL
+#define ASM_OUTPUT_BEFORE_CASE_LABEL(FILE, PREFIX, NUM, TABLE)         \
+  ASM_OUTPUT_ALIGN ((FILE), 2);
+
+#undef  ASM_OUTPUT_CASE_LABEL
+#define ASM_OUTPUT_CASE_LABEL(FILE, PREFIX, NUM, JUMPTABLE)            \
+  do {                                                                 \
+    ASM_OUTPUT_BEFORE_CASE_LABEL ((FILE), (PREFIX), (NUM), (JUMPTABLE))        \
+    ASM_OUTPUT_INTERNAL_LABEL ((FILE), (PREFIX), (NUM));               \
+  } while (0)
+
+/* The standard SVR4/ELF assembler seems to require that certain builtin
+   library routines (e.g. .udiv) be explicitly declared as .globl
+   in each assembly file where they are referenced.  */
+
+#undef  ASM_OUTPUT_EXTERNAL_LIBCALL
+#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, FUN)                         \
+  ASM_GLOBALIZE_LABEL ((FILE), XSTR ((FUN), 0))
+
+/* Support const sections and the ctors and dtors sections for g++.
+   Note that there appears to be two different ways to support const
+   sections at the moment.  You can either #define the symbol
+   READONLY_DATA_SECTION (giving it some code which switches to the
+   readonly data section) or else you can #define the symbols
+   EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS, SELECT_SECTION, and
+   SELECT_RTX_SECTION.  We do both here just to be on the safe side.  
+   FreeBSD conditionalizes the use of ".section rodata" depending on
+   ELF mode - otherwise .text.  */
+
+#undef  USE_CONST_SECTION
+#define USE_CONST_SECTION      TARGET_ELF
+
+#undef  CONST_SECTION_ASM_OP
+#define CONST_SECTION_ASM_OP   "\t.section\t.rodata"
+
+/* Define the pseudo-ops used to switch to the .ctors and .dtors sections.
+
+   Note that we want to give these sections the SHF_WRITE attribute
+   because these sections will actually contain data (i.e. tables of
+   addresses of functions in the current root executable or shared library
+   file) and, in the case of a shared library, the relocatable addresses
+   will have to be properly resolved/relocated (and then written into) by
+   the dynamic linker when it actually attaches the given shared library
+   to the executing process.  (Note that on SVR4, you may wish to use the
+   `-z text' option to the ELF linker, when building a shared library, as
+   an additional check that you are doing everything right.  But if you do
+   use the `-z text' option when building a shared library, you will get
+   errors unless the .ctors and .dtors sections are marked as writable
+   via the SHF_WRITE attribute.)  */
+
+#undef  CTORS_SECTION_ASM_OP
+#define CTORS_SECTION_ASM_OP   "\t.section\t.ctors,\"aw\""
+#undef  DTORS_SECTION_ASM_OP
+#define DTORS_SECTION_ASM_OP   "\t.section\t.dtors,\"aw\""
+
+/* On SVR4, we *do* have support for the .init and .fini sections, and we
+   can put stuff in there to be executed before and after `main'.  We let
+   crtstuff.c and other files know this by defining the following symbols.
+   The definitions say how to change sections to the .init and .fini
+   sections.  This is the same for all known SVR4 assemblers.  */
+
+#undef  INIT_SECTION_ASM_OP
+#define INIT_SECTION_ASM_OP    "\t.section\t.init"
+#undef  FINI_SECTION_ASM_OP
+#define FINI_SECTION_ASM_OP    "\t.section\t.fini"
+
+/* A default list of other sections which we might be "in" at any given
+   time.  For targets that use additional sections (e.g. .tdesc) you
+   should override this definition in the target-specific file which
+   includes this file.  */
+
+#undef  EXTRA_SECTIONS
+#define EXTRA_SECTIONS in_const, in_ctors, in_dtors
+
+/* A default list of extra section function definitions.  For targets
+   that use additional sections (e.g. .tdesc) you should override this
+   definition in the target-specific file which includes this file.  */
+
+#undef  EXTRA_SECTION_FUNCTIONS
+#define EXTRA_SECTION_FUNCTIONS                                                \
+  CONST_SECTION_FUNCTION                                               \
+  CTORS_SECTION_FUNCTION                                               \
+  DTORS_SECTION_FUNCTION
+
+#undef  READONLY_DATA_SECTION
+#define READONLY_DATA_SECTION()        const_section ()
+
+extern void text_section ();
+
+#undef  CONST_SECTION_FUNCTION
+#define CONST_SECTION_FUNCTION                                         \
+  void                                                                 \
+  const_section ()                                                     \
+  {                                                                    \
+    if (!USE_CONST_SECTION)                                            \
+      text_section();                                                  \
+    else if (in_section != in_const)                                   \
+      {                                                                        \
+       fprintf (asm_out_file, "%s\n", CONST_SECTION_ASM_OP);           \
+       in_section = in_const;                                          \
+      }                                                                        \
+  }
+
+#undef  CTORS_SECTION_FUNCTION
+#define CTORS_SECTION_FUNCTION                                         \
+  void                                                                 \
+  ctors_section ()                                                     \
+  {                                                                    \
+    if (in_section != in_ctors)                                                \
+      {                                                                        \
+       fprintf (asm_out_file, "%s\n", CTORS_SECTION_ASM_OP);           \
+       in_section = in_ctors;                                          \
+      }                                                                        \
+  }
+
+#undef  DTORS_SECTION_FUNCTION
+#define DTORS_SECTION_FUNCTION                                         \
+  void                                                                 \
+  dtors_section ()                                                     \
+  {                                                                    \
+    if (in_section != in_dtors)                                                \
+      {                                                                        \
+       fprintf (asm_out_file, "%s\n", DTORS_SECTION_ASM_OP);           \
+       in_section = in_dtors;                                          \
+      }                                                                        \
+  }
+
+/* A C statement or statements to switch to the appropriate
+   section for output of RTX in mode MODE.  RTX is some kind
+   of constant in RTL.  The argument MODE is redundant except
+   in the case of a `const_int' rtx.  Currently, these always
+   go into the const section.  */
+
+#undef  SELECT_RTX_SECTION
+#define SELECT_RTX_SECTION(MODE, RTX)  const_section()
+
+/* Define the strings used for the special svr4/ELF .type and .size
+   directives.  These strings generally do not vary from one svr4/ELF
+   system to another.  */
+
+#undef  TYPE_ASM_OP
+#define TYPE_ASM_OP    "\t.type\t"
+#undef  SIZE_ASM_OP
+#define SIZE_ASM_OP    "\t.size\t"
+
+/* This is how we tell the assembler that a symbol is weak.  */
+
+#undef  ASM_WEAKEN_LABEL
+#define ASM_WEAKEN_LABEL(FILE, NAME)                                   \
+  do {                                                                 \
+    fputs ("\t.globl\t", (FILE)); assemble_name ((FILE), (NAME));      \
+    fputc ('\n', (FILE));                                              \
+    fputs ("\t.weak\t", (FILE)); assemble_name ((FILE), (NAME));       \
+    fputc ('\n', (FILE));                                              \
+  } while (0)
+
+/* The following macro defines the [default] format used with ELF to output
+   the second operand of the .type assembler directive.  */
+
+#undef  TYPE_OPERAND_FMT
+#define TYPE_OPERAND_FMT       "@%s"
+
+/* Write the extra assembler code needed to declare a function's result.
+   Most svr4/ELF assemblers don't require any special declaration of the
+   result value.  */
+
+#undef  ASM_DECLARE_RESULT
+#define ASM_DECLARE_RESULT(FILE, RESULT)
+
+/* These macros generate the special .type and .size directives which
+   are used to set the corresponding fields of the linker symbol table
+   entries in an ELF object file under SVR4/ELF.  These macros also output
+   the starting labels for the relevant functions/objects.  */
+
+/* Write the extra assembler code needed to declare an object properly.  */
+
+#undef  ASM_DECLARE_OBJECT_NAME
+#define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL)                      \
+  do {                                                                 \
+    fprintf (FILE, "%s ", TYPE_ASM_OP);                                        \
+    assemble_name (FILE, NAME);                                                \
+    putc (',', FILE);                                                  \
+    fprintf (FILE, TYPE_OPERAND_FMT, "object");                                \
+    putc ('\n', FILE);                                                 \
+    size_directive_output = 0;                                         \
+    if (!flag_inhibit_size_directive && DECL_SIZE (DECL))              \
+      {                                                                        \
+       size_directive_output = 1;                                      \
+       fprintf (FILE, "%s ", SIZE_ASM_OP);                             \
+       assemble_name (FILE, NAME);                                     \
+       putc (',', FILE);                                               \
+       fprintf (FILE, HOST_WIDE_INT_PRINT_DEC,                         \
+                int_size_in_bytes (TREE_TYPE (DECL)));                 \
+       fputc ('\n', FILE);                                             \
+      }                                                                        \
+    ASM_OUTPUT_LABEL(FILE, NAME);                                      \
+  } while (0)
+
+/* Output the size directive for a decl in rest_of_decl_compilation
+   in the case where we did not do so before the initializer.
+   Once we find the error_mark_node, we know that the value of
+   size_directive_output was set
+   by ASM_DECLARE_OBJECT_NAME when it was run for the same decl.  */
+
+#undef  ASM_FINISH_DECLARE_OBJECT
+#define ASM_FINISH_DECLARE_OBJECT(FILE, DECL, TOP_LEVEL, AT_END)       \
+  do {                                                                 \
+    char *name = XSTR (XEXP (DECL_RTL (DECL), 0), 0);                  \
+    if (!flag_inhibit_size_directive && DECL_SIZE (DECL)               \
+       && ! AT_END && TOP_LEVEL                                        \
+       && DECL_INITIAL (DECL) == error_mark_node                       \
+       && !size_directive_output)                                      \
+      {                                                                        \
+       size_directive_output = 1;                                      \
+       fprintf (FILE, "%s ", SIZE_ASM_OP);                             \
+       assemble_name (FILE, name);                                     \
+       putc (',', FILE);                                               \
+       fprintf (FILE, HOST_WIDE_INT_PRINT_DEC,                         \
+               int_size_in_bytes (TREE_TYPE (DECL)));                  \
+       fputc ('\n', FILE);                                             \
+      }                                                                        \
+  } while (0)
+
+
+/************************[  Debugger stuff  ]*********************************/
+
+/* All ELF targets can support DWARF-2.  */
+#undef  DWARF2_DEBUGGING_INFO
+#define DWARF2_DEBUGGING_INFO
+
+/* This is BSD, so we want the DBX format.  */
+#undef  DBX_DEBUGGING_INFO
+#define DBX_DEBUGGING_INFO
+
+/* This is BSD, so use stabs instead of DWARF debug format.  */
+#undef  PREFERRED_DEBUGGING_TYPE
+#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
+
+/* But allow STABS to be supported as well.
+       Note that we want to override some definition settings done for some
+       architecture's native OS's tools that don't apply to us.  */
+#undef ASM_IDENTIFY_GCC
+#undef ASM_IDENTIFY_LANGUAGE
diff --git a/contrib/gcc/config/i386/dragonfly-aout.h b/contrib/gcc/config/i386/dragonfly-aout.h
new file mode 100644 (file)
index 0000000..670473b
--- /dev/null
@@ -0,0 +1,249 @@
+/* Definitions of target machine for GNU compiler for Intel 80386
+   running FreeBSD.
+   Copyright (C) 1988, 1992, 1994, 1996, 1997 Free Software Foundation, Inc.
+   Contributed by Poul-Henning Kamp <phk@login.dkuug.dk>
+
+$DragonFly: src/contrib/gcc/config/i386/Attic/dragonfly-aout.h,v 1.1 2003/11/19 00:51:32 dillon Exp $
+
+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.  */
+
+/* This is tested by i386gas.h.  */
+#define YES_UNDERSCORES
+
+/* Don't assume anything about the header files. */
+#define NO_IMPLICIT_EXTERN_C
+
+#include "i386/gstabs.h"
+
+/* Get perform_* macros to build libgcc.a.  */
+#include "i386/perform.h"
+
+/* This goes away when the math-emulator is fixed */
+#undef TARGET_DEFAULT
+#define TARGET_DEFAULT \
+  (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS | MASK_NO_FANCY_MATH_387)
+
+#undef CPP_PREDEFINES
+#define CPP_PREDEFINES "-Dunix -Di386 -D__DragonFly__ -D__FreeBSD__ -Asystem(unix) -Asystem(FreeBSD) -Asystem(DragonFly) -Acpu(i386) -Amachine(i386)"
+
+/* Like the default, except no -lg.  */
+#define LIB_SPEC "%{!shared:%{!pg:-lc}%{pg:-lc_p}}"
+
+#undef SIZE_TYPE
+#define SIZE_TYPE "unsigned int"
+
+#undef PTRDIFF_TYPE
+#define PTRDIFF_TYPE "int"
+
+#undef WCHAR_TYPE
+#define WCHAR_TYPE "int"
+
+#define WCHAR_UNSIGNED 0
+
+#undef WCHAR_TYPE_SIZE
+#define WCHAR_TYPE_SIZE BITS_PER_WORD
+
+#define HAVE_ATEXIT
+
+/* Override the default comment-starter of "/".  */
+
+#undef ASM_COMMENT_START
+#define ASM_COMMENT_START "#"
+
+#undef ASM_APP_ON
+#define ASM_APP_ON "#APP\n"
+
+#undef ASM_APP_OFF
+#define ASM_APP_OFF "#NO_APP\n"
+
+/* FreeBSD using a.out does not support DWARF2 unwinding mechanisms.  */
+#define DWARF2_UNWIND_INFO 0
+\f
+/* The following macros are stolen from i386v4.h */
+/* These have to be defined to get PIC code correct */
+
+/* This is how to output an element of a case-vector that is relative.
+   This is only used for PIC code.  See comments by the `casesi' insn in
+   i386.md for an explanation of the expression this outputs. */
+
+#undef ASM_OUTPUT_ADDR_DIFF_ELT
+#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
+  fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, VALUE)
+
+/* Indicate that jump tables go in the text section.  This is
+   necessary when compiling PIC code.  */
+
+#define JUMP_TABLES_IN_TEXT_SECTION 1
+
+/* Don't default to pcc-struct-return, because in FreeBSD we prefer the
+   superior nature of the older gcc way.  */
+#define DEFAULT_PCC_STRUCT_RETURN 0
+
+/* Ensure we the configuration knows our system correctly so we can link with
+   libraries compiled with the native cc. */
+#undef NO_DOLLAR_IN_LABEL
+\f
+/* i386 freebsd still uses old binutils that don't insert nops by default
+   when the .align directive demands to insert extra space in the text
+   segment.  */
+#undef ASM_OUTPUT_ALIGN
+#define ASM_OUTPUT_ALIGN(FILE,LOG) \
+  if ((LOG)!=0) fprintf ((FILE), "\t.align %d,0x90\n", (LOG))
+\f
+/* Profiling routines, partially copied from i386/osfrose.h.  */
+
+/* Redefine this to use %eax instead of %edx.  */
+#undef FUNCTION_PROFILER
+#define FUNCTION_PROFILER(FILE, LABELNO)  \
+{                                                                      \
+  if (flag_pic)                                                                \
+    {                                                                  \
+      fprintf (FILE, "\tleal %sP%d@GOTOFF(%%ebx),%%eax\n",             \
+              LPREFIX, (LABELNO));                                     \
+      fprintf (FILE, "\tcall *mcount@GOT(%%ebx)\n");                   \
+    }                                                                  \
+  else                                                                 \
+    {                                                                  \
+      fprintf (FILE, "\tmovl $%sP%d,%%eax\n", LPREFIX, (LABELNO));     \
+      fprintf (FILE, "\tcall mcount\n");                               \
+    }                                                                  \
+}
+
+/*
+ * Some imports from svr4.h in support of shared libraries.
+ * Currently, we need the DECLARE_OBJECT_SIZE stuff.
+ */
+
+/* Define the strings used for the special svr4 .type and .size directives.
+   These strings generally do not vary from one system running svr4 to
+   another, but if a given system (e.g. m88k running svr) needs to use
+   different pseudo-op names for these, they may be overridden in the
+   file which includes this one.  */
+
+#define TYPE_ASM_OP    ".type"
+#define SIZE_ASM_OP    ".size"
+
+/* The following macro defines the format used to output the second
+   operand of the .type assembler directive.  Different svr4 assemblers
+   expect various different forms for this operand.  The one given here
+   is just a default.  You may need to override it in your machine-
+   specific tm.h file (depending upon the particulars of your assembler).  */
+
+#define TYPE_OPERAND_FMT       "@%s"
+
+/* Write the extra assembler code needed to declare a function's result.
+   Most svr4 assemblers don't require any special declaration of the
+   result value, but there are exceptions.  */
+
+#ifndef ASM_DECLARE_RESULT
+#define ASM_DECLARE_RESULT(FILE, RESULT)
+#endif
+
+/* These macros generate the special .type and .size directives which
+   are used to set the corresponding fields of the linker symbol table
+   entries in an ELF object file under SVR4.  These macros also output
+   the starting labels for the relevant functions/objects.  */
+
+/* Write the extra assembler code needed to declare a function properly.
+   Some svr4 assemblers need to also have something extra said about the
+   function's return value.  We allow for that here.  */
+
+#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL)                    \
+  do {                                                                 \
+    fprintf (FILE, "\t%s\t ", TYPE_ASM_OP);                            \
+    assemble_name (FILE, NAME);                                                \
+    putc (',', FILE);                                                  \
+    fprintf (FILE, TYPE_OPERAND_FMT, "function");                      \
+    putc ('\n', FILE);                                                 \
+    ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL));                     \
+    ASM_OUTPUT_LABEL(FILE, NAME);                                      \
+  } while (0)
+
+/* Write the extra assembler code needed to declare an object properly.  */
+
+#define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL)                      \
+  do {                                                                 \
+    fprintf (FILE, "\t%s\t ", TYPE_ASM_OP);                            \
+    assemble_name (FILE, NAME);                                                \
+    putc (',', FILE);                                                  \
+    fprintf (FILE, TYPE_OPERAND_FMT, "object");                                \
+    putc ('\n', FILE);                                                 \
+    size_directive_output = 0;                                         \
+    if (!flag_inhibit_size_directive && DECL_SIZE (DECL))              \
+      {                                                                        \
+        size_directive_output = 1;                                     \
+       fprintf (FILE, "\t%s\t ", SIZE_ASM_OP);                         \
+       assemble_name (FILE, NAME);                                     \
+       fprintf (FILE, ",%d\n",  int_size_in_bytes (TREE_TYPE (DECL))); \
+      }                                                                        \
+    ASM_OUTPUT_LABEL(FILE, NAME);                                      \
+  } while (0)
+
+/* Output the size directive for a decl in rest_of_decl_compilation
+   in the case where we did not do so before the initializer.
+   Once we find the error_mark_node, we know that the value of
+   size_directive_output was set
+   by ASM_DECLARE_OBJECT_NAME when it was run for the same decl.  */
+
+#define ASM_FINISH_DECLARE_OBJECT(FILE, DECL, TOP_LEVEL, AT_END)        \
+do {                                                                    \
+     char *name = XSTR (XEXP (DECL_RTL (DECL), 0), 0);                  \
+     if (!flag_inhibit_size_directive && DECL_SIZE (DECL)              \
+         && ! AT_END && TOP_LEVEL                                       \
+         && DECL_INITIAL (DECL) == error_mark_node                      \
+         && !size_directive_output)                                     \
+       {                                                                \
+         fprintf (FILE, "\t%s\t ", SIZE_ASM_OP);                        \
+        assemble_name (FILE, name);                                    \
+        fprintf (FILE, ",%d\n",  int_size_in_bytes (TREE_TYPE (DECL)));\
+       }                                                               \
+   } while (0)
+
+
+/* This is how to declare the size of a function.  */
+
+#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL)                   \
+  do {                                                                 \
+    if (!flag_inhibit_size_directive)                                  \
+      {                                                                        \
+        char label[256];                                               \
+       static int labelno;                                             \
+       labelno++;                                                      \
+       ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno);            \
+       ASM_OUTPUT_INTERNAL_LABEL (FILE, "Lfe", labelno);               \
+       fprintf (FILE, "\t%s\t ", SIZE_ASM_OP);                         \
+       assemble_name (FILE, (FNAME));                                  \
+        fprintf (FILE, ",");                                           \
+       assemble_name (FILE, label);                                    \
+        fprintf (FILE, "-");                                           \
+       assemble_name (FILE, (FNAME));                                  \
+       putc ('\n', FILE);                                              \
+      }                                                                        \
+  } while (0)
+
+#define ASM_SPEC   " %| %{fpic:-k} %{fPIC:-k}"
+#define LINK_SPEC \
+  "%{p:%e`-p' not supported; use `-pg' and gprof(1)} \
+   %{shared:-Bshareable} \
+   %{!shared:%{!nostdlib:%{!r:%{!e*:-e start}}} -dc -dp %{static:-Bstatic} \
+   %{pg:-Bstatic} %{Z}} \
+   %{assert*} %{R*}"
+
+#define STARTFILE_SPEC  \
+  "%{shared:c++rt0.o%s} \
+   %{!shared:%{pg:gcrt0.o%s}%{!pg:%{static:scrt0.o%s}%{!static:crt0.o%s}}}"
diff --git a/contrib/gcc/config/i386/dragonfly.h b/contrib/gcc/config/i386/dragonfly.h
new file mode 100644 (file)
index 0000000..a2af396
--- /dev/null
@@ -0,0 +1,819 @@
+/* Definitions for Intel 386 running FreeBSD with either a.out or ELF format
+   Copyright (C) 1996, 2000, 2002 Free Software Foundation, Inc.
+   Contributed by Eric Youngdale.
+   Modified for stabs-in-ELF by H.J. Lu.
+   Adapted from GNU/Linux version by John Polstra.
+   Added support for generating "old a.out gas" on the fly by Peter Wemm.
+   Continued development 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.  */
+
+/* $FreeBSD: src/contrib/gcc/config/i386/freebsd.h,v 1.34.2.5 2002/06/20 23:12:37 obrien Exp $ */
+/* $DragonFly: src/contrib/gcc/config/i386/Attic/dragonfly.h,v 1.1 2003/11/19 00:51:32 dillon Exp $ */
+
+#undef  CPP_PREDEFINES
+#define CPP_PREDEFINES                                                         \
+  "-Di386 -Acpu(i386) -Amachine(i386)"                                 \
+  FBSD_CPP_PREDEFINES
+
+#undef  CC1_SPEC
+#define CC1_SPEC "\
+  %{gline:%{!g:%{!g0:%{!g1:%{!g2: -g1}}}}} \
+  %{maout: %{!mno-underscores: %{!munderscores: -munderscores }}}"
+
+#undef  ASM_SPEC
+#define ASM_SPEC       "%{v*: -v} %{maout: %{fpic:-k} %{fPIC:-k}}"
+
+#undef  ASM_FINAL_SPEC
+#define ASM_FINAL_SPEC "%|"
+
+/* Provide a LINK_SPEC appropriate for FreeBSD.  Here we provide support
+   for the special GCC options -static and -shared, which allow us to
+   link things in one of these three modes by applying the appropriate
+   combinations of options at link-time. We like to support here for
+   as many of the other GNU linker options as possible. But I don't
+   have the time to search for those flags. I am sure how to add
+   support for -soname shared_object_name. H.J.
+
+   When the -shared link option is used a final link is not being
+   done.  */
+
+#undef LINK_SPEC
+#define LINK_SPEC "\
+ %{p:%e`-p' not supported; use `-pg' and gprof(1)} \
+  %{maout: %{shared:-Bshareable} \
+    %{!shared:%{!nostdlib:%{!r:%{!e*:-e start}}} -dc -dp %{static:-Bstatic} \
+      %{pg:-Bstatic} %{Z}} \
+    %{assert*} %{R*}} \
+  %{!maout: \
+    %{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}}"
+
+/* Provide a STARTFILE_SPEC appropriate for FreeBSD.  Here we add the magical
+   crtbegin.o file (see crtstuff.c) which provides part of the support for
+   getting C++ file-scope static object constructed before entering `main'.  */
+
+#undef STARTFILE_SPEC
+#define STARTFILE_SPEC "\
+  %{maout: %{shared:c++rt0.o%s} \
+    %{!shared: \
+      %{pg:gcrt0.o%s}%{!pg: \
+       %{static:scrt0.o%s} \
+       %{!static:crt0.o%s}}}} \
+  %{!maout: \
+    %{!shared: \
+      %{pg:gcrt1.o%s} \
+      %{!pg: \
+       %{p:gcrt1.o%s} \
+       %{!p:crt1.o%s}}} \
+    crti.o%s \
+    %{!shared:crtbegin.o%s} \
+    %{shared:crtbeginS.o%s}}"
+
+/* Provide an ENDFILE_SPEC appropriate for FreeBSD/i386.  Here we tack on our
+   own magical crtend.o file (see crtstuff.c) which provides part of the
+   support for getting C++ file-scope static object constructed before
+   entering `main', followed by the normal "finalizer" file, `crtn.o'.  */
+
+#undef  ENDFILE_SPEC
+#define ENDFILE_SPEC "\
+  %{!maout: \
+    %{!shared:crtend.o%s} \
+    %{shared:crtendS.o%s} crtn.o%s}"
+
+
+/************************[  Target stuff  ]***********************************/
+
+/* Define the actual types of some ANSI-mandated types.
+   Needs to agree with <machine/stdint.h>.  GCC defaults come from c-decl.c,
+   c-common.c, and config/<arch>/<arch>.h.  */
+
+#undef  SIZE_TYPE
+#define SIZE_TYPE      "unsigned int"
+
+#undef  PTRDIFF_TYPE
+#define PTRDIFF_TYPE   "int"
+
+#undef  WCHAR_TYPE_SIZE
+#define WCHAR_TYPE_SIZE        BITS_PER_WORD
+
+/* This is the pseudo-op used to generate a 32-bit word of data with a
+   specific value in some section.  */
+
+#undef  INT_ASM_OP
+#define INT_ASM_OP     ".long"
+
+/* Biggest alignment supported by the object file format of this
+   machine.  Use this macro to limit the alignment which can be
+   specified using the `__attribute__ ((aligned (N)))' construct.  If
+   not defined, the default value is `BIGGEST_ALIGNMENT'.  */
+
+#define MAX_OFILE_ALIGNMENT (32768*8)
+
+#undef  TARGET_VERSION
+#define TARGET_VERSION fprintf (stderr, " (i386 DragonFly/ELF)");
+
+#define MASK_PROFILER_EPILOGUE 010000000000
+#define MASK_AOUT              004000000000    /* a.out not elf */
+#define MASK_UNDERSCORES       002000000000    /* use leading _ */
+
+#define TARGET_PROFILER_EPILOGUE       (target_flags & MASK_PROFILER_EPILOGUE)
+#define TARGET_AOUT                    (target_flags & MASK_AOUT)
+#define TARGET_ELF                     ((target_flags & MASK_AOUT) == 0)
+#define TARGET_UNDERSCORES             ((target_flags & MASK_UNDERSCORES) != 0)
+
+#undef SUBTARGET_SWITCHES
+#define SUBTARGET_SWITCHES                                             \
+  { "profiler-epilogue",        MASK_PROFILER_EPILOGUE, "Function profiler epilogue"}, \
+  { "no-profiler-epilogue",    -MASK_PROFILER_EPILOGUE, "No function profiler epilogue"}, \
+  { "aout",                     MASK_AOUT, "Generate an a.out (vs. ELF) binary"}, \
+  { "no-aout",                 -MASK_AOUT, "Do not generate an a.out binary"}, \
+  { "underscores",              MASK_UNDERSCORES, "Add leading underscores to symbols"}, \
+  { "no-underscores",          -MASK_UNDERSCORES, "Do not add leading underscores to symbols"},
+
+/* This goes away when the math emulator is fixed.  */
+#undef  TARGET_DEFAULT
+#define TARGET_DEFAULT \
+  (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS | MASK_NO_FANCY_MATH_387)
+
+/* Don't default to pcc-struct-return, we want to retain compatibility with
+   older gcc versions AND pcc-struct-return is nonreentrant.
+   (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
+
+/* The a.out tools do not support "linkonce" sections. */
+#undef  SUPPORTS_ONE_ONLY
+#define SUPPORTS_ONE_ONLY      TARGET_ELF
+
+/* Prefix for internally generated assembler labels.  If we aren't using
+   underscores, we are using prefix `.'s to identify labels that should
+   be ignored, as in `i386/gas.h' --karl@cs.umb.edu  */
+#undef  LPREFIX
+#define LPREFIX ((TARGET_UNDERSCORES) ? "L" : ".L")
+
+/* supply our own hook for calling __main() from main() */
+#undef  INVOKE__main
+#define INVOKE__main
+#undef  GEN_CALL__MAIN
+#define GEN_CALL__MAIN                                                 \
+  do {                                                                 \
+    if (!(TARGET_ELF))                                                 \
+      emit_library_call (gen_rtx (SYMBOL_REF, Pmode, NAME__MAIN), 0,   \
+                        VOIDmode, 0);                                  \
+  } while (0)
+
+/* Indicate that jump tables go in the text section.  This is
+   necessary when compiling PIC code.  */
+#undef  JUMP_TABLES_IN_TEXT_SECTION
+#define JUMP_TABLES_IN_TEXT_SECTION    (flag_pic)
+
+/* override the exception table positioning */
+#undef  EXCEPTION_SECTION
+#define EXCEPTION_SECTION() \
+  do {                                                                 \
+    if (TARGET_ELF)                                                    \
+      {                                                                        \
+       named_section (NULL_TREE, ".gcc_except_table", 0);              \
+      }                                                                        \
+    else                                                               \
+      {                                                                        \
+       if (flag_pic)                                                   \
+         data_section ();                                              \
+       else                                                            \
+         readonly_data_section ();                                     \
+      }                                                                        \
+  } while (0);
+
+/* Tell final.c that we don't need a label passed to mcount.  */
+#undef  NO_PROFILE_COUNTERS
+#define NO_PROFILE_COUNTERS
+
+/* Output assembler code to FILE to begin profiling of the current function.
+   LABELNO is an optional label.  */
+
+#undef  FUNCTION_PROFILER
+#define FUNCTION_PROFILER(FILE, LABELNO)  \
+  do {                                                                 \
+    char *_name = TARGET_AOUT ? "mcount" : ".mcount";                  \
+    if (flag_pic)                                                      \
+      fprintf ((FILE), "\tcall *%s@GOT(%%ebx)\n", _name);              \
+    else                                                               \
+      fprintf ((FILE), "\tcall %s\n", _name);                          \
+  } while (0)
+
+/* Output assembler code to FILE to end profiling of the current function.  */
+
+#undef  FUNCTION_PROFILER_EPILOGUE
+#define FUNCTION_PROFILER_EPILOGUE(FILE, DO_RTL)                       \
+  do {                                                                 \
+    if (TARGET_PROFILER_EPILOGUE)                                      \
+      {                                                                        \
+       if (DO_RTL)                                                     \
+         {                                                             \
+         /* ".mexitcount" is specially handled in                      \
+            ASM_HACK_SYMBOLREF () so that we don't need to handle      \
+            flag_pic or TARGET_AOUT here.  */                          \
+           rtx xop;                                                    \
+           xop = gen_rtx_MEM (FUNCTION_MODE,                           \
+                           gen_rtx_SYMBOL_REF (Pmode, ".mexitcount")); \
+           emit_call_insn (gen_rtx (CALL, VOIDmode, xop, const0_rtx)); \
+         }                                                             \
+       else                                                            \
+         {                                                             \
+         /* XXX this !DO_RTL case is broken but not actually used.  */ \
+           char *_name = TARGET_AOUT ? "mcount" : ".mcount";           \
+           if (flag_pic)                                               \
+             fprintf (FILE, "\tcall *%s@GOT(%%ebx)\n", _name);         \
+           else                                                        \
+             fprintf (FILE, "\tcall %s\n", _name);                     \
+         }                                                             \
+      }                                                                        \
+  } while (0)
+
+
+/************************[  Assembler stuff  ]********************************/
+
+/* Override the default comment-starter of "/" from unix.h.  */
+#undef  ASM_COMMENT_START
+#define ASM_COMMENT_START "#"
+
+#undef  ASM_APP_ON
+#define ASM_APP_ON     "#APP\n"
+
+#undef  ASM_APP_OFF
+#define ASM_APP_OFF    "#NO_APP\n"
+
+/* Enable alias attribute support.  */
+#undef  SET_ASM_OP
+#define SET_ASM_OP     ".set"
+
+/* This is how to begin an assembly language file.
+   The .file command should always begin the output.
+   ELF also needs a .version.  */
+
+#undef  ASM_FILE_START
+#define ASM_FILE_START(FILE)                                           \
+  do {                                                                 \
+    output_file_directive ((FILE), main_input_filename);               \
+    if (TARGET_ELF)                                                    \
+      fprintf ((FILE), "\t.version\t\"01.01\"\n");                     \
+  } while (0)
+
+/* This is how to store into the string BUF
+   the symbol_ref name of an internal numbered label where
+   PREFIX is the class of label and NUM is the number within the class.
+   This is suitable for output with `assemble_name'.  */
+#undef ASM_GENERATE_INTERNAL_LABEL
+#define ASM_GENERATE_INTERNAL_LABEL(BUF, PREFIX, NUMBER)               \
+  sprintf ((BUF), "*%s%s%d", (TARGET_UNDERSCORES) ? "" : ".",          \
+          (PREFIX), (NUMBER))
+
+/* This is how to output an internal numbered label where
+   PREFIX is the class of label and NUM is the number within the class.
+   For most svr4/ELF systems, the convention is that any symbol which begins
+   with a period is not put into the linker symbol table by the assembler.  */
+#undef ASM_OUTPUT_INTERNAL_LABEL
+#define        ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM)                      \
+  fprintf ((FILE), "%s%s%d:\n", (TARGET_UNDERSCORES) ? "" : ".",       \
+          (PREFIX), (NUM))
+
+/* This is how to output a reference to a user-level label named NAME.  */
+#undef  ASM_OUTPUT_LABELREF
+#define ASM_OUTPUT_LABELREF(FILE, NAME)                                        \
+  do {                                                                 \
+    char *_name = (NAME);                                              \
+    /* Hack to avoid writing lots of rtl in                            \
+       FUNCTION_PROFILER_EPILOGUE ().  */                              \
+    if (*_name == '.' && strcmp(_name + 1, "mexitcount") == 0)         \
+      {                                                                        \
+       if (TARGET_AOUT)                                                \
+         _name++;                                                      \
+       if (flag_pic)                                                   \
+         fprintf ((FILE), "*%s@GOT(%%ebx)", _name);                    \
+       else                                                            \
+         fprintf ((FILE), "%s", _name);                                \
+      }                                                                        \
+    else                                                               \
+      fprintf (FILE, "%s%s", TARGET_UNDERSCORES ? "_" : "", _name);    \
+} while (0)
+
+/* This is how to hack on the symbol code of certain relcalcitrant
+   symbols to modify their output in output_pic_addr_const ().  */
+
+#undef  ASM_HACK_SYMBOLREF_CODE
+#define ASM_HACK_SYMBOLREF_CODE(NAME, CODE)                            \
+  do {                                                                 \
+    /* Part of hack to avoid writing lots of rtl in                    \
+       FUNCTION_PROFILER_EPILOGUE ().  */                              \
+    char *_name = (NAME);                                              \
+    if (*_name == '.' && strcmp(_name + 1, "mexitcount") == 0)         \
+      (CODE) = 'X';                                                    \
+  } while (0)
+
+/* This is how to output an element of a case-vector that is relative.
+   This is only used for PIC code.  See comments by the `casesi' insn in
+   i386.md for an explanation of the expression this outputs. */
+#undef  ASM_OUTPUT_ADDR_DIFF_ELT
+#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL)               \
+  fprintf ((FILE), "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, (VALUE))
+
+#undef  ASM_OUTPUT_ALIGN
+#define ASM_OUTPUT_ALIGN(FILE, LOG)                                    \
+  if ((LOG)!=0) {                                                      \
+    if (in_text_section())                                             \
+      fprintf ((FILE), "\t.p2align %d,0x90\n", (LOG));                 \
+    else                                                               \
+      fprintf ((FILE), "\t.p2align %d\n", (LOG));                      \
+  }
+
+#undef  ASM_OUTPUT_ALIGNED_COMMON
+#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN)             \
+  do {                                                                 \
+    if (TARGET_ELF)                                                    \
+      {                                                                        \
+       fprintf ((FILE), "%s", COMMON_ASM_OP);                          \
+       assemble_name ((FILE), (NAME));                                 \
+       fprintf ((FILE), ",%u,%u\n", (SIZE), (ALIGN) / BITS_PER_UNIT);  \
+      }                                                                        \
+    else                                                               \
+      {                                                                        \
+       int rounded = (SIZE);                                           \
+       if (rounded == 0) rounded = 1;                                  \
+       rounded += (BIGGEST_ALIGNMENT / BITS_PER_UNIT) - 1;             \
+       rounded = (rounded / (BIGGEST_ALIGNMENT / BITS_PER_UNIT)        \
+                  * (BIGGEST_ALIGNMENT / BITS_PER_UNIT));              \
+       fprintf ((FILE), "%s ", COMMON_ASM_OP);                         \
+       assemble_name ((FILE), (NAME));                                 \
+       fprintf ((FILE), ",%u\n", (rounded));                           \
+      }                                                                        \
+  } while (0)
+
+/* This says how to output assembler code to declare an
+   uninitialized internal linkage data object.  Under SVR4,
+   the linker seems to want the alignment of data objects
+   to depend on their types.  We do exactly that here.  */
+
+#undef  ASM_OUTPUT_ALIGNED_LOCAL
+#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN)              \
+  do {                                                                 \
+    if (TARGET_ELF)                                                    \
+      {                                                                        \
+       fprintf ((FILE), "%s", LOCAL_ASM_OP);                           \
+       assemble_name ((FILE), (NAME));                                 \
+       fprintf ((FILE), "\n");                                         \
+       ASM_OUTPUT_ALIGNED_COMMON ((FILE), (NAME), (SIZE), (ALIGN));    \
+      }                                                                        \
+    else                                                               \
+      {                                                                        \
+       int rounded = (SIZE);                                           \
+       if (rounded == 0) rounded = 1;                                  \
+       rounded += (BIGGEST_ALIGNMENT / BITS_PER_UNIT) - 1;             \
+       rounded = (rounded / (BIGGEST_ALIGNMENT / BITS_PER_UNIT)        \
+                  * (BIGGEST_ALIGNMENT / BITS_PER_UNIT));              \
+       fputs ("\t.lcomm\t", (FILE));                                   \
+       assemble_name ((FILE), (NAME));                                 \
+       fprintf ((FILE), ",%u\n", (rounded));                           \
+      }                                                                        \
+  } while (0)
+
+/* How to output some space.  The rules are different depending on the
+   object format.  */
+#undef  ASM_OUTPUT_SKIP
+#define ASM_OUTPUT_SKIP(FILE, SIZE)                                    \
+  do {                                                                 \
+    if (TARGET_ELF)                                                    \
+      {                                                                        \
+        fprintf ((FILE), "%s%u\n", SKIP_ASM_OP, (SIZE));               \
+      }                                                                        \
+    else                                                               \
+      {                                                                        \
+        fprintf ((FILE), "\t.space\t%u\n", (SIZE));                    \
+      }                                                                        \
+  } while (0)
+
+#undef  ASM_OUTPUT_SOURCE_LINE
+#define ASM_OUTPUT_SOURCE_LINE(FILE, LINE)                             \
+  do {                                                                 \
+    static int sym_lineno = 1;                                         \
+    if (TARGET_ELF)                                                    \
+      {                                                                        \
+       fprintf ((FILE), ".stabn 68,0,%d,.LM%d-", (LINE), sym_lineno);  \
+       assemble_name ((FILE),                                          \
+               XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0));  \
+       fprintf ((FILE), "\n.LM%d:\n", sym_lineno);                     \
+       sym_lineno += 1;                                                \
+      }                                                                        \
+    else                                                               \
+      {                                                                        \
+       fprintf ((FILE), "\t%s %d,0,%d\n", ASM_STABD_OP, N_SLINE,       \
+               lineno);                                                \
+      }                                                                        \
+  } while (0)
+
+/* These macros generate the special .type and .size directives which
+   are used to set the corresponding fields of the linker symbol table
+   entries in an ELF object file under SVR4.  These macros also output
+   the starting labels for the relevant functions/objects.  */
+
+/* Write the extra assembler code needed to declare a function properly.
+   Some svr4 assemblers need to also have something extra said about the
+   function's return value.  We allow for that here.  */
+
+#undef  ASM_DECLARE_FUNCTION_NAME
+#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL)                    \
+  do {                                                                 \
+    fprintf (FILE, "\t%s\t ", TYPE_ASM_OP);                            \
+    assemble_name (FILE, NAME);                                                \
+    putc (',', FILE);                                                  \
+    fprintf (FILE, TYPE_OPERAND_FMT, "function");                      \
+    putc ('\n', FILE);                                                 \
+    ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL));                     \
+    ASM_OUTPUT_LABEL(FILE, NAME);                                      \
+  } while (0)
+
+/* This is how to declare the size of a function.  */
+
+#undef  ASM_DECLARE_FUNCTION_SIZE
+#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL)                   \
+  do {                                                                 \
+    if (!flag_inhibit_size_directive)                                  \
+      {                                                                        \
+        char label[256];                                               \
+       static int labelno;                                             \
+       labelno++;                                                      \
+       ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno);            \
+       ASM_OUTPUT_INTERNAL_LABEL (FILE, "Lfe", labelno);               \
+       fprintf (FILE, "\t%s\t ", SIZE_ASM_OP);                         \
+       assemble_name (FILE, (FNAME));                                  \
+        fprintf (FILE, ",");                                           \
+       assemble_name (FILE, label);                                    \
+        fprintf (FILE, "-");                                           \
+       assemble_name (FILE, (FNAME));                                  \
+       putc ('\n', FILE);                                              \
+      }                                                                        \
+  } while (0)
+
+
+/* The routine used to output NUL terminated strings.  We use a special
+   version of this for most svr4 targets because doing so makes the
+   generated assembly code more compact (and thus faster to assemble)
+   as well as more readable, especially for targets like the i386
+   (where the only alternative is to output character sequences as
+   comma separated lists of numbers).   */
+
+#undef  ASM_OUTPUT_LIMITED_STRING
+#define ASM_OUTPUT_LIMITED_STRING(FILE, STR)                           \
+  do {                                                                 \
+      register unsigned char *_limited_str = (unsigned char *) (STR);  \
+      register unsigned ch;                                            \
+      fprintf ((FILE), "\t%s\t\"", STRING_ASM_OP);                     \
+      for (; (ch = *_limited_str); _limited_str++)                     \
+        {                                                              \
+         register int escape;                                          \
+         switch (escape = ESCAPES[ch])                                 \
+           {                                                           \
+           case 0:                                                     \
+             putc (ch, (FILE));                                        \
+             break;                                                    \
+           case 1:                                                     \
+             fprintf ((FILE), "\\%03o", ch);                           \
+             break;                                                    \
+           default:                                                    \
+             putc ('\\', (FILE));                                      \
+             putc (escape, (FILE));                                    \
+             break;                                                    \
+           }                                                           \
+        }                                                              \
+      fprintf ((FILE), "\"\n");                                                \
+  } while (0)
+
+/* Switch into a generic section.
+
+   We make the section read-only and executable for a function decl,
+   read-only for a const data decl, and writable for a non-const data decl.
+
+   If the section has already been defined, we must not
+   emit the attributes here. The SVR4 assembler does not
+   recognize section redefinitions.
+   If DECL is NULL, no attributes are emitted.  */
+
+#undef  ASM_OUTPUT_SECTION_NAME
+#define ASM_OUTPUT_SECTION_NAME(FILE, DECL, NAME, RELOC)               \
+  do {                                                                 \
+    static struct section_info                                         \
+      {                                                                        \
+       struct section_info *next;                                      \
+       char *name;                                                     \
+       enum sect_enum {SECT_RW, SECT_RO, SECT_EXEC} type;              \
+      } *sections;                                                     \
+    struct section_info *s;                                            \
+    char *mode;                                                                \
+    enum sect_enum type;                                               \
+                                                                       \
+    for (s = sections; s; s = s->next)                                 \
+      if (!strcmp (NAME, s->name))                                     \
+       break;                                                          \
+                                                                       \
+    if (DECL && TREE_CODE (DECL) == FUNCTION_DECL)                     \
+      type = SECT_EXEC, mode = "ax";                                   \
+    else if (DECL && DECL_READONLY_SECTION (DECL, RELOC))              \
+      type = SECT_RO, mode = "a";                                      \
+    else                                                               \
+      type = SECT_RW, mode = "aw";                                     \
+                                                                       \
+    if (s == 0)                                                                \
+      {                                                                        \
+       s = (struct section_info *) xmalloc (sizeof (struct section_info));  \
+       s->name = xmalloc ((strlen (NAME) + 1) * sizeof (*NAME));       \
+       strcpy (s->name, NAME);                                         \
+       s->type = type;                                                 \
+       s->next = sections;                                             \
+       sections = s;                                                   \
+       fprintf (FILE, ".section\t%s,\"%s\",@progbits\n", NAME, mode);  \
+      }                                                                        \
+    else                                                               \
+      {                                                                        \
+       if (DECL && s->type != type)                                    \
+         error_with_decl (DECL, "%s causes a section type conflict");  \
+                                                                       \
+       fprintf (FILE, ".section\t%s\n", NAME);                         \
+      }                                                                        \
+  } while (0)
+
+#undef  MAKE_DECL_ONE_ONLY
+#define MAKE_DECL_ONE_ONLY(DECL)       (DECL_WEAK (DECL) = 1)
+#undef  UNIQUE_SECTION_P
+#define UNIQUE_SECTION_P(DECL)         (DECL_ONE_ONLY (DECL))
+#undef  UNIQUE_SECTION
+#define UNIQUE_SECTION(DECL,RELOC)                                     \
+  do {                                                                 \
+    int len;                                                           \
+    char *name, *string, *prefix;                                      \
+                                                                       \
+    name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (DECL));            \
+                                                                       \
+    if (! DECL_ONE_ONLY (DECL))                                                \
+      {                                                                        \
+       prefix = ".";                                                   \
+       if (TREE_CODE (DECL) == FUNCTION_DECL)                          \
+         prefix = ".text.";                                            \
+       else if (DECL_READONLY_SECTION (DECL, RELOC))                   \
+         prefix = ".rodata.";                                          \
+       else                                                            \
+         prefix = ".data.";                                            \
+      }                                                                        \
+    else if (TREE_CODE (DECL) == FUNCTION_DECL)                                \
+      prefix = ".gnu.linkonce.t.";                                     \
+    else if (DECL_READONLY_SECTION (DECL, RELOC))                      \
+      prefix = ".gnu.linkonce.r.";                                     \
+    else                                                               \
+      prefix = ".gnu.linkonce.d.";                                     \
+                                                                       \
+    len = strlen (name) + strlen (prefix);                             \
+    string = alloca (len + 1);                                         \
+    sprintf (string, "%s%s", prefix, name);                            \
+                                                                       \
+    DECL_SECTION_NAME (DECL) = build_string (len, string);             \
+  } while (0)
+
+/* A C statement or statements to switch to the appropriate
+   section for output of DECL.  DECL is either a `VAR_DECL' node
+   or a constant of some sort.  RELOC indicates whether forming
+   the initial value of DECL requires link-time relocations.  */
+
+#undef  SELECT_SECTION
+#define SELECT_SECTION(DECL,RELOC)                                     \
+  {                                                                    \
+    if (flag_pic && RELOC)                                             \
+      data_section ();                                                 \
+    else if (TREE_CODE (DECL) == STRING_CST)                           \
+      {                                                                        \
+       if (! flag_writable_strings)                                    \
+         const_section ();                                             \
+       else                                                            \
+         data_section ();                                              \
+      }                                                                        \
+    else if (TREE_CODE (DECL) == VAR_DECL)                             \
+      {                                                                        \
+       if (! DECL_READONLY_SECTION (DECL, RELOC))                      \
+         data_section ();                                              \
+       else                                                            \
+         const_section ();                                             \
+      }                                                                        \
+    else                                                               \
+      const_section ();                                                        \
+  }
+
+/* A C statement (sans semicolon) to output an element in the table of
+   global constructors.  */
+#undef  ASM_OUTPUT_CONSTRUCTOR
+#define ASM_OUTPUT_CONSTRUCTOR(FILE, NAME)                             \
+  do {                                                                 \
+    if (TARGET_ELF)                                                    \
+      {                                                                        \
+       ctors_section ();                                               \
+       fprintf ((FILE), "%s ", INT_ASM_OP);                            \
+       assemble_name ((FILE), (NAME));                                 \
+       fprintf ((FILE), "\n");                                         \
+      }                                                                        \
+    else                                                               \
+      {                                                                        \
+       fprintf (asm_out_file, "%s \"%s__CTOR_LIST__\",22,0,0,",        \
+                ASM_STABS_OP, (TARGET_UNDERSCORES) ? "_" : "");        \
+       assemble_name (asm_out_file, name);                             \
+       fputc ('\n', asm_out_file);                                     \
+      }                                                                        \
+  } while (0)
+
+/* A C statement (sans semicolon) to output an element in the table of
+   global destructors.  */
+#undef  ASM_OUTPUT_DESTRUCTOR
+#define ASM_OUTPUT_DESTRUCTOR(FILE, NAME)                              \
+  do {                                                                 \
+    if (TARGET_ELF)                                                    \
+      {                                                                        \
+       dtors_section ();                                               \
+       fprintf ((FILE), "%s ", INT_ASM_OP);                            \
+       assemble_name ((FILE), (NAME));                                 \
+       fprintf ((FILE), "\n");                                         \
+      }                                                                        \
+    else                                                               \
+      {                                                                        \
+       fprintf (asm_out_file, "%s \"%s__DTOR_LIST__\",22,0,0,",        \
+                ASM_STABS_OP, (TARGET_UNDERSCORES) ? "_" : "");        \
+       assemble_name (asm_out_file, name);                             \
+       fputc ('\n', asm_out_file);                                     \
+      }                                                                        \
+  } while (0)
+
+/* Define macro used to output shift-double opcodes when the shift
+   count is in %cl.  Some assemblers require %cl as an argument;
+   some don't.
+
+   *OLD* GAS requires the %cl argument, so override i386/unix.h. */
+
+#undef  AS3_SHIFT_DOUBLE
+#define AS3_SHIFT_DOUBLE(a,b,c,d)      AS3 (a,b,c,d)
+
+
+/************************[  Debugger stuff  ]*********************************/
+
+/* The a.out tools do not support "Lscope" .stabs symbols. */
+#undef  NO_DBX_FUNCTION_END
+#define NO_DBX_FUNCTION_END    TARGET_AOUT
+
+/* In ELF, the function stabs come first, before the relative offsets.  */
+#undef  DBX_FUNCTION_FIRST
+#define DBX_CHECK_FUNCTION_FIRST TARGET_ELF
+
+/* Copy this from the svr4 specifications... */
+/* Define the register numbers to be used in Dwarf debugging information.
+   The SVR4 reference port C compiler uses the following register numbers
+   in its Dwarf output code:
+       0 for %eax (gnu regno = 0)
+       1 for %ecx (gnu regno = 2)
+       2 for %edx (gnu regno = 1)
+       3 for %ebx (gnu regno = 3)
+       4 for %esp (gnu regno = 7)
+       5 for %ebp (gnu regno = 6)
+       6 for %esi (gnu regno = 4)
+       7 for %edi (gnu regno = 5)
+   The following three DWARF register numbers are never generated by
+   the SVR4 C compiler or by the GNU compilers, but SDB on x86/svr4
+   believes these numbers have these meanings.
+       8  for %eip    (no gnu equivalent)
+       9  for %eflags (no gnu equivalent)
+       10 for %trapno (no gnu equivalent)
+   It is not at all clear how we should number the FP stack registers
+   for the x86 architecture.  If the version of SDB on x86/svr4 were
+   a bit less brain dead with respect to floating-point then we would
+   have a precedent to follow with respect to DWARF register numbers
+   for x86 FP registers, but the SDB on x86/svr4 is so completely
+   broken with respect to FP registers that it is hardly worth thinking
+   of it as something to strive for compatibility with.
+   The version of x86/svr4 SDB I have at the moment does (partially)
+   seem to believe that DWARF register number 11 is associated with
+   the x86 register %st(0), but that's about all.  Higher DWARF
+   register numbers don't seem to be associated with anything in
+   particular, and even for DWARF regno 11, SDB only seems to under-
+   stand that it should say that a variable lives in %st(0) (when
+   asked via an `=' command) if we said it was in DWARF regno 11,
+   but SDB still prints garbage when asked for the value of the
+   variable in question (via a `/' command).
+   (Also note that the labels SDB prints for various FP stack regs
+   when doing an `x' command are all wrong.)
+   Note that these problems generally don't affect the native SVR4
+   C compiler because it doesn't allow the use of -O with -g and
+   because when it is *not* optimizing, it allocates a memory
+   location for each floating-point variable, and the memory
+   location is what gets described in the DWARF AT_location
+   attribute for the variable in question.
+   Regardless of the severe mental illness of the x86/svr4 SDB, we
+   do something sensible here and we use the following DWARF
+   register numbers.  Note that these are all stack-top-relative
+   numbers.
+       11 for %st(0) (gnu regno = 8)
+       12 for %st(1) (gnu regno = 9)
+       13 for %st(2) (gnu regno = 10)
+       14 for %st(3) (gnu regno = 11)
+       15 for %st(4) (gnu regno = 12)
+       16 for %st(5) (gnu regno = 13)
+       17 for %st(6) (gnu regno = 14)
+       18 for %st(7) (gnu regno = 15)
+*/
+#undef  DWARF_DBX_REGISTER_NUMBER
+#define DWARF_DBX_REGISTER_NUMBER(n) \
+((n) == 0 ? 0 \
+ : (n) == 1 ? 2 \
+ : (n) == 2 ? 1 \
+ : (n) == 3 ? 3 \
+ : (n) == 4 ? 6 \
+ : (n) == 5 ? 7 \
+ : (n) == 6 ? 5 \
+ : (n) == 7 ? 4 \
+ : ((n) >= FIRST_STACK_REG && (n) <= LAST_STACK_REG) ? (n)+3 \
+ : (-1))
+
+/* Now what stabs expects in the register.  */
+#undef  STABS_DBX_REGISTER_NUMBER
+#define STABS_DBX_REGISTER_NUMBER(n) \
+((n) == 0 ? 0 : \
+ (n) == 1 ? 2 : \
+ (n) == 2 ? 1 : \
+ (n) == 3 ? 3 : \
+ (n) == 4 ? 6 : \
+ (n) == 5 ? 7 : \
+ (n) == 6 ? 4 : \
+ (n) == 7 ? 5 : \
+ (n) + 4)
+
+#undef  DBX_REGISTER_NUMBER
+#define DBX_REGISTER_NUMBER(n) ((write_symbols == DWARF2_DEBUG         \
+                                 || write_symbols == DWARF_DEBUG)      \
+                               ? DWARF_DBX_REGISTER_NUMBER(n)          \
+                               : STABS_DBX_REGISTER_NUMBER(n))
+
+/* tag end of file in elf mode */
+#undef  DBX_OUTPUT_MAIN_SOURCE_FILE_END
+#define DBX_OUTPUT_MAIN_SOURCE_FILE_END(FILE, FILENAME)                        \
+  do {                                                                 \
+    if (TARGET_ELF) {                                                  \
+      fprintf ((FILE), "\t.text\n\t.stabs \"\",%d,0,0,.Letext\n.Letext:\n", \
+               N_SO);                                                  \
+    }                                                                  \
+  } while (0)
+
+/* stabs-in-elf has offsets relative to function beginning */
+#undef  DBX_OUTPUT_LBRAC
+#define DBX_OUTPUT_LBRAC(FILE, NAME)                                   \
+  do {                                                                 \
+    fprintf (asmfile, "%s %d,0,0,", ASM_STABN_OP, N_LBRAC);            \
+    assemble_name (asmfile, buf);                                      \
+    if (TARGET_ELF)                                                    \
+      {                                                                        \
+        fputc ('-', asmfile);                                          \
+        assemble_name (asmfile,                                                \
+                XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0)); \
+      }                                                                        \
+    fprintf (asmfile, "\n");                                           \
+  } while (0)
+
+#undef  DBX_OUTPUT_RBRAC
+#define DBX_OUTPUT_RBRAC(FILE, NAME)                                   \
+  do {                                                                 \
+    fprintf (asmfile, "%s %d,0,0,", ASM_STABN_OP, N_RBRAC);            \
+    assemble_name (asmfile, buf);                                      \
+    if (TARGET_ELF)                                                    \
+      {                                                                        \
+        fputc ('-', asmfile);                                          \
+        assemble_name (asmfile,                                                \
+                XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0)); \
+      }                                                                        \
+    fprintf (asmfile, "\n");                                           \
+  } while (0)
diff --git a/contrib/gcc/config/i386/dragonfly.h.fixed b/contrib/gcc/config/i386/dragonfly.h.fixed
new file mode 100644 (file)
index 0000000..6a9b10c
--- /dev/null
@@ -0,0 +1,801 @@
+/* Definitions for Intel 386 running FreeBSD with either a.out or ELF format
+   Copyright (C) 1996-2000 Free Software Foundation, Inc.
+   Contributed by Eric Youngdale.
+   Modified for stabs-in-ELF by H.J. Lu.
+   Adapted from GNU/Linux version by John Polstra.
+   Added support for generating "old a.out gas" on the fly by Peter Wemm.
+   Continued development 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.  */
+
+/* $FreeBSD: src/contrib/gcc/config/i386/freebsd.h.fixed,v 1.34.2.3 2001/03/02 09:27:49 obrien Exp $ */
+/* $DragonFly: src/contrib/gcc/config/i386/Attic/dragonfly.h.fixed,v 1.1 2003/11/19 00:51:32 dillon Exp $ */
+
+#undef  CPP_PREDEFINES
+#define CPP_PREDEFINES                                                         \
+  "-Di386 -Acpu(i386) -Amachine(i386)"                                 \
+  FBSD_CPP_PREDEFINES
+
+#undef  CC1_SPEC
+#define CC1_SPEC "\
+  %{gline:%{!g:%{!g0:%{!g1:%{!g2: -g1}}}}} \
+  %{maout: %{!mno-underscores: %{!munderscores: -munderscores }}}"
+
+#undef  ASM_SPEC
+#define ASM_SPEC       "%{v*: -v} %{maout: %{fpic:-k} %{fPIC:-k}}"
+
+#undef  ASM_FINAL_SPEC 
+#define ASM_FINAL_SPEC "%|"
+
+/* Provide a LINK_SPEC appropriate for FreeBSD.  Here we provide support
+   for the special GCC options -static and -shared, which allow us to
+   link things in one of these three modes by applying the appropriate
+   combinations of options at link-time. We like to support here for
+   as many of the other GNU linker options as possible. But I don't
+   have the time to search for those flags. I am sure how to add
+   support for -soname shared_object_name. H.J.
+
+   I took out %{v:%{!V:-V}}. It is too much :-(. They can use
+   -Wl,-V.
+
+   When the -shared link option is used a final link is not being
+   done.  */
+
+#undef LINK_SPEC
+#define LINK_SPEC "\
+ %{p:%e`-p' not supported; use `-pg' and gprof(1)} \
+  %{maout: %{shared:-Bshareable} \
+    %{!shared:%{!nostdlib:%{!r:%{!e*:-e start}}} -dc -dp %{static:-Bstatic} \
+      %{pg:-Bstatic} %{Z}} \
+    %{assert*} %{R*}} \
+  %{!maout: \
+    -m elf_i386 \
+    %{Wl,*:%*} \
+    %{assert*} %{R*} %{rpath*} %{defsym*} \
+    %{shared:-Bshareable %{h*} %{soname*}} \
+    %{symbolic:-Bsymbolic} \
+    %{!shared: \
+      %{!static: \
+       %{rdynamic: -export-dynamic} \
+       %{!dynamic-linker: -dynamic-linker /usr/libexec/ld-elf.so.1}} \
+      %{static:-Bstatic}}}"
+
+#undef STARTFILE_SPEC
+#define STARTFILE_SPEC "\
+  %{maout: %{shared:c++rt0.o%s} \
+    %{!shared: \
+      %{pg:gcrt0.o%s}%{!pg: \
+       %{static:scrt0.o%s} \
+       %{!static:crt0.o%s}}}} \
+  %{!maout: \
+    %{!shared: \
+      %{pg:gcrt1.o%s} \
+      %{!pg: \
+       %{p:gcrt1.o%s} \
+       %{!p:crt1.o%s}}} \
+    crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}"
+
+/* Provide an ENDFILE_SPEC appropriate for FreeBSD/i386.  Here we tack on our
+   own magical crtend.o file (compare w/crtstuff.c) which provides part of the
+   support for getting C++ file-scope static object constructed before
+   entering `main', followed by the normal "finalizer" file, `crtn.o'.  */
+
+#undef  ENDFILE_SPEC
+#define ENDFILE_SPEC "\
+  %{!maout: \
+    %{!shared:crtend.o%s} \
+    %{shared:crtendS.o%s} crtn.o%s}"
+
+
+/************************[  Target stuff  ]***********************************/
+
+/* Define the actual types of some ANSI-mandated types.  
+   Needs to agree with <machine/stdint.h>.  GCC defaults come from c-decl.c,
+   c-common.c, and config/<arch>/<arch>.h.  */
+
+#undef SIZE_TYPE
+#define SIZE_TYPE      "unsigned int"
+#undef PTRDIFF_TYPE
+#define PTRDIFF_TYPE   "int"
+
+/* This is the pseudo-op used to generate a 32-bit word of data with a
+   specific value in some section.  */
+
+#undef INT_ASM_OP
+#define INT_ASM_OP     ".long"
+
+/* Biggest alignment supported by the object file format of this
+   machine.  Use this macro to limit the alignment which can be
+   specified using the `__attribute__ ((aligned (N)))' construct.  If
+   not defined, the default value is `BIGGEST_ALIGNMENT'.  */
+
+#define MAX_OFILE_ALIGNMENT (32768*8)
+
+#undef  TARGET_VERSION
+#define TARGET_VERSION fprintf (stderr, " (i386 DragonFly/ELF)");
+
+#define MASK_PROFILER_EPILOGUE 010000000000
+#define MASK_AOUT              004000000000    /* a.out not elf */
+#define MASK_UNDERSCORES       002000000000    /* use leading _ */
+
+#define TARGET_PROFILER_EPILOGUE       (target_flags & MASK_PROFILER_EPILOGUE)
+#define TARGET_AOUT                    (target_flags & MASK_AOUT)
+#define TARGET_ELF                     ((target_flags & MASK_AOUT) == 0)
+#define TARGET_UNDERSCORES             ((target_flags & MASK_UNDERSCORES) != 0)
+
+#undef SUBTARGET_SWITCHES
+#define SUBTARGET_SWITCHES                                             \
+  { "profiler-epilogue",        MASK_PROFILER_EPILOGUE, "Function profiler epilogue"}, \
+  { "no-profiler-epilogue",    -MASK_PROFILER_EPILOGUE, "No function profiler epilogue"}, \
+  { "aout",                     MASK_AOUT, "Generate an a.out (vs. ELF) binary"}, \
+  { "no-aout",                 -MASK_AOUT, "Do not generate an a.out binary"}, \
+  { "underscores",              MASK_UNDERSCORES, "Add leading underscores to symbols"}, \
+  { "no-underscores",          -MASK_UNDERSCORES, "Do not add leading underscores to symbols"},
+
+/* This goes away when the math emulator is fixed.  */
+#undef  TARGET_DEFAULT
+#define TARGET_DEFAULT \
+  (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS | MASK_NO_FANCY_MATH_387)
+
+/* Prefix for internally generated assembler labels.  If we aren't using 
+   underscores, we are using prefix `.'s to identify labels that should  
+   be ignored, as in `i386/gas.h' --karl@cs.umb.edu  */                 
+#undef  LPREFIX
+#define LPREFIX ((TARGET_UNDERSCORES) ? "L" : ".L")
+
+/* The a.out tools do not support "linkonce" sections. */
+#undef  SUPPORTS_ONE_ONLY
+#define SUPPORTS_ONE_ONLY      TARGET_ELF
+
+/* Enable alias attribute support.  */
+#undef  SET_ASM_OP
+#define SET_ASM_OP             ".set"
+
+/* The a.out tools do not support "Lscope" .stabs symbols. */
+#undef  NO_DBX_FUNCTION_END
+#define NO_DBX_FUNCTION_END    TARGET_AOUT
+
+/* In ELF, the function stabs come first, before the relative offsets.  */
+#undef  DBX_FUNCTION_FIRST
+#define DBX_CHECK_FUNCTION_FIRST TARGET_ELF
+
+/* supply our own hook for calling __main() from main() */
+#undef  INVOKE__main
+#define INVOKE__main
+#undef  GEN_CALL__MAIN
+#define GEN_CALL__MAIN                                                 \
+  do {                                                                 \
+    if (!(TARGET_ELF))                                                 \
+      emit_library_call (gen_rtx (SYMBOL_REF, Pmode, NAME__MAIN), 0,   \
+                        VOIDmode, 0);                                  \
+  } while (0)
+
+/* Indicate that jump tables go in the text section.  This is
+   necessary when compiling PIC code.  */
+#undef  JUMP_TABLES_IN_TEXT_SECTION
+#define JUMP_TABLES_IN_TEXT_SECTION    (flag_pic)
+
+/* override the exception table positioning */
+#undef  EXCEPTION_SECTION
+#define EXCEPTION_SECTION() \
+  do {                                                                 \
+    if (TARGET_ELF)                                                    \
+      {                                                                        \
+       named_section (NULL_TREE, ".gcc_except_table", 0);              \
+      }                                                                        \
+    else                                                               \
+      {                                                                        \
+       if (flag_pic)                                                   \
+         data_section ();                                              \
+       else                                                            \
+         readonly_data_section ();                                     \
+      }                                                                        \
+  } while (0);
+
+/* Tell final.c that we don't need a label passed to mcount.  */
+#undef  NO_PROFILE_COUNTERS
+#define NO_PROFILE_COUNTERS
+
+/* Output assembler code to FILE to begin profiling of the current function.
+   LABELNO is an optional label.  */
+
+#undef  FUNCTION_PROFILER
+#define FUNCTION_PROFILER(FILE, LABELNO)  \
+  do {                                                                 \
+    char *_name = TARGET_AOUT ? "mcount" : ".mcount";                  \
+    if (flag_pic)                                                      \
+      fprintf ((FILE), "\tcall *%s@GOT(%%ebx)\n", _name);              \
+    else                                                               \
+      fprintf ((FILE), "\tcall %s\n", _name);                          \
+  } while (0)
+
+/* Output assembler code to FILE to end profiling of the current function.  */
+
+#undef  FUNCTION_PROFILER_EPILOGUE
+#define FUNCTION_PROFILER_EPILOGUE(FILE, DO_RTL)                       \
+  do {                                                                 \
+    if (TARGET_PROFILER_EPILOGUE)                                      \
+      {                                                                        \
+       if (DO_RTL)                                                     \
+         {                                                             \
+         /* ".mexitcount" is specially handled in                      \
+            ASM_HACK_SYMBOLREF () so that we don't need to handle      \
+            flag_pic or TARGET_AOUT here.  */                          \
+           rtx xop;                                                    \
+           xop = gen_rtx_MEM (FUNCTION_MODE,                           \
+                           gen_rtx_SYMBOL_REF (Pmode, ".mexitcount")); \
+           emit_call_insn (gen_rtx (CALL, VOIDmode, xop, const0_rtx)); \
+         }                                                             \
+       else                                                            \
+         {                                                             \
+         /* XXX this !DO_RTL case is broken but not actually used.  */ \
+           char *_name = TARGET_AOUT ? "mcount" : ".mcount";           \
+           if (flag_pic)                                               \
+             fprintf (FILE, "\tcall *%s@GOT(%%ebx)\n", _name);         \
+           else                                                        \
+             fprintf (FILE, "\tcall %s\n", _name);                     \
+         }                                                             \
+      }                                                                        \
+  } while (0)
+
+
+/************************[  Assembler stuff  ]********************************/
+
+#undef  ASM_APP_ON
+#define ASM_APP_ON     "#APP\n"
+
+#undef  ASM_APP_OFF
+#define ASM_APP_OFF    "#NO_APP\n" 
+
+/* This is how to begin an assembly language file.
+   The .file command should always begin the output.
+   ELF also needs a .version.  */
+
+#undef  ASM_FILE_START
+#define ASM_FILE_START(FILE)                                           \
+  do {                                                                 \
+    output_file_directive ((FILE), main_input_filename);               \
+    if (TARGET_ELF)                                                    \
+      fprintf ((FILE), "\t.version\t\"01.01\"\n");                     \
+  } while (0)
+
+/* This is how to store into the string BUF
+   the symbol_ref name of an internal numbered label where      
+   PREFIX is the class of label and NUM is the number within the class.  
+   This is suitable for output with `assemble_name'.  */
+#undef ASM_GENERATE_INTERNAL_LABEL
+#define ASM_GENERATE_INTERNAL_LABEL(BUF, PREFIX, NUMBER)               \
+  sprintf ((BUF), "*%s%s%d", (TARGET_UNDERSCORES) ? "" : ".",          \
+          (PREFIX), (NUMBER))
+
+/* This is how to output an internal numbered label where
+   PREFIX is the class of label and NUM is the number within the class.
+   For most svr4/ELF systems, the convention is that any symbol which begins
+   with a period is not put into the linker symbol table by the assembler.  */
+#undef ASM_OUTPUT_INTERNAL_LABEL
+#define        ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM)                      \
+  fprintf ((FILE), "%s%s%d:\n", (TARGET_UNDERSCORES) ? "" : ".",       \
+          (PREFIX), (NUM))
+
+/* This is how to output a reference to a user-level label named NAME.  */
+#undef  ASM_OUTPUT_LABELREF
+#define ASM_OUTPUT_LABELREF(FILE, NAME)                                        \
+  do {                                                                 \
+    char *_name = (NAME);                                              \
+    /* Hack to avoid writing lots of rtl in                            \
+       FUNCTION_PROFILER_EPILOGUE ().  */                              \
+    if (*_name == '.' && strcmp(_name + 1, "mexitcount") == 0)         \
+      {                                                                        \
+       if (TARGET_AOUT)                                                \
+         _name++;                                                      \
+       if (flag_pic)                                                   \
+         fprintf ((FILE), "*%s@GOT(%%ebx)", _name);                    \
+       else                                                            \
+         fprintf ((FILE), "%s", _name);                                \
+      }                                                                        \
+    else                                                               \
+      fprintf (FILE, "%s%s", TARGET_UNDERSCORES ? "_" : "", _name);    \
+} while (0)
+
+/* This is how to hack on the symbol code of certain relcalcitrant
+   symbols to modify their output in output_pic_addr_const ().  */
+
+#undef  ASM_HACK_SYMBOLREF_CODE
+#define ASM_HACK_SYMBOLREF_CODE(NAME, CODE)                            \
+  do {                                                                 \
+    /* Part of hack to avoid writing lots of rtl in                    \
+       FUNCTION_PROFILER_EPILOGUE ().  */                              \
+    char *_name = (NAME);                                              \
+    if (*_name == '.' && strcmp(_name + 1, "mexitcount") == 0)         \
+      (CODE) = 'X';                                                    \
+  } while (0)
+
+/* This is how to output an element of a case-vector that is relative.
+   This is only used for PIC code.  See comments by the `casesi' insn in
+   i386.md for an explanation of the expression this outputs. */
+#undef  ASM_OUTPUT_ADDR_DIFF_ELT
+#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL)               \
+  fprintf ((FILE), "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, (VALUE))
+
+#undef  ASM_OUTPUT_ALIGN
+#define ASM_OUTPUT_ALIGN(FILE, LOG)                                    \
+  if ((LOG)!=0) {                                                      \
+    if (in_text_section())                                             \
+      fprintf ((FILE), "\t.p2align %d,0x90\n", (LOG));                 \
+    else                                                               \
+      fprintf ((FILE), "\t.p2align %d\n", (LOG));                      \
+  }
+
+#undef  ASM_OUTPUT_ALIGNED_COMMON
+#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN)             \
+  do {                                                                 \
+    if (TARGET_ELF)                                                    \
+      {                                                                        \
+       fprintf ((FILE), "%s", COMMON_ASM_OP);                          \
+       assemble_name ((FILE), (NAME));                                 \
+       fprintf ((FILE), ",%u,%u\n", (SIZE), (ALIGN) / BITS_PER_UNIT);  \
+      }                                                                        \
+    else                                                               \
+      {                                                                        \
+       int rounded = (SIZE);                                           \
+       if (rounded == 0) rounded = 1;                                  \
+       rounded += (BIGGEST_ALIGNMENT / BITS_PER_UNIT) - 1;             \
+       rounded = (rounded / (BIGGEST_ALIGNMENT / BITS_PER_UNIT)        \
+                  * (BIGGEST_ALIGNMENT / BITS_PER_UNIT));              \
+       fprintf ((FILE), "%s ", COMMON_ASM_OP);                         \
+       assemble_name ((FILE), (NAME));                                 \
+       fprintf ((FILE), ",%u\n", (rounded));                           \
+      }                                                                        \
+  } while (0)
+
+/* This says how to output assembler code to declare an
+   uninitialized internal linkage data object.  Under SVR4,
+   the linker seems to want the alignment of data objects
+   to depend on their types.  We do exactly that here.  */
+
+#undef  ASM_OUTPUT_ALIGNED_LOCAL
+#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN)              \
+  do {                                                                 \
+    if (TARGET_ELF)                                                    \
+      {                                                                        \
+       fprintf ((FILE), "%s", LOCAL_ASM_OP);                           \
+       assemble_name ((FILE), (NAME));                                 \
+       fprintf ((FILE), "\n");                                         \
+       ASM_OUTPUT_ALIGNED_COMMON ((FILE), (NAME), (SIZE), (ALIGN));    \
+      }                                                                        \
+    else                                                               \
+      {                                                                        \
+       int rounded = (SIZE);                                           \
+       if (rounded == 0) rounded = 1;                                  \
+       rounded += (BIGGEST_ALIGNMENT / BITS_PER_UNIT) - 1;             \
+       rounded = (rounded / (BIGGEST_ALIGNMENT / BITS_PER_UNIT)        \
+                  * (BIGGEST_ALIGNMENT / BITS_PER_UNIT));              \
+       fputs ("\t.lcomm\t", (FILE));                                   \
+       assemble_name ((FILE), (NAME));                                 \
+       fprintf ((FILE), ",%u\n", (rounded));                           \
+      }                                                                        \
+  } while (0)
+
+/* How to output some space.  The rules are different depending on the
+   object format.  */
+#undef  ASM_OUTPUT_SKIP
+#define ASM_OUTPUT_SKIP(FILE, SIZE)                                    \
+  do {                                                                 \
+    if (TARGET_ELF)                                                    \
+      {                                                                        \
+        fprintf ((FILE), "%s%u\n", SKIP_ASM_OP, (SIZE));               \
+      }                                                                        \
+    else                                                               \
+      {                                                                        \
+        fprintf ((FILE), "\t.space\t%u\n", (SIZE));                    \
+      }                                                                        \
+  } while (0)
+
+
+#undef  ASM_OUTPUT_SOURCE_LINE
+#define ASM_OUTPUT_SOURCE_LINE(FILE, LINE)                             \
+  do {                                                                 \
+    static int sym_lineno = 1;                                         \
+    if (TARGET_ELF)                                                    \
+      {                                                                        \
+       fprintf ((FILE), ".stabn 68,0,%d,.LM%d-", (LINE), sym_lineno);  \
+       assemble_name ((FILE),                                          \
+               XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0));  \
+       fprintf ((FILE), "\n.LM%d:\n", sym_lineno);                     \
+       sym_lineno += 1;                                                \
+      }                                                                        \
+    else                                                               \
+      {                                                                        \
+       fprintf ((FILE), "\t%s %d,0,%d\n", ASM_STABD_OP, N_SLINE,       \
+               lineno);                                                \
+      }                                                                        \
+  } while (0)
+
+/* These macros generate the special .type and .size directives which
+   are used to set the corresponding fields of the linker symbol table
+   entries in an ELF object file under SVR4.  These macros also output
+   the starting labels for the relevant functions/objects.  */
+
+/* Write the extra assembler code needed to declare a function properly.
+   Some svr4 assemblers need to also have something extra said about the
+   function's return value.  We allow for that here.  */
+
+#undef  ASM_DECLARE_FUNCTION_NAME
+#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL)                    \
+  do {                                                                 \
+    fprintf (FILE, "\t%s\t ", TYPE_ASM_OP);                            \
+    assemble_name (FILE, NAME);                                                \
+    putc (',', FILE);                                                  \
+    fprintf (FILE, TYPE_OPERAND_FMT, "function");                      \
+    putc ('\n', FILE);                                                 \
+    ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL));                     \
+    ASM_OUTPUT_LABEL(FILE, NAME);                                      \
+  } while (0)
+
+/* This is how to declare the size of a function.  */
+
+#undef  ASM_DECLARE_FUNCTION_SIZE
+#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL)                   \
+  do {                                                                 \
+    if (!flag_inhibit_size_directive)                                  \
+      {                                                                        \
+        char label[256];                                               \
+       static int labelno;                                             \
+       labelno++;                                                      \
+       ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno);            \
+       ASM_OUTPUT_INTERNAL_LABEL (FILE, "Lfe", labelno);               \
+       fprintf (FILE, "\t%s\t ", SIZE_ASM_OP);                         \
+       assemble_name (FILE, (FNAME));                                  \
+        fprintf (FILE, ",");                                           \
+       assemble_name (FILE, label);                                    \
+        fprintf (FILE, "-");                                           \
+       assemble_name (FILE, (FNAME));                                  \
+       putc ('\n', FILE);                                              \
+      }                                                                        \
+  } while (0)
+
+
+/* The routine used to output NUL terminated strings.  We use a special
+   version of this for most svr4 targets because doing so makes the
+   generated assembly code more compact (and thus faster to assemble)
+   as well as more readable, especially for targets like the i386
+   (where the only alternative is to output character sequences as
+   comma separated lists of numbers).   */
+
+#undef  ASM_OUTPUT_LIMITED_STRING
+#define ASM_OUTPUT_LIMITED_STRING(FILE, STR)                           \
+  do {                                                                 \
+      register unsigned char *_limited_str = (unsigned char *) (STR);  \
+      register unsigned ch;                                            \
+      fprintf ((FILE), "\t%s\t\"", STRING_ASM_OP);                     \
+      for (; (ch = *_limited_str); _limited_str++)                     \
+        {                                                              \
+         register int escape;                                          \
+         switch (escape = ESCAPES[ch])                                 \
+           {                                                           \
+           case 0:                                                     \
+             putc (ch, (FILE));                                        \
+             break;                                                    \
+           case 1:                                                     \
+             fprintf ((FILE), "\\%03o", ch);                           \
+             break;                                                    \
+           default:                                                    \
+             putc ('\\', (FILE));                                      \
+             putc (escape, (FILE));                                    \
+             break;                                                    \
+           }                                                           \
+        }                                                              \
+      fprintf ((FILE), "\"\n");                                                \
+  } while (0)
+
+/* Switch into a generic section.
+   We make the section read-only and executable for a function decl,
+   read-only for a const data decl, and writable for a non-const data decl.
+   If the section has already been defined, we must not
+   emit the attributes here. The SVR4 assembler does not
+   recognize section redefinitions.
+   If DECL is NULL, no attributes are emitted.  */
+
+#undef  ASM_OUTPUT_SECTION_NAME
+#define ASM_OUTPUT_SECTION_NAME(FILE, DECL, NAME, RELOC)               \
+  do {                                                                 \
+    static struct section_info                                         \
+      {                                                                        \
+       struct section_info *next;                                      \
+       char *name;                                                     \
+       enum sect_enum {SECT_RW, SECT_RO, SECT_EXEC} type;              \
+      } *sections;                                                     \
+    struct section_info *s;                                            \
+    char *mode;                                                                \
+    enum sect_enum type;                                               \
+                                                                       \
+    for (s = sections; s; s = s->next)                                 \
+      if (!strcmp (NAME, s->name))                                     \
+       break;                                                          \
+                                                                       \
+    if (DECL && TREE_CODE (DECL) == FUNCTION_DECL)                     \
+      type = SECT_EXEC, mode = "ax";                                   \
+    else if (DECL && DECL_READONLY_SECTION (DECL, RELOC))              \
+      type = SECT_RO, mode = "a";                                      \
+    else                                                               \
+      type = SECT_RW, mode = "aw";                                     \
+                                                                       \
+    if (s == 0)                                                                \
+      {                                                                        \
+       s = (struct section_info *) xmalloc (sizeof (struct section_info));  \
+       s->name = xmalloc ((strlen (NAME) + 1) * sizeof (*NAME));       \
+       strcpy (s->name, NAME);                                         \
+       s->type = type;                                                 \
+       s->next = sections;                                             \
+       sections = s;                                                   \
+       fprintf (FILE, ".section\t%s,\"%s\",@progbits\n", NAME, mode);  \
+      }                                                                        \
+    else                                                               \
+      {                                                                        \
+       if (DECL && s->type != type)                                    \
+         error_with_decl (DECL, "%s causes a section type conflict");  \
+                                                                       \
+       fprintf (FILE, ".section\t%s\n", NAME);                         \
+      }                                                                        \
+  } while (0)
+
+#undef  MAKE_DECL_ONE_ONLY
+#define MAKE_DECL_ONE_ONLY(DECL)       (DECL_WEAK (DECL) = 1)
+#undef  UNIQUE_SECTION_P
+#define UNIQUE_SECTION_P(DECL)         (DECL_ONE_ONLY (DECL))
+#undef  UNIQUE_SECTION
+#define UNIQUE_SECTION(DECL,RELOC)                                     \
+  do {                                                                 \
+    int len;                                                           \
+    char *name, *string, *prefix;                                      \
+                                                                       \
+    name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (DECL));            \
+                                                                       \
+    if (! DECL_ONE_ONLY (DECL))                                                \
+      {                                                                        \
+       prefix = ".";                                                   \
+       if (TREE_CODE (DECL) == FUNCTION_DECL)                          \
+         prefix = ".text.";                                            \
+       else if (DECL_READONLY_SECTION (DECL, RELOC))                   \
+         prefix = ".rodata.";                                          \
+       else                                                            \
+         prefix = ".data.";                                            \
+      }                                                                        \
+    else if (TREE_CODE (DECL) == FUNCTION_DECL)                                \
+      prefix = ".gnu.linkonce.t.";                                     \
+    else if (DECL_READONLY_SECTION (DECL, RELOC))                      \
+      prefix = ".gnu.linkonce.r.";                                     \
+    else                                                               \
+      prefix = ".gnu.linkonce.d.";                                     \
+                                                                       \
+    len = strlen (name) + strlen (prefix);                             \
+    string = alloca (len + 1);                                         \
+    sprintf (string, "%s%s", prefix, name);                            \
+                                                                       \
+    DECL_SECTION_NAME (DECL) = build_string (len, string);             \
+  } while (0)
+
+/* A C statement or statements to switch to the appropriate
+   section for output of DECL.  DECL is either a `VAR_DECL' node
+   or a constant of some sort.  RELOC indicates whether forming
+   the initial value of DECL requires link-time relocations.  */
+
+#undef  SELECT_SECTION
+#define SELECT_SECTION(DECL,RELOC)                                     \
+  {                                                                    \
+    if (flag_pic && RELOC)                                             \
+      data_section ();                                                 \
+    else if (TREE_CODE (DECL) == STRING_CST)                           \
+      {                                                                        \
+       if (! flag_writable_strings)                                    \
+         const_section ();                                             \
+       else                                                            \
+         data_section ();                                              \
+      }                                                                        \
+    else if (TREE_CODE (DECL) == VAR_DECL)                             \
+      {                                                                        \
+       if (! DECL_READONLY_SECTION (DECL, RELOC))                      \
+         data_section ();                                              \
+       else                                                            \
+         const_section ();                                             \
+      }                                                                        \
+    else                                                               \
+      const_section ();                                                        \
+  }
+
+/* A C statement (sans semicolon) to output an element in the table of
+   global constructors.  */
+#undef  ASM_OUTPUT_CONSTRUCTOR
+#define ASM_OUTPUT_CONSTRUCTOR(FILE, NAME)                             \
+  do {                                                                 \
+    if (TARGET_ELF)                                                    \
+      {                                                                        \
+       ctors_section ();                                               \
+       fprintf ((FILE), "%s ", INT_ASM_OP);                            \
+       assemble_name ((FILE), (NAME));                                 \
+       fprintf ((FILE), "\n");                                         \
+      }                                                                        \
+    else                                                               \
+      {                                                                        \
+       fprintf (asm_out_file, "%s \"%s__CTOR_LIST__\",22,0,0,",        \
+                ASM_STABS_OP, (TARGET_UNDERSCORES) ? "_" : "");        \
+       assemble_name (asm_out_file, name);                             \
+       fputc ('\n', asm_out_file);                                     \
+      }                                                                        \
+  } while (0)
+
+/* A C statement (sans semicolon) to output an element in the table of
+   global destructors.  */
+#undef  ASM_OUTPUT_DESTRUCTOR
+#define ASM_OUTPUT_DESTRUCTOR(FILE, NAME)                              \
+  do {                                                                 \
+    if (TARGET_ELF)                                                    \
+      {                                                                        \
+       dtors_section ();                                               \
+       fprintf ((FILE), "%s ", INT_ASM_OP);                            \
+       assemble_name ((FILE), (NAME));                                 \
+       fprintf ((FILE), "\n");                                         \
+      }                                                                        \
+    else                                                               \
+      {                                                                        \
+       fprintf (asm_out_file, "%s \"%s__DTOR_LIST__\",22,0,0,",        \
+                ASM_STABS_OP, (TARGET_UNDERSCORES) ? "_" : "");        \
+       assemble_name (asm_out_file, name);                             \
+       fputc ('\n', asm_out_file);                                     \
+      }                                                                        \
+  } while (0)
+
+/* Define macro used to output shift-double opcodes when the shift
+   count is in %cl.  Some assemblers require %cl as an argument;
+   some don't.
+
+   *OLD* GAS requires the %cl argument, so override i386/unix.h. */
+      
+#undef  AS3_SHIFT_DOUBLE
+#define AS3_SHIFT_DOUBLE(a,b,c,d)      AS3 (a,b,c,d)
+
+
+/************************[  Debugger stuff  ]*********************************/
+
+/* Copy this from the svr4 specifications... */
+/* Define the register numbers to be used in Dwarf debugging information.
+   The SVR4 reference port C compiler uses the following register numbers
+   in its Dwarf output code:
+       0 for %eax (gnu regno = 0)
+       1 for %ecx (gnu regno = 2)
+       2 for %edx (gnu regno = 1)
+       3 for %ebx (gnu regno = 3)
+       4 for %esp (gnu regno = 7)
+       5 for %ebp (gnu regno = 6)
+       6 for %esi (gnu regno = 4)
+       7 for %edi (gnu regno = 5)
+   The following three DWARF register numbers are never generated by
+   the SVR4 C compiler or by the GNU compilers, but SDB on x86/svr4
+   believes these numbers have these meanings.
+       8  for %eip    (no gnu equivalent)
+       9  for %eflags (no gnu equivalent)
+       10 for %trapno (no gnu equivalent)
+   It is not at all clear how we should number the FP stack registers
+   for the x86 architecture.  If the version of SDB on x86/svr4 were
+   a bit less brain dead with respect to floating-point then we would
+   have a precedent to follow with respect to DWARF register numbers
+   for x86 FP registers, but the SDB on x86/svr4 is so completely
+   broken with respect to FP registers that it is hardly worth thinking
+   of it as something to strive for compatibility with.
+   The version of x86/svr4 SDB I have at the moment does (partially)
+   seem to believe that DWARF register number 11 is associated with
+   the x86 register %st(0), but that's about all.  Higher DWARF
+   register numbers don't seem to be associated with anything in
+   particular, and even for DWARF regno 11, SDB only seems to under-
+   stand that it should say that a variable lives in %st(0) (when
+   asked via an `=' command) if we said it was in DWARF regno 11,
+   but SDB still prints garbage when asked for the value of the
+   variable in question (via a `/' command).
+   (Also note that the labels SDB prints for various FP stack regs
+   when doing an `x' command are all wrong.)
+   Note that these problems generally don't affect the native SVR4
+   C compiler because it doesn't allow the use of -O with -g and
+   because when it is *not* optimizing, it allocates a memory
+   location for each floating-point variable, and the memory
+   location is what gets described in the DWARF AT_location
+   attribute for the variable in question.
+   Regardless of the severe mental illness of the x86/svr4 SDB, we
+   do something sensible here and we use the following DWARF
+   register numbers.  Note that these are all stack-top-relative
+   numbers.
+       11 for %st(0) (gnu regno = 8)
+       12 for %st(1) (gnu regno = 9)
+       13 for %st(2) (gnu regno = 10)
+       14 for %st(3) (gnu regno = 11)
+       15 for %st(4) (gnu regno = 12)
+       16 for %st(5) (gnu regno = 13)
+       17 for %st(6) (gnu regno = 14)
+       18 for %st(7) (gnu regno = 15)
+*/
+#undef  DWARF_DBX_REGISTER_NUMBER
+#define DWARF_DBX_REGISTER_NUMBER(n) \
+((n) == 0 ? 0 \
+ : (n) == 1 ? 2 \
+ : (n) == 2 ? 1 \
+ : (n) == 3 ? 3 \
+ : (n) == 4 ? 6 \
+ : (n) == 5 ? 7 \
+ : (n) == 6 ? 5 \
+ : (n) == 7 ? 4 \
+ : ((n) >= FIRST_STACK_REG && (n) <= LAST_STACK_REG) ? (n)+3 \
+ : (-1))
+
+/* Now what stabs expects in the register.  */
+#undef  STABS_DBX_REGISTER_NUMBER
+#define STABS_DBX_REGISTER_NUMBER(n) \
+((n) == 0 ? 0 : \
+ (n) == 1 ? 2 : \
+ (n) == 2 ? 1 : \
+ (n) == 3 ? 3 : \
+ (n) == 4 ? 6 : \
+ (n) == 5 ? 7 : \
+ (n) == 6 ? 4 : \
+ (n) == 7 ? 5 : \
+ (n) + 4)
+
+#undef  DBX_REGISTER_NUMBER
+#define DBX_REGISTER_NUMBER(n) ((write_symbols == DWARF_DEBUG)         \
+                               ? DWARF_DBX_REGISTER_NUMBER(n)          \
+                               : STABS_DBX_REGISTER_NUMBER(n))
+
+/* tag end of file in elf mode */
+#undef  DBX_OUTPUT_MAIN_SOURCE_FILE_END
+#define DBX_OUTPUT_MAIN_SOURCE_FILE_END(FILE, FILENAME)                        \
+  do {                                                                 \
+    if (TARGET_ELF) {                                                  \
+      fprintf ((FILE), "\t.text\n\t.stabs \"\",%d,0,0,.Letext\n.Letext:\n", \
+               N_SO);                                                  \
+    }                                                                  \
+  } while (0)
+
+/* stabs-in-elf has offsets relative to function beginning */
+#undef  DBX_OUTPUT_LBRAC
+#define DBX_OUTPUT_LBRAC(FILE, NAME)                                   \
+  do {                                                                 \
+    fprintf (asmfile, "%s %d,0,0,", ASM_STABN_OP, N_LBRAC);            \
+    assemble_name (asmfile, buf);                                      \
+    if (TARGET_ELF)                                                    \
+      {                                                                        \
+        fputc ('-', asmfile);                                          \
+        assemble_name (asmfile,                                                \
+                XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0)); \
+      }                                                                        \
+    fprintf (asmfile, "\n");                                           \
+  } while (0)
+
+#undef  DBX_OUTPUT_RBRAC
+#define DBX_OUTPUT_RBRAC(FILE, NAME)                                   \
+  do {                                                                 \
+    fprintf (asmfile, "%s %d,0,0,", ASM_STABN_OP, N_RBRAC);            \
+    assemble_name (asmfile, buf);                                      \
+    if (TARGET_ELF)                                                    \
+      {                                                                        \
+        fputc ('-', asmfile);                                          \
+        assemble_name (asmfile,                                                \
+                XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0)); \
+      }                                                                        \
+    fprintf (asmfile, "\n");                                           \
+  } while (0)
diff --git a/contrib/gcc/config/i386/xm-dragonfly.h b/contrib/gcc/config/i386/xm-dragonfly.h
new file mode 100644 (file)
index 0000000..80ea18a
--- /dev/null
@@ -0,0 +1,5 @@
+/* Configuration for GCC for Intel i386 running FreeBSD as host.  */
+/* $DragonFly: src/contrib/gcc/config/i386/Attic/xm-dragonfly.h,v 1.1 2003/11/19 00:51:32 dillon Exp $ */
+
+#include <i386/xm-i386.h>
+#include <xm-dragonfly.h>
diff --git a/contrib/gcc/config/t-dragonfly b/contrib/gcc/config/t-dragonfly
new file mode 100644 (file)
index 0000000..c12bd32
--- /dev/null
@@ -0,0 +1,5 @@
+# Don't run fixproto
+# $DragonFly: src/contrib/gcc/config/Attic/t-dragonfly,v 1.1 2003/11/19 00:51:31 dillon Exp $
+STMP_FIXPROTO =
+# Use only native include files
+USER_H = $(EXTRA_HEADERS) $(LANG_EXTRA_HEADERS)
diff --git a/contrib/gcc/config/xm-dragonfly.h b/contrib/gcc/config/xm-dragonfly.h
new file mode 100644 (file)
index 0000000..c13c9c5
--- /dev/null
@@ -0,0 +1,39 @@
+/* Configuration for GNU C-compiler for hosts running FreeBSD.
+   Copyright (C) 1994, 1995 Free Software Foundation, Inc.
+
+$DragonFly: src/contrib/gcc/config/Attic/xm-dragonfly.h,v 1.1 2003/11/19 00:51:32 dillon Exp $
+
+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.  */
+
+/* This file defines machine-independent things specific to a host
+   running FreeBSD.  This file should not be specified as $xm_file itself;
+   instead $xm_file should be CPU/xm-freebsd.h, which should include both
+   CPU/xm-CPU.h and this file xm-freebsd.h.  */
+
+#ifndef HAVE_ATEXIT
+#define HAVE_ATEXIT
+#endif
+
+/* Tell gcc and collect2 that FreeBSD targets support putenv(3).  */
+#define HAVE_PUTENV
+
+/* We have _sys_siglist, but the declaration in <signal.h> conflicts with
+   the declarations in collect2.c and mips-tfile.c, so disable the declarations
+   in those files.  */
+
+#define SYS_SIGLIST_DECLARED
index 47d74b0..7638059 100644 (file)
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 # $FreeBSD: src/contrib/gcc/configure,v 1.8.2.1 2001/04/10 19:23:03 obrien Exp $
-# $DragonFly: src/contrib/gcc/Attic/configure,v 1.2 2003/06/17 04:23:59 dillon Exp $
+# $DragonFly: src/contrib/gcc/Attic/configure,v 1.3 2003/11/19 00:51:31 dillon Exp $
 
 # Guess values for system-dependent variables and create Makefiles.
 # Generated automatically using autoconf version 2.13 
@@ -3584,6 +3584,16 @@ for machine in $build $host $target; do
                gnu_ld=yes
                stabs=yes
                ;;
+       *-dragonfly*)
+               tm_file="i386/i386.h i386/att.h svr4.h i386/dragonfly.h i386/perform.h"
+               # On FreeBSD, the headers are already ok, except for math.h.
+               fixincludes=fixinc.wrap
+               extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
+               tmake_file=t-dragonfly
+               gas=yes
+               gnu_ld=yes
+               stabs=yes
+               ;;
        i[34567]86-*-netbsd*)
                tm_file=i386/netbsd.h
                tmake_file=t-netbsd
index 55dcec7..bde1cfa 100644 (file)
@@ -2,6 +2,8 @@
 # Process this file with autoconf to generate a configuration script.
 
 # Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+#
+# $DragonFly: src/contrib/gcc/Attic/configure.in,v 1.2 2003/11/19 00:51:31 dillon Exp $
 
 #This file is part of GNU CC.
 
@@ -1164,12 +1166,28 @@ changequote([,])dnl
                gnu_ld=yes
                stabs=yes
                ;;
+changequote(,)dnl
+       i[34567]86-*-dragonflyelf*)
+changequote([,])dnl
+               tm_file="i386/i386.h i386/att.h svr4.h i386/dragonfly-elf.h i386/perform.h"
+               extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
+               tmake_file=t-dragonfly
+               gas=yes
+               gnu_ld=yes
+               stabs=yes
+               ;;
 changequote(,)dnl
        i[34567]86-*-freebsd*)
 changequote([,])dnl
                tm_file=i386/freebsd.h
                tmake_file=t-freebsd
                ;;
+changequote(,)dnl
+       i[34567]86-*-dragonfly*)
+changequote([,])dnl
+               tm_file=i386/dragonfly.h
+               tmake_file=t-dragonfly
+               ;;
 changequote(,)dnl
        i[34567]86-*-netbsd*)
 changequote([,])dnl
index 3263584..aa00499 100755 (executable)
@@ -20,6 +20,8 @@
 # distribute this file as part of a program that contains a
 # configuration script generated by Autoconf, you may include it under
 # the same distribution terms that you use for the rest of that program.
+#
+# $DragonFly: src/contrib/gdb/Attic/config.guess,v 1.2 2003/11/19 00:51:32 dillon Exp $
 
 # Written by Per Bothner <bothner@cygnus.com>.
 # The master version of this file is at the FSF in /home/gd/gnu/lib.
@@ -519,6 +521,9 @@ EOF
        fi
        echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
        exit 0 ;;
+    *:DragonFly:*:*)
+       echo ${UNAME_MACHINE}-unknown-dragonflyelf`echo${UNAME_RELEASE}|sed -e 's/[-_].*//'`
+       exit 0 ;;
     *:NetBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
        exit 0 ;;
index afd200a..33c5058 100755 (executable)
@@ -34,6 +34,7 @@
 # Only a few systems have been added to this list; please add others
 # (but try to keep the structure clean).
 #
+# $DragonFly: src/contrib/libgmp/Attic/config.guess,v 1.2 2003/11/19 00:51:33 dillon Exp $
 
 # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
 # (ghazi@noc.rutgers.edu 8/24/94.)
@@ -321,6 +322,9 @@ EOF
     *:FreeBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
        exit 0 ;;
+    *:DragonFly:*:*)
+       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+       exit 0 ;;
     *:NetBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
        exit 0 ;;
index ad5983e..46bf06b 100755 (executable)
@@ -2,6 +2,8 @@
 # Attempt to guess a canonical system name.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
 #
+# $DragonFly: src/contrib/libreadline/support/Attic/config.guess,v 1.2 2003/11/19 00:51:33 dillon Exp $
+#
 # This file 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 of the License, or
@@ -696,6 +698,9 @@ EOF
        fi
        echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-=(].*//'`
        exit 0 ;;
+    *:DragonFly:*:*)
+       echo ${UNAME_MACHINE}-unknown-dragonflyelf`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'`
+       exit 0 ;;
     *:NetBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
        exit 0 ;;
index b100dbe..8724b82 100755 (executable)
@@ -2,6 +2,8 @@
 # Attempt to guess a canonical system name.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
 #   Free Software Foundation, Inc.
+#
+# $DragonFly: src/contrib/ncurses/Attic/config.guess,v 1.2 2003/11/19 00:51:34 dillon Exp $
 
 version='2000-06-13'
 
@@ -663,6 +665,9 @@ EOF
     *:FreeBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
        exit 0 ;;
+    *:DragonFly:*:*)
+       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+       exit 0 ;;
     *:OpenBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
        exit 0 ;;
index c339a94..d93376c 100755 (executable)
@@ -2,6 +2,8 @@
 # Attempt to guess a canonical system name.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
 #   Free Software Foundation, Inc.
+#
+# $DragonFly: src/contrib/ntp/Attic/config.guess,v 1.2 2003/11/19 00:51:34 dillon Exp $
 
 timestamp='2001-06-29'
 
@@ -726,6 +728,9 @@ EOF
     *:FreeBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
        exit 0 ;;
+    *:DragonFly:*:*)
+       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+       exit 0 ;;
     *:OpenBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
        exit 0 ;;
index 4c314d9..d8a8dcb 100755 (executable)
@@ -2,6 +2,8 @@
 # Attempt to guess a canonical system name.
 #   Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
 #
+# $DragonFly: src/contrib/nvi/build/config.guess,v 1.2 2003/11/19 00:51:34 dillon Exp $
+#
 # This file 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 of the License, or
@@ -309,6 +311,9 @@ EOF
     *:FreeBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
        exit 0 ;;
+    *:DragonFly:*:*)
+       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+       exit 0 ;;
     *:NetBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
        exit 0 ;;
index ffcb643..c2ce7a3 100755 (executable)
@@ -2,6 +2,8 @@
 # Attempt to guess a canonical system name.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
 #   2000, 2001, 2002 Free Software Foundation, Inc.
+#
+# $DragonFly: src/contrib/tcsh/Attic/config.guess,v 1.2 2003/11/19 00:51:36 dillon Exp $
 
 timestamp='2002-07-09'
 
@@ -753,6 +755,21 @@ EOF
        rm -f $dummy.c && rmdir $tmpdir
        echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
        exit 0 ;;
+    *:DragonFly:*:*)
+       # Determine whether the default compiler uses glibc.
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #include <features.h>
+       #if __GLIBC__ >= 2
+       LIBC=gnu
+       #else
+       LIBC=
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+       rm -f $dummy.c && rmdir $tmpdir
+       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
+       exit 0 ;;
     i*:CYGWIN*:*)
        echo ${UNAME_MACHINE}-pc-cygwin
        exit 0 ;;
index d8c2470..56d72df 100755 (executable)
@@ -2,6 +2,8 @@
 # Attempt to guess a canonical system name.
 #   Copyright (C) 1992, 93, 94, 95, 1996 Free Software Foundation, Inc.
 #
+# $DragonFly: src/contrib/traceroute/Attic/config.guess,v 1.2 2003/11/19 00:51:36 dillon Exp $
+#
 # This file 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 of the License, or
@@ -319,6 +321,9 @@ EOF
     *:FreeBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
        exit 0 ;;
+    *:DragonFly:*:*)
+       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+       exit 0 ;;
     *:NetBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
        exit 0 ;;
index 29db6e6..ed69eb8 100644 (file)
@@ -1,5 +1,5 @@
 # $FreeBSD: src/gnu/lib/libgcc/Makefile,v 1.31.2.2 2002/06/20 23:13:29 obrien Exp $
-# $DragonFly: src/gnu/lib/libgcc/Attic/Makefile,v 1.2 2003/06/17 04:25:44 dillon Exp $
+# $DragonFly: src/gnu/lib/libgcc/Attic/Makefile,v 1.3 2003/11/19 00:51:36 dillon Exp $
 
 GCCDIR=        ${.CURDIR}/../../../contrib/gcc
 
@@ -90,7 +90,7 @@ OBJS= ${LIB1OBJS} ${LIB2OBJS} ${NEW1OBJS} ${NEW2OBJS}
 
 config.h:
        echo '#include <${MACHINE_ARCH}/xm-${MACHINE_ARCH}.h>'  > ${.TARGET}
-       echo '#include <xm-freebsd.h>'                          >> ${.TARGET}
+       echo '#include <xm-dragonfly.h>'                        >> ${.TARGET}
 
 tconfig.h:
        echo '#include "gansidecl.h"'                           > ${.TARGET}
@@ -102,8 +102,8 @@ tm.h:
 .if ${MACHINE_ARCH} == "i386"
        echo '#include "${MACHINE_ARCH}/att.h"'                 >> ${.TARGET}
 .endif
-       echo '#include <freebsd.h>'                             >> ${.TARGET}
-       echo '#include "${MACHINE_ARCH}/freebsd.h"'             >> ${.TARGET}
+       echo '#include <dragonfly.h>'                           >> ${.TARGET}
+       echo '#include "${MACHINE_ARCH}/dragonfly.h"'           >> ${.TARGET}
 .if ${MACHINE_ARCH} == "i386"
        echo '#include "${MACHINE_ARCH}/perform.h"'             >> ${.TARGET}
 .endif
index e25a272..555b423 100644 (file)
@@ -1,5 +1,5 @@
 /* $FreeBSD: src/gnu/usr.bin/binutils/gdb/alpha/version.c,v 1.1.4.1 2002/05/14 21:20:51 mp Exp $ */
-/* $DragonFly: src/gnu/usr.bin/binutils/gdb/alpha/Attic/version.c,v 1.2 2003/06/17 04:25:44 dillon Exp $ */
+/* $DragonFly: src/gnu/usr.bin/binutils/gdb/alpha/Attic/version.c,v 1.3 2003/11/19 00:51:37 dillon Exp $ */
 char *version = "4.18 (FreeBSD)";
-char *host_name = "alpha-unknown-freebsd";
-char *target_name = "alpha-unknown-freebsd";
+char *host_name = "alpha-unknown-dragonfly";
+char *target_name = "alpha-unknown-dragonfly";
index 4f771ea..9ac6ea0 100644 (file)
@@ -1,5 +1,5 @@
 /* $FreeBSD: src/gnu/usr.bin/binutils/gdb/i386/version.c,v 1.4.4.1 2002/05/14 21:20:51 mp Exp $ */
-/* $DragonFly: src/gnu/usr.bin/binutils/gdb/i386/Attic/version.c,v 1.2 2003/06/17 04:25:44 dillon Exp $ */
+/* $DragonFly: src/gnu/usr.bin/binutils/gdb/i386/Attic/version.c,v 1.3 2003/11/19 00:51:37 dillon Exp $ */
 char *version = "4.18 (FreeBSD)";
-char *host_name = "i386-unknown-freebsd";
-char *target_name = "i386-unknown-freebsd";
+char *host_name = "i386-unknown-dragonfly";
+char *target_name = "i386-unknown-dragonfly";
index c07a09a..cdbeb50 100644 (file)
@@ -1,7 +1,7 @@
 # $FreeBSD: src/gnu/usr.bin/binutils/ld/Makefile.alpha,v 1.7.2.5 2002/09/01 23:39:14 obrien Exp $
-# $DragonFly: src/gnu/usr.bin/binutils/ld/Attic/Makefile.alpha,v 1.2 2003/06/17 04:25:44 dillon Exp $
+# $DragonFly: src/gnu/usr.bin/binutils/ld/Attic/Makefile.alpha,v 1.3 2003/11/19 00:51:37 dillon Exp $
 
-TARGET_TUPLE?= alpha-unknown-freebsd
+TARGET_TUPLE?= alpha-unknown-dragonfly
 
 .if ${TARGET_ARCH} == "alpha"
 NATIVE_EMULATION=      elf64alpha
@@ -10,7 +10,7 @@ CFLAGS+= -DDEFAULT_EMULATION=\"${NATIVE_EMULATION}\"
 CFLAGS+= -DTARGET=\"${TARGET_TUPLE}\"
 _alpha_path=   \"${TOOLS_PREFIX}/usr/lib\"
 .else
-_alpha_path=   \"/usr/cross/alpha-freebsd/usr/lib\"
+_alpha_path=   \"/usr/cross/alpha-dragonfly/usr/lib\"
 .endif
 EMS+=          ${NATIVE_EMULATION}
 LDSCRIPTS+=    ${NATIVE_EMULATION}.x ${NATIVE_EMULATION}.xbn ${NATIVE_EMULATION}.xn ${NATIVE_EMULATION}.xr \
index ab8bb31..f7978ac 100644 (file)
@@ -1,7 +1,7 @@
 # $FreeBSD: src/gnu/usr.bin/binutils/ld/Makefile.i386,v 1.8.2.5 2002/09/01 23:39:14 obrien Exp $
-# $DragonFly: src/gnu/usr.bin/binutils/ld/Attic/Makefile.i386,v 1.2 2003/06/17 04:25:44 dillon Exp $
+# $DragonFly: src/gnu/usr.bin/binutils/ld/Attic/Makefile.i386,v 1.3 2003/11/19 00:51:37 dillon Exp $
 
-TARGET_TUPLE?= i386-unknown-freebsd
+TARGET_TUPLE?= i386-unknown-dragonfly
 
 .if ${TARGET_ARCH} == "i386"
 NATIVE_EMULATION=      elf_i386
@@ -10,7 +10,7 @@ CFLAGS+= -DDEFAULT_EMULATION=\"${NATIVE_EMULATION}\"
 CFLAGS+= -DTARGET=\"${TARGET_TUPLE}\"
 _i386_path=    \"${TOOLS_PREFIX}/usr/lib\"
 .else
-_i386_path=    \"/usr/cross/i386-freebsd/usr/lib\"
+_i386_path=    \"/usr/cross/i386-dragonfly/usr/lib\"
 .endif
 EMS+=          ${NATIVE_EMULATION}
 LDSCRIPTS+=    ${NATIVE_EMULATION}.x ${NATIVE_EMULATION}.xbn ${NATIVE_EMULATION}.xn ${NATIVE_EMULATION}.xr \
index a7d1cb2..a037a9d 100644 (file)
@@ -1,5 +1,5 @@
 # $FreeBSD: src/gnu/usr.bin/binutils/libbinutils/Makefile,v 1.8.2.5 2002/09/01 23:39:16 obrien Exp $
-# $DragonFly: src/gnu/usr.bin/binutils/libbinutils/Attic/Makefile,v 1.2 2003/06/17 04:25:44 dillon Exp $
+# $DragonFly: src/gnu/usr.bin/binutils/libbinutils/Attic/Makefile,v 1.3 2003/11/19 00:51:37 dillon Exp $
 
 .include "../Makefile.inc0"
 
@@ -10,7 +10,7 @@ SRCS+=        arlex.l arparse.y arsup.c bucomm.c debug.c filemode.c \
        ieee.c rdcoff.c rddbg.c rename.c stabs.c unwind-ia64.c \
        wrstabs.c version.c
 WARNS= 0
-CFLAGS+= -DTARGET=\"${TARGET_ARCH}-unknown-freebsd\"
+CFLAGS+= -DTARGET=\"${TARGET_ARCH}-unknown-dragonfly\"
 CFLAGS+= -DBFD_VERSION_STRING=\"${VERSION}\"
 CFLAGS+= -I${SRCDIR}/binutils
 CFLAGS+= -I${SRCDIR}/bfd
index 0d8c6b5..0616ee1 100644 (file)
@@ -1,6 +1,6 @@
 #
 # $FreeBSD: src/gnu/usr.bin/binutils/libbinutils/Makefile.alpha,v 1.2.2.2 2001/02/21 21:35:41 obrien Exp $
-# $DragonFly: src/gnu/usr.bin/binutils/libbinutils/Attic/Makefile.alpha,v 1.2 2003/06/17 04:25:44 dillon Exp $
+# $DragonFly: src/gnu/usr.bin/binutils/libbinutils/Attic/Makefile.alpha,v 1.3 2003/11/19 00:51:37 dillon Exp $
 #
 
-TARGET=                alpha-unknown-freebsd
+TARGET=                alpha-unknown-dragonfly
index d1eec47..fd451e3 100644 (file)
@@ -1,6 +1,6 @@
 #
 # $FreeBSD: src/gnu/usr.bin/binutils/libbinutils/Makefile.i386,v 1.2.2.2 2001/02/21 21:35:41 obrien Exp $
-# $DragonFly: src/gnu/usr.bin/binutils/libbinutils/Attic/Makefile.i386,v 1.2 2003/06/17 04:25:44 dillon Exp $
+# $DragonFly: src/gnu/usr.bin/binutils/libbinutils/Attic/Makefile.i386,v 1.3 2003/11/19 00:51:37 dillon Exp $
 #
 
-TARGET=                i386-unknown-freebsd
+TARGET=                i386-unknown-dragonfly
index 75ddf31..3d3c574 100644 (file)
@@ -1,6 +1,6 @@
 #
 # $FreeBSD: src/gnu/usr.bin/binutils/libbinutils/Makefile.mips,v 1.2.2.1 2000/07/06 22:16:08 obrien Exp $
-# $DragonFly: src/gnu/usr.bin/binutils/libbinutils/Attic/Makefile.mips,v 1.2 2003/06/17 04:25:45 dillon Exp $
+# $DragonFly: src/gnu/usr.bin/binutils/libbinutils/Attic/Makefile.mips,v 1.3 2003/11/19 00:51:37 dillon Exp $
 #
 
-TARGET=                ${MACHINE_ARCH}-unknown-freebsdelf
+TARGET=                ${MACHINE_ARCH}-unknown-dragonflyelf
index d727e4a..0c635fe 100644 (file)
@@ -1,5 +1,5 @@
 /* $FreeBSD: src/gnu/usr.bin/binutils/libbinutils/config.h,v 1.3.6.4 2002/09/01 23:39:16 obrien Exp $ */
-/* $DragonFly: src/gnu/usr.bin/binutils/libbinutils/Attic/config.h,v 1.2 2003/06/17 04:25:45 dillon Exp $ */
+/* $DragonFly: src/gnu/usr.bin/binutils/libbinutils/Attic/config.h,v 1.3 2003/11/19 00:51:37 dillon Exp $ */
 
 /* config.h.  Generated automatically by configure.  */
 /* config.in.  Generated automatically from configure.in by autoheader.  */
 /* #undef USE_BINARY_FOPEN */
 
 /* Configured target name. */
-/* #define TARGET "alpha-unknown-freebsd5.0" */
+/* #define TARGET "alpha-unknown-dragonfly5.0" */
 
index 972faf7..68ece73 100644 (file)
@@ -1,7 +1,7 @@
 #! /bin/sh
 #
 # $FreeBSD: src/gnu/usr.bin/binutils/update.sh,v 1.3.6.2 2002/09/01 23:39:12 obrien Exp $
-# $DragonFly: src/gnu/usr.bin/binutils/Attic/update.sh,v 1.2 2003/06/17 04:25:44 dillon Exp $
+# $DragonFly: src/gnu/usr.bin/binutils/Attic/update.sh,v 1.3 2003/11/19 00:51:37 dillon Exp $
 #
 # This script installs the main files generated by the binutils
 # "configure" scripts and makefiles.  It can be used for upgrading to
@@ -20,7 +20,7 @@ mkdir build
 echo "binutils elf configuration for $platform"
 
 (cd build
-    ${contribdir}/configure $platform-unknown-freebsd || exit
+    ${contribdir}/configure $platform-unknown-dragonfly || exit
     (cd gas
        echo "Updating as"
        make config.h || exit
index 873b91e..2e038b8 100644 (file)
@@ -1,5 +1,5 @@
 # $FreeBSD: src/gnu/usr.bin/cc/Makefile.inc,v 1.49.2.6 2002/11/15 18:18:38 ru Exp $
-# $DragonFly: src/gnu/usr.bin/cc/Attic/Makefile.inc,v 1.2 2003/06/17 04:25:45 dillon Exp $
+# $DragonFly: src/gnu/usr.bin/cc/Attic/Makefile.inc,v 1.3 2003/11/19 00:51:37 dillon Exp $
 
 .include "../Makefile.inc"
 
@@ -13,7 +13,7 @@ TARGET_ARCH?= ${MACHINE_ARCH}
 
 # Machine description.
 MD_FILE=       ${GCCDIR}/config/${TARGET_ARCH}/${TARGET_ARCH}.md
-target=                ${TARGET_ARCH}-unknown-freebsd
+target=                ${TARGET_ARCH}-unknown-dragonfly
 
 # These architectures are Cygnus's default for enabling Haifa.
 .if ${TARGET_ARCH} == "alpha"
index e19168c..3f5f021 100644 (file)
@@ -1,8 +1,9 @@
+/* $DragonFly: src/libexec/rtld-elf/i386/elf_rtld.x,v 1.2 2003/11/19 00:51:38 dillon Exp $ */
 OUTPUT_FORMAT("elf32-i386", "elf32-i386",
              "elf32-i386")
 OUTPUT_ARCH(i386)
 ENTRY(_start)
-SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/obj/usr/src/tmp/usr/i386-unknown-freebsdelf/lib);
+SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/obj/usr/src/tmp/usr/i386-unknown-dragonflyelf/lib);
 /* Do we need any of these for elf?
    __DYNAMIC = 0;    */
 SECTIONS
index b5bedea..9420126 100644 (file)
@@ -35,7 +35,7 @@
 .\" advised of the possibility of such damage.
 .\"
 .\" $FreeBSD: src/share/man/man4/vinum.4,v 1.22.2.9 2002/04/22 08:19:35 kuriyama Exp $
-.\" $DragonFly: src/share/man/man4/vinum.4,v 1.2 2003/06/17 04:36:59 dillon Exp $
+.\" $DragonFly: src/share/man/man4/vinum.4,v 1.3 2003/11/19 00:51:38 dillon Exp $
 .\"
 .Dd October 5, 1999
 .Dt vinum 4
@@ -881,7 +881,7 @@ command of
 .if t .ps -3
 .if t .vs -3
 .Bd -literal
-GDB 4.16 (i386-unknown-freebsd), Copyright 1996 Free Software Foundation, Inc.
+GDB 4.16 (i386-unknown-dragonfly), Copyright 1996 Free Software Foundation, Inc.
 Debugger (msg=0xf1093174 "vinum debug") at ../../i386/i386/db_interface.c:318
 318                 in_Debugger = 0;
 #1  0xf108d9bc in vinumioctl (dev=0x40001900, cmd=0xc008464b, data=0xf6dedee0 "",
index 32d8b7c..ae3b0d0 100644 (file)
@@ -1,7 +1,19 @@
-# $DragonFly: src/share/mk/Attic/bsd.dfport.mk,v 1.2 2003/09/09 16:49:31 dillon Exp $
+# $DragonFly: src/share/mk/Attic/bsd.dfport.mk,v 1.3 2003/11/19 00:51:24 dillon Exp $
 
 PORTSDIR?=     /usr/dfports
 
+# Temporary Hack
+#
+OSVERSION ?= 480102
+UNAME_s?= FreeBSD
+UNAME_v?=FreeBSD 4.8-CURRENT
+UNAME_r?=4.8-CURRENT
+
+.makeenv UNAME_s
+.makeenv UNAME_v
+.makeenv UNAME_r
+.makeenv OSVERSION
+
 .include <bsd.own.mk>
 .include "${PORTSDIR}/Mk/bsd.port.mk"
 
index 8ccdabc..9673cf7 100644 (file)
@@ -1,10 +1,22 @@
 # $FreeBSD: src/share/mk/bsd.port.mk,v 1.303.2.2 2002/07/17 19:08:23 ru Exp $
-# $DragonFly: src/share/mk/Attic/bsd.port.mk,v 1.6 2003/10/13 23:57:41 dillon Exp $
+# $DragonFly: src/share/mk/Attic/bsd.port.mk,v 1.7 2003/11/19 00:51:24 dillon Exp $
 
 PORTSDIR?=     /usr/ports
 DFPORTSDIR?=   /usr/dfports
 PORTPATH!=     /usr/bin/relpath ${PORTSDIR} ${.CURDIR}
 
+# Temporary Hack
+#
+OSVERSION ?= 480102
+UNAME_s?= FreeBSD
+UNAME_v?=FreeBSD 4.8-CURRENT
+UNAME_r?=4.8-CURRENT
+
+.makeenv UNAME_s
+.makeenv UNAME_v
+.makeenv UNAME_r
+.makeenv OSVERSION
+
 .if !exists(${DFPORTSDIR}/${PORTPATH}/Makefile) || defined(BEFOREPORTMK)
 # If the port does not exist in /usr/dfports/<portpath> use the original
 # FreeBSD port.  Also process as per normal if BEFOREPORTMK is set so
index 376fd03..cc011d6 100644 (file)
 #
 #      @(#)newvers.sh  8.1 (Berkeley) 4/20/94
 # $FreeBSD: src/sys/conf/newvers.sh,v 1.44.2.30 2003/04/04 07:02:46 murray Exp $
-# $DragonFly: src/sys/conf/newvers.sh,v 1.3 2003/10/24 17:19:14 dillon Exp $
+# $DragonFly: src/sys/conf/newvers.sh,v 1.4 2003/11/19 00:51:29 dillon Exp $
 
-TYPE="FreeBSD"
-REVISION="4.8"
-BRANCH="STABLE"
+TYPE="DragonFly"
+REVISION="1.0"
+BRANCH="CURRENT"
 RELEASE="${REVISION}-${BRANCH}"
 VERSION="${TYPE} ${RELEASE}"
 
 if [ "X${PARAMFILE}" != "X" ]; then
-       RELDATE=$(awk '/__FreeBSD_version.*propagated to newvers/ {print $3}' \
+       RELDATE=$(awk '/__DragonFly_version.*propagated to newvers/ {print $3}' \
                ${PARAMFILE})
 else
-       RELDATE=$(awk '/__FreeBSD_version.*propagated to newvers/ {print $3}' \
+       RELDATE=$(awk '/__DragonFly_version.*propagated to newvers/ {print $3}' \
                $(dirname $0)/../sys/param.h)
 fi
 
@@ -58,8 +58,8 @@ do
        if [ -r "$bsd_copyright" ]; then
                COPYRIGHT=`sed \
                    -e "s/\[year\]/$year/" \
-                   -e 's/\[your name here\]\.* /FreeBSD Inc./' \
-                   -e 's/\[your name\]\.*/FreeBSD Inc./' \
+                   -e 's/\[your name here\]\.* /DragonFly Inc./' \
+                   -e 's/\[your name\]\.*/DragonFly Inc./' \
                    -e '/\[id for your version control system, if any\]/d' \
                    $bsd_copyright` 
                break
@@ -70,7 +70,7 @@ done
 if [ X"$COPYRIGHT" = X ]; then
        COPYRIGHT="/*
  * Copyright (c) $year
- *     FreeBSD Inc. All rights reserved.
+ *     DragonFly Inc. All rights reserved.
  *
  */"
 fi
index d043df0..7f4bab3 100644 (file)
@@ -23,7 +23,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/sys/copyright.h,v 1.10.2.5 2003/01/07 04:28:55 imp Exp $
- * $DragonFly: src/sys/sys/copyright.h,v 1.2 2003/06/17 04:28:58 dillon Exp $
+ * $DragonFly: src/sys/sys/copyright.h,v 1.3 2003/11/19 00:51:29 dillon Exp $
  */
 
 
 #define COPYRIGHT_FreeBSD \
        "Copyright (c) 1992-2003 The FreeBSD Project.\n"
 
+/* DragonFly */
+#define COPYRIGHT_DragonFly \
+       "Copyright (c) 2003 The DragonFly Project.\n"
+
 /* Berkeley */
 #define COPYRIGHT_UCB \
        "Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994\n\tThe Regents of the University of California. All rights reserved.\n"
@@ -42,8 +46,8 @@
        "Copyright (c) 1994-2003 FreeBSD(98) porting team.\nCopyright (c) 1992  A.Kojima F.Ukai M.Ishii (KMC).\n"
 
 #if defined(PC98)
-char copyright[] = COPYRIGHT_FreeBSD/**/COPYRIGHT_PC98/**/COPYRIGHT_UCB;
+char copyright[] = COPYRIGHT_DragonFly/**/COPYRIGHT_FreeBSD/**/COPYRIGHT_PC98/**/COPYRIGHT_UCB;
 
 #else
-char copyright[] = COPYRIGHT_FreeBSD/**/COPYRIGHT_UCB;
+char copyright[] = COPYRIGHT_DragonFly/**/COPYRIGHT_FreeBSD/**/COPYRIGHT_UCB;
 #endif
index de1ac40..2693a98 100644 (file)
  *
  *     @(#)param.h     8.3 (Berkeley) 4/4/95
  * $FreeBSD: src/sys/sys/param.h,v 1.61.2.38 2003/05/22 17:12:01 fjoe Exp $
- * $DragonFly: src/sys/sys/param.h,v 1.9 2003/11/15 11:46:26 asmodai Exp $
+ * $DragonFly: src/sys/sys/param.h,v 1.10 2003/11/19 00:51:29 dillon Exp $
  */
 
 #ifndef _SYS_PARAM_H_
 #define _SYS_PARAM_H_
 
-#define        BSD     199506          /* System version (year & month). */
-#define BSD4_3 1
-#define BSD4_4 1
+#define        BSD     200307          /* XXX kern.osrevision */
+#define BSD4_3 1               /* XXX obsolete */
+#define BSD4_4 1               /* XXX obsolete */
 
-/* 
- * __FreeBSD_version numbers are documented in the Porter's Handbook.
- * If you bump the version for any reason, you should update the documentation
- * there.
- * Currently this lives here:
+/*
+ * __DragonFly_version number.   Note that the name and comment are pattern
+ * searched from conf/newvers.sh.
+ *
+ * Version changes should be documented in:
  *     doc/en_US.ISO8859-1/books/porters-handbook/book.sgml
  */
-#undef __FreeBSD_version
-#define __FreeBSD_version 480101       /* Master, propagated to newvers */
-
 #undef __DragonFly_version
-#define __DragonFly_version 100000
+#define __DragonFly_version 100000     /* Master, propagated to newvers */
+
+/* 
+ * __FreeBSD_version numbers for source compatibility.  This is temporary
+ * along with the __FreeBSD__ define in gcc.
+ */
+#undef __FreeBSD_version
+#define __FreeBSD_version 480101
 
 #ifndef NULL
 #define        NULL    0
index 5792b09..41e2041 100644 (file)
@@ -1,7 +1,7 @@
 /* config.h.  Generated automatically by configure.  */
 /* config.h.in.  Generated automatically from configure.in by autoheader.  */
 /* $FreeBSD: src/usr.sbin/ntp/config.h,v 1.4.2.1 2001/12/21 17:42:30 roberto Exp $ */
-/* $DragonFly: src/usr.sbin/ntp/Attic/config.h,v 1.3 2003/11/16 19:20:31 dillon Exp $ */
+/* $DragonFly: src/usr.sbin/ntp/Attic/config.h,v 1.4 2003/11/19 00:51:38 dillon Exp $ */
 /* debugging code */
 #define DEBUG 1
 
 
 /* canonical system (cpu-vendor-os) string */
 #ifdef __alpha__
-#define STR_SYSTEM "alpha-unknown-freebsd"
+#define STR_SYSTEM "alpha-unknown-dragonfly"
 #else
-#define STR_SYSTEM "i386-unknown-freebsd"
+#define STR_SYSTEM "i386-unknown-dragonfly"
 #endif
 
 /* define if NetInfo support is available */