ChangeLog: 2004-03-15 Robert Millan * libtool.m4: Add kfreebsd*-gnu and knetbsd*-gnu. * ltconfig: Likewise. * ltcf-c.sh: Likewise. * ltcf-cxx.sh: Likewise. * ltcf-gcj.sh: Likewise. gcc/ChangeLog: 2004-03-15 Robert Millan * config.gcc: Merge kfreebsd*-gnu with linux* and add knetbsd*-gnu. * config/i386/linux.h: Unify sys/ucontext.h declarations across platforms (Needed for GNU/k*BSD). * config/kfreebsd-gnu.h: New. GNU/kFreeBSD followup for linux.h. * config/knetbsd-gnu.h: New. Ditto for GNU/kNetBSD. * config/freebsd-spec.h: Define __FreeBSD_kernel__. * config/netbsd.h: Define __NetBSD_kernel__. * config/kfreebsdgnu.h: Remove. * config/t-kfreebsd-gnu: Likewise. * config/i386/kfreebsdgnu.h: Likewise. diff -Nur gcc.old/gcc/config/freebsd-spec.h gcc/gcc/config/freebsd-spec.h --- gcc.old/gcc/config/freebsd-spec.h 2004-02-04 21:00:52.000000000 +0100 +++ gcc/gcc/config/freebsd-spec.h 2004-03-13 23:03:41.000000000 +0100 @@ -61,6 +61,7 @@ builtin_define ("__FreeBSD__=3"); \ else \ builtin_define ("__FreeBSD__"); \ + builtin_define ("__FreeBSD_kernel__"); \ builtin_define_std ("unix"); \ builtin_define ("__KPRINTF_ATTRIBUTE__"); \ builtin_assert ("system=unix"); \ diff -Nur gcc.old/gcc/config/i386/kfreebsdgnu.h gcc/gcc/config/i386/kfreebsdgnu.h --- gcc.old/gcc/config/i386/kfreebsdgnu.h 2003-10-21 11:52:47.000000000 +0200 +++ gcc/gcc/config/i386/kfreebsdgnu.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,35 +0,0 @@ -/* Definitions for Intel 386 running GNU/KFreeBSD systems with ELF format. - Copyright (C) 2002 Free Software Foundation, Inc. - Contributed by Bruno Haible. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GCC is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GCC; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -#undef TARGET_VERSION -#define TARGET_VERSION fprintf (stderr, " (i386 KFreeBSD/ELF)"); - -/* FIXME: Is a KFreeBSD-specific fallback mechanism necessary? */ -#undef MD_FALLBACK_FRAME_STATE_FOR - -#undef LINK_SPEC -#define LINK_SPEC "-m elf_i386_fbsd %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ - %{static:-static}}}" diff -Nur gcc.old/gcc/config/i386/linux.h gcc/gcc/config/i386/linux.h --- gcc.old/gcc/config/i386/linux.h 2003-11-29 04:08:10.000000000 +0100 +++ gcc/gcc/config/i386/linux.h 2004-03-13 23:03:41.000000000 +0100 @@ -108,24 +108,25 @@ /* If ELF is the default format, we should not use /lib/elf. */ +#ifndef LINK_EMULATION +# define LINK_EMULATION "elf_i386" +#endif +#ifndef LINK_LDPATH +# ifdef USE_GNULIBC_1 +# define LINK_LDPATH "/lib/ld-linux.so.1" +# else +# define LINK_LDPATH "/lib/ld-linux.so.2" +# endif +#endif + #undef LINK_SPEC -#ifdef USE_GNULIBC_1 -#define LINK_SPEC "-m elf_i386 %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.1}} \ - %{static:-static}}}" -#else -#define LINK_SPEC "-m elf_i386 %{shared:-shared} \ +#define LINK_SPEC "-m " LINK_EMULATION " %{shared:-shared} \ %{!shared: \ %{!ibcs: \ %{!static: \ %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ + %{!dynamic-linker:-dynamic-linker " LINK_LDPATH "}} \ %{static:-static}}}" -#endif /* A C statement (sans semicolon) to output to the stdio stream FILE the assembler definition of uninitialized global DECL named @@ -217,6 +218,18 @@ #include #include +/* Unify sc_* declarations on all platforms */ +#ifndef sc_eax +#define sc_eax eax +#define sc_ebx ebx +#define sc_ecx ecx +#define sc_edx edx +#define sc_esi esi +#define sc_edi edi +#define sc_ebp ebp +#define sc_eip eip +#endif + #define MD_FALLBACK_FRAME_STATE_FOR(CONTEXT, FS, SUCCESS) \ do { \ unsigned char *pc_ = (CONTEXT)->ra; \ @@ -245,28 +258,28 @@ else \ break; \ \ - new_cfa_ = sc_->esp; \ + new_cfa_ = sc_->sc_esp; \ (FS)->cfa_how = CFA_REG_OFFSET; \ (FS)->cfa_reg = 4; \ (FS)->cfa_offset = new_cfa_ - (long) (CONTEXT)->cfa; \ \ /* The SVR4 register numbering macros aren't usable in libgcc. */ \ (FS)->regs.reg[0].how = REG_SAVED_OFFSET; \ - (FS)->regs.reg[0].loc.offset = (long)&sc_->eax - new_cfa_; \ + (FS)->regs.reg[0].loc.offset = (long)&sc_->sc_eax - new_cfa_; \ (FS)->regs.reg[3].how = REG_SAVED_OFFSET; \ - (FS)->regs.reg[3].loc.offset = (long)&sc_->ebx - new_cfa_; \ + (FS)->regs.reg[3].loc.offset = (long)&sc_->sc_ebx - new_cfa_; \ (FS)->regs.reg[1].how = REG_SAVED_OFFSET; \ - (FS)->regs.reg[1].loc.offset = (long)&sc_->ecx - new_cfa_; \ + (FS)->regs.reg[1].loc.offset = (long)&sc_->sc_ecx - new_cfa_; \ (FS)->regs.reg[2].how = REG_SAVED_OFFSET; \ - (FS)->regs.reg[2].loc.offset = (long)&sc_->edx - new_cfa_; \ + (FS)->regs.reg[2].loc.offset = (long)&sc_->sc_edx - new_cfa_; \ (FS)->regs.reg[6].how = REG_SAVED_OFFSET; \ - (FS)->regs.reg[6].loc.offset = (long)&sc_->esi - new_cfa_; \ + (FS)->regs.reg[6].loc.offset = (long)&sc_->sc_esi - new_cfa_; \ (FS)->regs.reg[7].how = REG_SAVED_OFFSET; \ - (FS)->regs.reg[7].loc.offset = (long)&sc_->edi - new_cfa_; \ + (FS)->regs.reg[7].loc.offset = (long)&sc_->sc_edi - new_cfa_; \ (FS)->regs.reg[5].how = REG_SAVED_OFFSET; \ - (FS)->regs.reg[5].loc.offset = (long)&sc_->ebp - new_cfa_; \ + (FS)->regs.reg[5].loc.offset = (long)&sc_->sc_ebp - new_cfa_; \ (FS)->regs.reg[8].how = REG_SAVED_OFFSET; \ - (FS)->regs.reg[8].loc.offset = (long)&sc_->eip - new_cfa_; \ + (FS)->regs.reg[8].loc.offset = (long)&sc_->sc_eip - new_cfa_; \ (FS)->retaddr_column = 8; \ goto SUCCESS; \ } while (0) diff -Nur gcc.old/gcc/config/kfreebsd-gnu.h gcc/gcc/config/kfreebsd-gnu.h --- gcc.old/gcc/config/kfreebsd-gnu.h 1970-01-01 01:00:00.000000000 +0100 +++ gcc/gcc/config/kfreebsd-gnu.h 2004-03-13 23:03:41.000000000 +0100 @@ -0,0 +1,46 @@ +/* Definitions for kFreeBSD-based GNU systems with ELF format + Copyright (C) 2004 + Free Software Foundation, Inc. + Contributed by Robert Millan. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +#undef LINUX_TARGET_OS_CPP_BUILTINS +#define LINUX_TARGET_OS_CPP_BUILTINS() \ + do \ + { \ + builtin_define ("__FreeBSD_kernel__"); \ + builtin_define ("__GLIBC__"); \ + builtin_define_std ("unix"); \ + builtin_assert ("system=unix"); \ + builtin_assert ("system=posix"); \ + } \ + while (0) + +#define LINK_EMULATION "elf_i386_fbsd" +#define LINK_LDPATH "/lib/ld.so.1" + +/* These must be macros so that i386/linux.h can check for them */ +#define sc_eax sc_eax +#define sc_ebx sc_ebx +#define sc_ecx sc_ecx +#define sc_edx sc_edx +#define sc_esi sc_esi +#define sc_edi sc_edi +#define sc_ebp sc_ebp +#define sc_eip sc_eip diff -Nur gcc.old/gcc/config/kfreebsdgnu.h gcc/gcc/config/kfreebsdgnu.h --- gcc.old/gcc/config/kfreebsdgnu.h 2003-12-18 03:32:11.000000000 +0100 +++ gcc/gcc/config/kfreebsdgnu.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,41 +0,0 @@ -/* Definitions for GNU/KFreeBSD systems with ELF format. - Copyright (C) 2002 Free Software Foundation, Inc. - Contributed by Bruno Haible. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GCC is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GCC; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -#undef WCHAR_TYPE -#define WCHAR_TYPE "int" - -#undef TARGET_OS_CPP_BUILTINS -#define TARGET_OS_CPP_BUILTINS() \ - builtin_define ("__GNU_KFreeBSD__=0"); \ - builtin_define ("__gnu_kfreebsd__=0"); \ - builtin_define ("__FreeBSD_kernel__=5"); \ - builtin_define ("__ELF__"); \ - builtin_define_std ("unix"); \ - builtin_assert ("system=posix"); - -#undef TARGET_CPU_CPP_BUILTINS -#define TARGET_CPU_CPP_BUILTINS() \ - builtin_define ("__i386__"); \ - builtin_define_std ("i386"); \ - builtin_assert ("cpu=i386"); \ - builtin_assert ("machine=i386"); - -/* do {} while (0) */ diff -Nur gcc.old/gcc/config/knetbsd-gnu.h gcc/gcc/config/knetbsd-gnu.h --- gcc.old/gcc/config/knetbsd-gnu.h 1970-01-01 01:00:00.000000000 +0100 +++ gcc/gcc/config/knetbsd-gnu.h 2004-03-13 23:03:41.000000000 +0100 @@ -0,0 +1,45 @@ +/* Definitions for kNetBSD-based GNU systems with ELF format + Copyright (C) 2004 + Free Software Foundation, Inc. + Contributed by Robert Millan. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +#undef LINUX_TARGET_OS_CPP_BUILTINS +#define LINUX_TARGET_OS_CPP_BUILTINS() \ + do \ + { \ + builtin_define ("__NetBSD_kernel__"); \ + builtin_define ("__GLIBC__"); \ + builtin_define_std ("unix"); \ + builtin_assert ("system=unix"); \ + builtin_assert ("system=posix"); \ + } \ + while (0) + +#define LINK_LDPATH "/lib/ld.so.1" + +/* These must be macros so that i386/linux.h can check for them */ +#define sc_eax sc_eax +#define sc_ebx sc_ebx +#define sc_ecx sc_ecx +#define sc_edx sc_edx +#define sc_esi sc_esi +#define sc_edi sc_edi +#define sc_ebp sc_ebp +#define sc_eip sc_eip diff -Nur gcc.old/gcc/config/linux.h gcc/gcc/config/linux.h --- gcc.old/gcc/config/linux.h 2003-11-29 04:08:10.000000000 +0100 +++ gcc/gcc/config/linux.h 2004-03-13 23:03:41.000000000 +0100 @@ -97,6 +97,7 @@ %{!p:%{!pg:%{!g*:-lc} %{g*:-lg}}}}" #endif +#ifndef LINUX_TARGET_OS_CPP_BUILTINS #define LINUX_TARGET_OS_CPP_BUILTINS() \ do { \ builtin_define ("__gnu_linux__"); \ @@ -106,6 +107,7 @@ builtin_assert ("system=unix"); \ builtin_assert ("system=posix"); \ } while (0) +#endif #if !defined(USE_GNULIBC_1) && defined(HAVE_LD_EH_FRAME_HDR) #define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " diff -Nur gcc.old/gcc/config/netbsd.h gcc/gcc/config/netbsd.h --- gcc.old/gcc/config/netbsd.h 2003-09-27 06:48:11.000000000 +0200 +++ gcc/gcc/config/netbsd.h 2004-03-13 23:03:41.000000000 +0100 @@ -24,6 +24,7 @@ do \ { \ builtin_define ("__NetBSD__"); \ + builtin_define ("__NetBSD_kernel__"); \ builtin_assert ("system=unix"); \ builtin_assert ("system=NetBSD"); \ } \ diff -Nur gcc.old/gcc/config/t-kfreebsd-gnu gcc/gcc/config/t-kfreebsd-gnu --- gcc.old/gcc/config/t-kfreebsd-gnu 2003-10-21 11:52:47.000000000 +0200 +++ gcc/gcc/config/t-kfreebsd-gnu 1970-01-01 01:00:00.000000000 +0100 @@ -1,16 +0,0 @@ -# glibc provides a limits.h, which must be combined with gcc's limits.h. -LIMITS_H_TEST = true - -# Compile crtbeginS.o and crtendS.o with pic. -CRTSTUFF_T_CFLAGS_S = -fPIC -# Compile libgcc2.a with pic. -TARGET_LIBGCC2_CFLAGS = -fPIC - -# Override t-slibgcc-elf-ver to export some libgcc symbols with -# the symbol versions that glibc used. -SHLIB_MAPFILES += $(srcdir)/config/libgcc-glibc.ver - -# Use unwind-dw2-fde-glibc -LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde-glibc.c \ - $(srcdir)/unwind-sjlj.c -LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c diff -Nur gcc.old/gcc/config.gcc gcc/gcc/config.gcc --- gcc.old/gcc/config.gcc 2004-03-01 16:12:56.000000000 +0100 +++ gcc/gcc/config.gcc 2004-03-13 23:04:29.000000000 +0100 @@ -409,21 +409,10 @@ esac fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h" ;; -*-*-kfreebsd*-gnu) - # Must come before *-*-gnu* - xm_defines=POSIX # needed for cross-compiling from FreeBSD? - extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o" - # GNU tools are the only tools. - gas=yes - gnu_ld=yes - case ${enable_threads} in - "" | yes | posix) thread_file='posix' ;; - esac - ;; *-*-linux*libc1* | *-*-linux*aout*) # Avoid the generic linux case. ;; -*-*-linux* | frv-*-*linux*) +*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu) # Must come before *-*-gnu* (because of *-*-linux-gnu* systems). extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o" gas=yes @@ -919,10 +908,15 @@ tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/i386-coff.h" use_fixproto=yes ;; -i[34567]86-*-linux*) # Intel 80386's running GNU/Linux +i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu) + # Intel 80386's running GNU/* # with ELF format using glibc 2 - # aka GNU/Linux C library 6 - tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h" + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h" + case ${target} in + i[34567]86-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h" ;; + i[34567]86-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h" ;; + esac + tm_file="${tm_file} linux.h i386/linux.h" tmake_file="${tmake_file} i386/t-crtstuff" ;; x86_64-*-linux*) @@ -930,12 +924,6 @@ i386/x86-64.h i386/linux64.h" tmake_file="${tmake_file} i386/t-linux64" ;; -i[34567]86-*-kfreebsd*-gnu) # must be before i[34567]86-*-gnu* - tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h kfreebsdgnu.h i386/kfreebsdgnu.h" - tmake_file="t-slibgcc-elf-ver t-kfreebsd-gnu i386/t-crtstuff" - float_format=i386 - use_fixproto=no - ;; i[34567]86-*-gnu*) ;; i[34567]86-pc-msdosdjgpp*) diff -Nur gcc.old/libtool.m4 gcc/libtool.m4 --- gcc.old/libtool.m4 2003-11-19 06:29:32.000000000 +0100 +++ gcc/libtool.m4 2004-03-13 23:03:41.000000000 +0100 @@ -621,7 +621,7 @@ lt_cv_deplibs_check_method=pass_all ;; -freebsd* ) +freebsd* | kfreebsd*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) @@ -689,7 +689,7 @@ lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` ;; -netbsd*) +netbsd* | knetbsd*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'] else diff -Nur gcc.old/ltcf-c.sh gcc/ltcf-c.sh --- gcc.old/ltcf-c.sh 2003-11-19 06:29:32.000000000 +0100 +++ gcc/ltcf-c.sh 2004-03-13 23:03:41.000000000 +0100 @@ -175,7 +175,7 @@ $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' ;; - netbsd*) + netbsd* | knetbsd*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= @@ -442,7 +442,7 @@ ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd*) + freebsd* | kfreebsd*-gnu) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes @@ -489,7 +489,7 @@ link_all_deplibs=yes ;; - netbsd*) + netbsd* | knetbsd*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else diff -Nur gcc.old/ltcf-cxx.sh gcc/ltcf-cxx.sh --- gcc.old/ltcf-cxx.sh 2003-11-19 06:29:32.000000000 +0100 +++ gcc/ltcf-cxx.sh 2004-03-13 23:03:41.000000000 +0100 @@ -289,7 +289,7 @@ # C++ shared libraries reported to be fairly broken before switch to ELF ld_shlibs=no ;; - freebsd*) + freebsd* | kfreebsd*-gnu) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs=yes @@ -449,7 +449,7 @@ ;; esac ;; - netbsd*) + netbsd* | knetbsd*-gnu) # NetBSD uses g++ - do we need to do anything? ;; osf3*) @@ -804,7 +804,7 @@ ;; esac ;; - freebsd*) + freebsd* | kfreebsd*-gnu) # FreeBSD uses GNU C++ ;; gnu*) diff -Nur gcc.old/ltcf-gcj.sh gcc/ltcf-gcj.sh --- gcc.old/ltcf-gcj.sh 2003-11-19 06:29:32.000000000 +0100 +++ gcc/ltcf-gcj.sh 2004-03-13 23:03:41.000000000 +0100 @@ -178,7 +178,7 @@ $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' ;; - netbsd*) + netbsd* | knetbsd*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= @@ -445,7 +445,7 @@ ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd*) + freebsd* | kfreebsd*-gnu) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes @@ -476,7 +476,7 @@ link_all_deplibs=yes ;; - netbsd*) + netbsd* | knetbsd*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else diff -Nur gcc.old/ltconfig gcc/ltconfig --- gcc.old/ltconfig 2003-11-19 06:29:32.000000000 +0100 +++ gcc/ltconfig 2004-03-13 23:03:41.000000000 +0100 @@ -1168,6 +1168,17 @@ hardcode_into_libs=yes ;; +kfreebsd*-gnu | knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions.