--- Begin Message ---
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 */
--- End Message ---