Package: gcc-4.1 Version: 4.1.1-21 Severity: important Tags: patch Hi,
Please find attached a patch to make gcc-4.1 and gcj-4.1 buildable on GNU/kFreeBSD amd64. It also adds biarch support and java support for this architecture. The only missing part is gnat, I hope I will be able to bootstrap it in the next few weeks. Could you please include this patch in the next upload? Thanks in advance, Aurelien -- System Information: Debian Release: 4.0 APT prefers unstable APT policy: (500, 'unstable') Architecture: amd64 (x86_64) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.18-3-amd64 Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8) Versions of packages gcc-4.1 depends on: ii binutils 2.17-3 The GNU assembler, linker and bina ii cpp-4.1 4.1.1-21 The GNU C preprocessor ii gcc-4.1-base 4.1.1-21 The GNU Compiler Collection (base ii libc6 2.3.6.ds1-9 GNU C Library: Shared libraries ii libgcc1 1:4.1.1-21 GCC support library ii libssp0 4.1.1-21 GCC stack smashing protection libr Versions of packages gcc-4.1 recommends: ii libc6-dev 2.3.6.ds1-9 GNU C Library: Development Librari pn libmudflap0-dev <none> (no description available) -- no debconf information
diff -u gcc-4.1-4.1.1/debian/rules.conf gcc-4.1-4.1.1/debian/rules.conf --- gcc-4.1-4.1.1/debian/rules.conf +++ gcc-4.1-4.1.1/debian/rules.conf @@ -83,6 +83,10 @@ LIBC_BIARCH_DEP := libc6-powerpc$(LS) (>= $(libc_ver)) LIBC_BIARCH_DEV_DEP := libc6-dev-powerpc$(LS) (>= $(libc_ver)) endif + ifeq ($(DEB_TARGET_ARCH),kfreebsd-amd64) + LIBC_BIARCH_DEV_DEP := libc0.1-dev-i386$(LS) (>= $(libc_ver)) + LIBC_BIARCH_DEP := libc0.1-i386$(LS) (>= $(libc_ver)) + endif LIBCXX_BIARCH_DEP = lib32stdc++$(CXX_SONAME)$(LS) endif @@ -92,7 +96,7 @@ endif ifndef DEB_CROSS -LIBC_BUILD_DEP := libc6.1-dev (>= $(libc_ver)) [alpha ia64] | libc0.3-dev (>= $(libc_ver)) [hurd-i386] | libc0.1-dev (>= $(libc_ver)) [kfreebsd-i386 knetbsd-gnu] | libc12-dev (>= $(libc_ver)) [netbsd-elf-gnu] | libc6-dev (>= $(libc_ver)) +LIBC_BUILD_DEP := libc6.1-dev (>= $(libc_ver)) [alpha ia64] | libc0.3-dev (>= $(libc_ver)) [hurd-i386] | libc0.1-dev (>= $(libc_ver)) [kfreebsd-i386 kfreebsd-amd64 knetbsd-gnu] | libc12-dev (>= $(libc_ver)) [netbsd-elf-gnu] | libc6-dev (>= $(libc_ver)) ifneq (,$(java_awt_peers)) JAVA_BUILD_DEP := libasound2-dev [java_no_archs !hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], @@ -148,7 +152,7 @@ #PASCAL_BUILD_DEP := libncurses5-dev [pascal_no_archs], tetex-bin [pascal_no_archs], libgmp3-dev [pascal_no_archs], help2man [pascal_no_archs], -LIBC_BIARCH_BUILD_DEP = libc6-dev-amd64 [i386], libc6-dev-sparc64 [sparc], libc6-dev-s390x [s390], libc6-dev-i386 [amd64], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], lib32gcc1 [amd64 ppc64], lib64gcc1 [i386 powerpc sparc s390], lib64z1-dev [i386 powerpc sparc s390], lib32z1-dev [amd64 ppc64], +LIBC_BIARCH_BUILD_DEP = libc6-dev-amd64 [i386], libc6-dev-sparc64 [sparc], libc6-dev-s390x [s390], libc6-dev-i386 [amd64], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], libc0.1-dev-i386 [kfreebsd-amd64], lib32gcc1 [amd64 ppc64 kfreebsd-amd64], lib64gcc1 [i386 powerpc sparc s390], lib64z1-dev [i386 powerpc sparc s390], lib32z1-dev [amd64 ppc64 kfreebsd-amd64], #ifeq ($(PKGSOURCE),gcc-snapshot) # LIBC_BIARCH_BUILD_DEP = @@ -405,7 +409,7 @@ else # avoid it ... ada_no_archs := $(strip $(foreach cpu,$(ada_no_cpus),!$(cpu)) \ - !knetbsd-i386 !netbsd-i386 !hurd-i386) + !kfreebsd-amd64 !knetbsd-i386 !netbsd-i386 !hurd-i386) java_no_archs := $(strip $(foreach cpu,$(java_no_cpus),!$(cpu)) \ !knetbsd-i386 !netbsd-i386) pascal_no_archs := $(strip $(foreach cpu,$(pascal_no_cpus),!$(cpu)) \ diff -u gcc-4.1-4.1.1/debian/rules.patch gcc-4.1-4.1.1/debian/rules.patch --- gcc-4.1-4.1.1/debian/rules.patch +++ gcc-4.1-4.1.1/debian/rules.patch @@ -169,6 +169,7 @@ endif ifeq ($(DEB_TARGET_ARCH_OS),kfreebsd) + debian_patches += kbsd-gnu debian_patches += kbsd-gnu-ada debian_patches += kbsd-gnu-java endif @@ -240,6 +241,9 @@ # FIXME: needed for 4.1? debian_patches += ppc64-biarch ppc64-ada endif + ifeq ($(DEB_TARGET_ARCH),kfreebsd-amd64) + debian_patches += amd64-biarch + endif ifneq ($(with_32bit_check),yes) debian_patches += disable-configure-run-check endif diff -u gcc-4.1-4.1.1/debian/control gcc-4.1-4.1.1/debian/control --- gcc-4.1-4.1.1/debian/control +++ gcc-4.1-4.1.1/debian/control @@ -4,7 +4,7 @@ Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org> Uploaders: Matthias Klose <[EMAIL PROTECTED]> Standards-Version: 3.7.2 -Build-Depends: dpkg-dev (>= 1.13.9), libc6.1-dev (>= 2.3.6-7) [alpha ia64] | libc0.3-dev (>= 2.3.6-7) [hurd-i386] | libc0.1-dev (>= 2.3.6-7) [kfreebsd-i386 knetbsd-gnu] | libc12-dev (>= 2.3.6-7) [netbsd-elf-gnu] | libc6-dev (>= 2.3.6-7), libc6-dev-amd64 [i386], libc6-dev-sparc64 [sparc], libc6-dev-s390x [s390], libc6-dev-i386 [amd64], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], lib32gcc1 [amd64 ppc64], lib64gcc1 [i386 powerpc sparc s390], lib64z1-dev [i386 powerpc sparc s390], lib32z1-dev [amd64 ppc64], libunwind7-dev (>= 0.98.5-6) [ia64], libatomic-ops-dev [ia64], m4, autoconf, autoconf2.13, automake1.9, libtool, autogen, gawk, dejagnu (>= 1.4.3) [!hurd-i386], expect-tcl8.3 [!hurd-i386], bzip2, binutils (>= 2.16.1cvs20051214) | binutils-multiarch (>= 2.16.1cvs20051214), binutils-hppa64 (>= 2.16.1cvs20051214) [hppa], debhelper (>= 5.0), gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext, texinfo (>= 4.3), zlib1g-dev, libmpfr-dev [!avr], locales [!hurd-i386 !knetbsd-i386 !netbsd-i386], procps [!hurd-i386], sharutils, libasound2-dev [!knetbsd-i386 !netbsd-i386 !hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], lib32asound2-dev [amd64 ppc64], lib64asound2-dev [i386 powerpc sparc s390], libxtst-dev [!knetbsd-i386 !netbsd-i386], libxt-dev [!knetbsd-i386 !netbsd-i386], libgtk2.0-dev (>= 2.4.4-2) [!knetbsd-i386 !netbsd-i386], libart-2.0-dev [!knetbsd-i386 !netbsd-i386], libcairo2-dev [!knetbsd-i386 !netbsd-i386], libgconf2-dev [!knetbsd-i386 !netbsd-i386], libxul-dev [!knetbsd-i386 !netbsd-i386 !kfreebsd-i386 !kfreebsd-amd64], fastjar [!knetbsd-i386 !netbsd-i386], gcc-4.1-source (>= 4.1.1), gcc-4.1-source (<< 4.1.2), gcc-4.1 (>= 4.1.1-12), realpath (>= 1.9.12), chrpath, lsb-release, make (>= 3.81) +Build-Depends: dpkg-dev (>= 1.13.9), libc6.1-dev (>= 2.3.6-7) [alpha ia64] | libc0.3-dev (>= 2.3.6-7) [hurd-i386] | libc0.1-dev (>= 2.3.6-7) [kfreebsd-i386 kfreebsd-amd64 knetbsd-gnu] | libc12-dev (>= 2.3.6-7) [netbsd-elf-gnu] | libc6-dev (>= 2.3.6-7), libc6-dev-amd64 [i386], libc6-dev-sparc64 [sparc], libc6-dev-s390x [s390], libc6-dev-i386 [amd64], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], libc0.1-dev-i386 [kfreebsd-amd64], lib32gcc1 [amd64 ppc64 kfreebsd-amd64], lib64gcc1 [i386 powerpc sparc s390], lib64z1-dev [i386 powerpc sparc s390], lib32z1-dev [amd64 ppc64 kfreebsd-amd64], libunwind7-dev (>= 0.98.5-6) [ia64], libatomic-ops-dev [ia64], m4, autoconf, autoconf2.13, automake1.9, libtool, autogen, gawk, dejagnu (>= 1.4.3) [!hurd-i386], expect-tcl8.3 [!hurd-i386], bzip2, binutils (>= 2.16.1cvs20051214) | binutils-multiarch (>= 2.16.1cvs20051214), binutils-hppa64 (>= 2.16.1cvs20051214) [hppa], debhelper (>= 5.0), gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext, texinfo (>= 4.3), zlib1g-dev, libmpfr-dev [!avr], locales [!hurd-i386 !knetbsd-i386 !netbsd-i386], procps [!hurd-i386], sharutils, libasound2-dev [!knetbsd-i386 !netbsd-i386 !hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], lib32asound2-dev [amd64 ppc64], lib64asound2-dev [i386 powerpc sparc s390], libxtst-dev [!knetbsd-i386 !netbsd-i386], libxt-dev [!knetbsd-i386 !netbsd-i386], libgtk2.0-dev (>= 2.4.4-2) [!knetbsd-i386 !netbsd-i386], libart-2.0-dev [!knetbsd-i386 !netbsd-i386], libcairo2-dev [!knetbsd-i386 !netbsd-i386], libgconf2-dev [!knetbsd-i386 !netbsd-i386], libxul-dev [!knetbsd-i386 !netbsd-i386 !kfreebsd-i386 !kfreebsd-amd64], fastjar [!knetbsd-i386 !netbsd-i386], gcc-4.1-source (>= 4.1.1), gcc-4.1-source (<< 4.1.2), gcc-4.1 (>= 4.1.1-12), realpath (>= 1.9.12), chrpath, lsb-release, make (>= 3.81) Build-Depends-Indep: doxygen (>= 1.4.2), graphviz (>= 2.2), gsfonts-x11, gjdoc Package: gcj-4.1-base @@ -106,7 +106,7 @@ Package: lib32gcj7-0 Section: libs -Architecture: amd64 ppc64 +Architecture: amd64 ppc64 kfreebsd-amd64 Priority: optional Depends: gcj-4.1-base (= ${gcj:Version}), libgcj-common, lib32stdc++6, lib32z1 Suggests: lib32gcj7-dbg @@ -134,7 +134,7 @@ Package: lib32gcj7-dev Section: libdevel -Architecture: amd64 ppc64 +Architecture: amd64 ppc64 kfreebsd-amd64 Priority: optional Depends: gcj-4.1-base (= ${gcj:Version}), libgcj7-dev (= ${gcj:Version}), lib32gcj-bc, lib32z1-dev, ${shlibs:Depends} Description: Java development and static library for use with gcj (32bit) @@ -157,7 +157,7 @@ Package: lib32gcj7-dbg Section: libdevel -Architecture: amd64 ppc64 +Architecture: amd64 ppc64 kfreebsd-amd64 Priority: extra Depends: gcj-4.1-base (= ${gcj:Version}), lib32gcj7-0 (= ${gcj:Version}) Recommends: binutils diff -u gcc-4.1-4.1.1/debian/rules.defs gcc-4.1-4.1.1/debian/rules.defs --- gcc-4.1-4.1.1/debian/rules.defs +++ gcc-4.1-4.1.1/debian/rules.defs @@ -833,7 +833,7 @@ export TARGET64_MACHINE endif -biarch32_archs := /amd64/ppc64/ +biarch32_archs := /amd64/ppc64/kfreebsd-amd64/ ifeq (biarch, $(findstring biarch,$(WITHOUT_LANG))) biarch32_archs := endif diff -u gcc-4.1-4.1.1/debian/rules2 gcc-4.1-4.1.1/debian/rules2 --- gcc-4.1-4.1.1/debian/rules2 +++ gcc-4.1-4.1.1/debian/rules2 @@ -1214,7 +1214,7 @@ mandir=/$(PF)/share/man \ install -ifeq ($(with_java)-$(biarch32)-$(DEB_TARGET_ARCH),yes-yes-amd64) +ifeq ($(with_java)-$(biarch32),yes-yes) rm -rf debian/tmp32 $(MAKE) -C $(buildlibdir)/32/libjava \ install DESTDIR=$(PWD)/debian/tmp32 diff -u gcc-4.1-4.1.1/debian/multiarch.inc gcc-4.1-4.1.1/debian/multiarch.inc --- gcc-4.1-4.1.1/debian/multiarch.inc +++ gcc-4.1-4.1.1/debian/multiarch.inc @@ -34,0 +35,6 @@ + +#if defined(__x86_64_kfreebsd_gnu__) + { "32", "i486-kfreebsd_gnu"}, +#endif + + diff -u gcc-4.1-4.1.1/debian/patches/kbsd-gnu.dpatch gcc-4.1-4.1.1/debian/patches/kbsd-gnu.dpatch --- gcc-4.1-4.1.1/debian/patches/kbsd-gnu.dpatch +++ gcc-4.1-4.1.1/debian/patches/kbsd-gnu.dpatch @@ -1,8 +1,9 @@ #! /bin/sh -e # DP: GNU/k*BSD support -# Author: Robert Millan <[EMAIL PROTECTED]> -# Status: pending +# Author: Robert Millan <[EMAIL PROTECTED]> +# Status: Not yet submitted + dir= if [ $# -eq 3 -a "$2" = '-d' ]; then @@ -30,301 +31,103 @@ -diff -Nur gcc-20040724.old/boehm-gc/configure gcc-20040724/boehm-gc/configure ---- gcc-20040724.old/boehm-gc/configure 2004-06-17 21:32:41.000000000 +0200 -+++ gcc-20040724/boehm-gc/configure 2004-08-06 01:53:05.000000000 +0200 -@@ -5337,6 +5337,12 @@ - _ACEOF - - ;; -+ *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu) -+ cat >>confdefs.h <<\_ACEOF -+#define _REENTRANT 1 -+_ACEOF -+ -+ ;; - *-*-aix*) - cat >>confdefs.h <<\_ACEOF - #define GC_AIX_THREADS 1 -diff -Nur gcc-20040724.old/boehm-gc/configure.ac gcc-20040724/boehm-gc/configure.ac ---- gcc-20040724.old/boehm-gc/configure.ac 2004-06-16 09:34:42.000000000 +0200 -+++ gcc-20040724/boehm-gc/configure.ac 2004-08-06 01:53:05.000000000 +0200 -@@ -138,6 +138,9 @@ - AC_DEFINE(GC_LINUX_THREADS) - AC_DEFINE(_REENTRANT) - ;; -+ *-*-gnu* | *-*-k*bsd*-gnu) -+ AC_DEFINE(_REENTRANT) -+ ;; - *-*-aix*) - AC_DEFINE(GC_AIX_THREADS) - AC_DEFINE(_REENTRANT) -diff -Nur gcc-20040724.old/boehm-gc/dbg_mlc.c gcc-20040724/boehm-gc/dbg_mlc.c ---- gcc-20040724.old/boehm-gc/dbg_mlc.c 2003-07-28 06:18:20.000000000 +0200 -+++ gcc-20040724/boehm-gc/dbg_mlc.c 2004-08-06 01:53:05.000000000 +0200 -@@ -59,7 +59,7 @@ - - # include <stdlib.h> - --# if defined(LINUX) || defined(SUNOS4) || defined(SUNOS5) \ -+# if defined(LINUX) || defined(GLIBC) || defined(SUNOS4) || defined(SUNOS5) \ - || defined(HPUX) || defined(IRIX5) || defined(OSF1) - # define RANDOM() random() - # else -diff -Nur gcc-20040724.old/boehm-gc/dyn_load.c gcc-20040724/boehm-gc/dyn_load.c ---- gcc-20040724.old/boehm-gc/dyn_load.c 2003-07-30 19:42:28.000000000 +0200 -+++ gcc-20040724/boehm-gc/dyn_load.c 2004-08-06 01:53:05.000000000 +0200 -@@ -26,7 +26,8 @@ - * None of this is safe with dlclose and incremental collection. - * But then not much of anything is safe in the presence of dlclose. - */ --#if defined(__linux__) && !defined(_GNU_SOURCE) -+#if (defined(__linux__) || defined(__GNU__) || defined(__GLIBC__)) \ -+ && !defined(_GNU_SOURCE) - /* Can't test LINUX, since this must be define before other includes */ - # define _GNU_SOURCE - #endif -@@ -56,7 +57,7 @@ - !(defined(ALPHA) && defined(OSF1)) && \ - !defined(HPUX) && !(defined(LINUX) && defined(__ELF__)) && \ - !defined(RS6000) && !defined(SCO_ELF) && !defined(DGUX) && \ -- !(defined(FREEBSD) && defined(__ELF__)) && \ -+ !(defined(KFREEBSD) && defined(__ELF__)) && \ - !(defined(NETBSD) && defined(__ELF__)) && !defined(HURD) && \ - !defined(DARWIN) - --> We only know how to find data segments of dynamic libraries for the -@@ -81,7 +82,7 @@ - #endif - - #if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || \ -- (defined(FREEBSD) && defined(__ELF__)) || defined(DGUX) || \ -+ (defined(KFREEBSD) && defined(__ELF__)) || defined(DGUX) || \ - (defined(NETBSD) && defined(__ELF__)) || defined(HURD) - # include <stddef.h> - # include <elf.h> -@@ -265,7 +266,7 @@ - # endif /* SUNOS */ - - #if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || \ -- (defined(FREEBSD) && defined(__ELF__)) || defined(DGUX) || \ -+ (defined(KFREEBSD) && defined(__ELF__)) || defined(DGUX) || \ - (defined(NETBSD) && defined(__ELF__)) || defined(HURD) - +diff -Nur gcc-4.0.2.old/gcc/config/i386/kfreebsd-gnu.h gcc-4.0.2/gcc/config/i386/kfreebsd-gnu.h +--- gcc-4.0.2.old/gcc/config/i386/kfreebsd-gnu.h 2004-06-24 04:56:23.000000000 +0200 ++++ gcc-4.0.2/gcc/config/i386/kfreebsd-gnu.h 2002-02-22 18:06:42.369039552 +0100 +@@ -1,5 +1,5 @@ +-/* Definitions for Intel 386 running kFreeBSD-based GNU systems with ELF format +- Copyright (C) 2004 ++/* Definitions for Intel 386 (and AMD x86-64) running kFreeBSD-based GNU systems with ELF format ++ Copyright (C) 2004, 2006 + Free Software Foundation, Inc. + Contributed by Robert Millan. -@@ -360,7 +361,7 @@ - /* For glibc 2.2.4+. Unfortunately, it doesn't work for older */ - /* versions. Thanks to Jakub Jelinek for most of the code. */ +@@ -22,5 +22,11 @@ --# if defined(LINUX) /* Are others OK here, too? */ \ -+# if defined(GLIBC) \ - && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \ - || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) - -@@ -434,7 +435,7 @@ - - #define HAVE_REGISTER_MAIN_STATIC_DATA - --# else /* !LINUX || version(glibc) < 2.2.4 */ -+# else /* !GLIBC || version(glibc) < 2.2.4 */ - - /* Dynamic loading code for Linux running ELF. Somewhat tested on - * Linux/x86, untested but hopefully should work on Linux/Alpha. -diff -Nur gcc-20040724.old/boehm-gc/include/gc.h gcc-20040724/boehm-gc/include/gc.h ---- gcc-20040724.old/boehm-gc/include/gc.h 2003-07-31 06:52:36.000000000 +0200 -+++ gcc-20040724/boehm-gc/include/gc.h 2004-08-06 01:53:05.000000000 +0200 -@@ -466,7 +466,7 @@ - # define GC_RETURN_ADDR (GC_word)__return_address - #endif - --#ifdef __linux__ -+#if defined(__linux__) || defined(__GNU__) || defined(__GLIBC__) - # include <features.h> - # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \ - && !defined(__ia64__) -@@ -490,7 +490,8 @@ - /* This may also be desirable if it is possible but expensive to */ - /* retrieve the call chain. */ - #if (defined(__linux__) || defined(__NetBSD__) || defined(__OpenBSD__) \ -- || defined(__FreeBSD__)) & !defined(GC_CAN_SAVE_CALL_STACKS) -+ || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \ -+ ) & !defined(GC_CAN_SAVE_CALL_STACKS) - # define GC_ADD_CALLER - # if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) - /* gcc knows how to retrieve return address, but we don't know */ -diff -Nur gcc-20040724.old/boehm-gc/include/private/gcconfig.h gcc-20040724/boehm-gc/include/private/gcconfig.h ---- gcc-20040724.old/boehm-gc/include/private/gcconfig.h 2004-04-06 20:05:05.000000000 +0200 -+++ gcc-20040724/boehm-gc/include/private/gcconfig.h 2004-08-06 01:53:05.000000000 +0200 -@@ -44,6 +44,14 @@ - # endif - # endif - -+/* And one for Glibc: */ -+#if defined(LINUX) || defined(__GNU__) || defined(__GLIBC__) -+# include <features.h> -+#endif -+#ifdef __GLIBC__ -+# define GLIBC + #undef LINK_EMULATION + #define LINK_EMULATION "elf_i386_fbsd" ++ ++#ifdef LINK_EMULATION64 ++#undef LINK_EMULATION64 ++#define LINK_EMULATION64 "elf_x86_64_fbsd" +#endif + - /* And one for NetBSD: */ - # if defined(__NetBSD__) - # define NETBSD -@@ -58,6 +66,9 @@ - # if defined(__FreeBSD__) - # define FREEBSD - # endif -+# if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) -+# define KFREEBSD -+# endif - - /* Determine the machine type: */ - # if defined(__arm__) || defined(__thumb__) -@@ -299,7 +310,7 @@ - # define OPENBSD - # define mach_type_known - # endif --# if defined(FREEBSD) && (defined(i386) || defined(__i386__)) -+# if defined(KFREEBSD) && (defined(i386) || defined(__i386__)) - # define I386 - # define mach_type_known - # endif -@@ -1162,13 +1173,25 @@ - # endif - # define SIG_SUSPEND SIGUSR1 - # define SIG_THR_RESTART SIGUSR2 -+ extern char etext[]; -+ extern char * GC_FreeBSDGetDataStart(); -+# define DATASTART GC_FreeBSDGetDataStart(0x1000, &etext) -+# endif -+# if defined(GLIBC) && defined(KFREEBSD) -+# define OS_TYPE "GNU/kFreeBSD" -+# if !defined(GC_LINUX_THREADS) && !defined(REDIRECT_MALLOC) -+# define MPROTECT_VDB -+# endif -+# define SIG_SUSPEND 57 /* arbitrary signal number <= 128 */ -+# define SIG_THR_RESTART 58 /* arbitrary signal number <= 128 */ -+# define SEARCH_FOR_DATA_START -+# define DATAEND (sbrk (0)) -+# endif -+# ifdef KFREEBSD - # define FREEBSD_STACKBOTTOM - # ifdef __ELF__ - # define DYNAMIC_LOADING - # endif -- extern char etext[]; -- extern char * GC_FreeBSDGetDataStart(); --# define DATASTART GC_FreeBSDGetDataStart(0x1000, &etext) - # endif - # ifdef NETBSD - # define OS_TYPE "NETBSD" -diff -Nur gcc-20040724.old/boehm-gc/os_dep.c gcc-20040724/boehm-gc/os_dep.c ---- gcc-20040724.old/boehm-gc/os_dep.c 2004-07-07 06:31:15.000000000 +0200 -+++ gcc-20040724/boehm-gc/os_dep.c 2004-08-06 01:53:05.000000000 +0200 -@@ -80,7 +80,7 @@ - # define NEED_FIND_LIMIT - # endif - --#if defined(FREEBSD) && defined(I386) -+#if defined(KFREEBSD) && defined(I386) - # include <machine/trap.h> - # if !defined(PCR) - # define NEED_FIND_LIMIT -@@ -121,7 +121,7 @@ - # include <fcntl.h> - #endif - --#if defined(SUNOS5SIGS) || defined (HURD) || defined(LINUX) -+#if defined(SUNOS5SIGS) || defined(LINUX) || defined(GLIBC) - # ifdef SUNOS5SIGS - # include <sys/siginfo.h> - # endif -@@ -311,7 +311,7 @@ - /* for recent Linux versions. This seems to be the easiest way to */ - /* cover all versions. */ - --# ifdef LINUX -+# if defined(LINUX) || defined(GLIBC) - /* Some Linux distributions arrange to define __data_start. Some */ - /* define data_start as a weak symbol. The latter is technically */ - /* broken, since the user program may define data_start, in which */ -@@ -321,7 +321,7 @@ - extern int __data_start[]; - # pragma weak data_start - extern int data_start[]; --# endif /* LINUX */ -+# endif /* LINUX || GLIBC */ - extern int _end[]; - - ptr_t GC_data_start; -@@ -330,7 +330,7 @@ - { - extern ptr_t GC_find_limit(); - --# ifdef LINUX -+# if defined(LINUX) || defined(GLIBC) - /* Try the easy approaches first: */ - if ((ptr_t)__data_start != 0) { - GC_data_start = (ptr_t)(__data_start); -@@ -340,7 +340,7 @@ - GC_data_start = (ptr_t)(data_start); - return; - } --# endif /* LINUX */ -+# endif /* LINUX || GLIBC */ - GC_data_start = GC_find_limit((ptr_t)(_end), FALSE); - } - #endif -@@ -2175,13 +2175,13 @@ - #endif /* SUNOS4 || FREEBSD */ - - #if defined(SUNOS5SIGS) || defined(OSF1) || defined(LINUX) \ -- || defined(HURD) -+ || defined(GLIBC) - # ifdef __STDC__ - typedef void (* SIG_PF)(int); - # else - typedef void (* SIG_PF)(); - # endif --#endif /* SUNOS5SIGS || OSF1 || LINUX || HURD */ -+#endif /* SUNOS5SIGS || OSF1 || LINUX || GLIBC */ - - #if defined(MSWIN32) - typedef LPTOP_LEVEL_EXCEPTION_FILTER SIG_PF; -@@ -2301,7 +2301,7 @@ - - /*ARGSUSED*/ - #if !defined(DARWIN) --# if defined (SUNOS4) || defined(FREEBSD) -+# if defined (SUNOS4) || defined(KFREEBSD) - void GC_write_fault_handler(sig, code, scp, addr) - int sig, code; - struct sigcontext *scp; -@@ -2312,11 +2312,11 @@ - || (FC_CODE(code) == FC_OBJERR \ - && FC_ERRNO(code) == FC_PROT)) - # endif --# ifdef FREEBSD -+# ifdef KFREEBSD - # define SIG_OK (sig == SIGBUS) - # define CODE_OK (code == BUS_PAGE_FAULT) - # endif --# endif /* SUNOS4 || FREEBSD */ -+# endif /* SUNOS4 || KFREEBSD */ - - # if defined(IRIX5) || defined(OSF1) || defined(HURD) - # include <errno.h> -@@ -3831,7 +3831,7 @@ - /* I suspect the following works for most X86 *nix variants, so */ - /* long as the frame pointer is explicitly stored. In the case of gcc, */ - /* compiler flags (e.g. -fomit-frame-pointer) determine whether it is. */ --#if defined(I386) && defined(LINUX) && defined(SAVE_CALL_CHAIN) -+#if defined(I386) && (defined(LINUX) || defined(GLIBC)) && defined(SAVE_CALL_CHAIN) - # include <features.h> - - struct frame { -@@ -3842,7 +3842,7 @@ - #endif + #undef REG_NAME + #define REG_NAME(reg) sc_ ## reg +diff -Nur gcc-4.0.2.old/gcc/config/i386/linux64.h gcc-4.0.2/gcc/config/i386/linux64.h +--- gcc-4.0.2.old/gcc/config/i386/linux64.h 2004-11-27 23:29:34.000000000 +0100 ++++ gcc-4.0.2/gcc/config/i386/linux64.h 2002-02-22 18:07:41.220092832 +0100 +@@ -1,5 +1,5 @@ + /* Definitions for AMD x86-64 running Linux-based GNU systems with ELF format. +- Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc. ++ Copyright (C) 2001, 2002, 2004, 2006 Free Software Foundation, Inc. + Contributed by Jan Hubicka <[EMAIL PROTECTED]>, based on linux.h. + + This file is part of GCC. +@@ -54,14 +54,27 @@ + When the -shared link option is used a final link is not being + done. */ + ++/* These macros may be overridden in i386/k*bsd-gnu.h. */ ++#define LINK_EMULATION "elf_i386" ++#define LINK_EMULATION64 "elf_x86_64" ++#define DYNAMIC_LINKER "/lib/ld-linux.so.2" ++#define DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2" ++ ++#undef SUBTARGET_EXTRA_SPECS ++#define SUBTARGET_EXTRA_SPECS \ ++ { "link_emulation", LINK_EMULATION },\ ++ { "link_emulation64", LINK_EMULATION64 },\ ++ { "dynamic_linker", DYNAMIC_LINKER },\ ++ { "dynamic_linker64", DYNAMIC_LINKER64 } ++ + #undef LINK_SPEC +-#define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \ ++#define LINK_SPEC "%{!m32:-m %(link_emulation64)} %{m32:-m %(link_emulation)} \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +- %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ +- %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \ ++ %{m32:%{!dynamic-linker:-dynamic-linker %(dynamic_linker)}} \ ++ %{!m32:%{!dynamic-linker:-dynamic-linker %(dynamic_linker64)}}} \ + %{static:-static}}" + + #define MULTILIB_DEFAULTS { "m64" } +diff -Nur gcc-4.0.2.old/gcc/config/kfreebsd-gnu.h gcc-4.0.2/gcc/config/kfreebsd-gnu.h +--- gcc-4.0.2.old/gcc/config/kfreebsd-gnu.h 2004-06-24 04:56:23.000000000 +0200 ++++ gcc-4.0.2/gcc/config/kfreebsd-gnu.h 2002-02-22 18:01:48.768673592 +0100 +@@ -34,3 +34,8 @@ - #if defined(SPARC) --# if defined(LINUX) -+# if defined(LINUX) || defined(GLIBC) - # include <features.h> + #undef DYNAMIC_LINKER + #define DYNAMIC_LINKER "/lib/ld.so.1" ++ ++#ifdef DYNAMIC_LINKER64 ++#undef DYNAMIC_LINKER64 ++#define DYNAMIC_LINKER64 "/lib/ld-kfreebsd-x86-64.so.1" ++#endif +diff -Nur gcc-4.0.2.old/gcc/config/knetbsd-gnu.h gcc-4.0.2/gcc/config/knetbsd-gnu.h +--- gcc-4.0.2.old/gcc/config/knetbsd-gnu.h 2004-06-24 04:56:23.000000000 +0200 ++++ gcc-4.0.2/gcc/config/knetbsd-gnu.h 2002-02-22 18:02:05.581117712 +0100 +@@ -34,3 +34,8 @@ - struct frame { + #undef DYNAMIC_LINKER + #define DYNAMIC_LINKER "/lib/ld.so.1" ++ ++#ifdef DYNAMIC_LINKER64 ++#undef DYNAMIC_LINKER64 ++#define DYNAMIC_LINKER64 "/lib/ld-knetbsd-x86-64.so.1" ++#endif +diff -Nur gcc-4.0.2.old/gcc/config.gcc gcc-4.0.2/gcc/config.gcc +--- gcc-4.0.2.old/gcc/config.gcc 2005-08-09 12:57:04.000000000 +0200 ++++ gcc-4.0.2/gcc/config.gcc 2002-02-22 18:04:37.990947896 +0100 +@@ -1012,8 +1012,8 @@ + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h \ + i386/x86-64.h i386/linux64.h" + case ${target} in +- x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h" ;; +- x86_64-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h" ;; ++ x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;; ++ x86_64-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h i386/knetbsd-gnu.h" ;; + esac + tmake_file="${tmake_file} i386/t-linux64" + ;; + diff -u gcc-4.1-4.1.1/debian/patches/kbsd-gnu-java.dpatch gcc-4.1-4.1.1/debian/patches/kbsd-gnu-java.dpatch --- gcc-4.1-4.1.1/debian/patches/kbsd-gnu-java.dpatch +++ gcc-4.1-4.1.1/debian/patches/kbsd-gnu-java.dpatch @@ -141,6 +141,17 @@ # define FREEBSD # endif +@@ -334,6 +334,10 @@ + # define I386 + # define mach_type_known + # endif ++# if defined(FREEBSD) && defined(__x86_64__) ++# define X86_64 ++# define mach_type_known ++# endif + # if defined(__NetBSD__) && (defined(i386) || defined(__i386__)) + # define I386 + # define mach_type_known @@ -1223,8 +1223,15 @@ # ifndef GC_FREEBSD_THREADS # define MPROTECT_VDB @@ -304,0 +316,21 @@ +diff -ur gcj-4.1-4.1.0/src/boehm-gc/os_dep.c.orig gcj-4.1-4.1.0/src/boehm-gc/os_dep.c +--- gcj-4.1-4.1.0/src/boehm-gc/os_dep.c.orig 2006-02-28 09:39:11.000000000 +0100 ++++ gcj-4.1-4.1.0/src/boehm-gc/os_dep.c 2006-05-12 08:34:57.000000000 +0200 +@@ -84,7 +84,7 @@ + # define NEED_FIND_LIMIT + # endif + +-#if defined(FREEBSD) && (defined(I386) || defined(powerpc) || defined(__powerpc__)) ++#if defined(FREEBSD) && (defined(I386) || defined(X86_64) || defined(powerpc) || defined(__powerpc__)) + # include <machine/trap.h> + # if !defined(PCR) + # define NEED_FIND_LIMIT +@@ -1392,7 +1392,7 @@ + } + # endif + +-# if defined(FREEBSD) && (defined(I386) || defined(powerpc) || defined(__powerpc__)) && !defined(PCR) ++# if defined(FREEBSD) && (defined(I386) || defined(X86_64) || defined(powerpc) || defined(__powerpc__)) && !defined(PCR) + /* Its unclear whether this should be identical to the above, or */ + /* whether it should apply to non-X86 architectures. */ + /* For now we don't assume that there is always an empty page after */