new patch (GNU/kFreeBSD port)
Hi again,
Attaching a new patch with the changes I was requested via IRC. Functionality
is less complete now (no cdrom or sub-cpu detection), but it works.
ChangeLog entry in patch header.
--
Robert Millan
2006-02-04 Robert Millan <robertmh@gnu.org>
* configure.ac: Build -glibc/-pthread binaries on GNU/kFreeBSD as well.
* configure: Regenerate.
* dlls/kernel/heap.c: Enable for GNU/kFreeBSD the same kernel-specific
interface/parameter that is used with FreeBSD.
* dlls/ntdll/directory.c: Ditto.
* dlls/ntdll/signal_i386.c: Ditto.
* dlls/winsock/socket.c: Ditto.
* libs/wine/ldt.c: Ditto.
* libs/wine/mmap.c: Ditto.
* server/context_i386.c: Ditto.
* dlls/ntdll/file.c: Ditto. On kernel of FreeBSD, include <sys/mount.h>
regardless of where statfs was found (since we need the flag macros).
Index: configure.ac
===================================================================
RCS file: /home/wine/wine/configure.ac,v
retrieving revision 1.425
diff -u -r1.425 configure.ac
--- configure.ac 26 Jan 2006 12:47:07 -0000 1.425
+++ configure.ac 4 Feb 2006 19:34:28 -0000
@@ -1091,7 +1091,7 @@
esac
case $host_os in
- linux*)
+ linux* | k*bsd*-gnu)
case $host_cpu in
*i[[3456789]]86*) AC_SUBST(WINE_BINARIES,"wine-glibc wine-kthread wine-pthread wine-preloader") ;;
*) AC_SUBST(WINE_BINARIES,"wine-glibc wine-kthread wine-pthread") ;;
Index: dlls/kernel/heap.c
===================================================================
RCS file: /home/wine/wine/dlls/kernel/heap.c,v
retrieving revision 1.27
diff -u -r1.27 heap.c
--- dlls/kernel/heap.c 12 Jan 2006 12:46:25 -0000 1.27
+++ dlls/kernel/heap.c 4 Feb 2006 19:34:28 -0000
@@ -1138,7 +1138,7 @@
#ifdef linux
FILE *f;
#endif
-#if defined(__FreeBSD__) || defined(__NetBSD__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
int *tmp;
int size_sys;
int mib[2] = { CTL_HW };
@@ -1209,7 +1209,7 @@
/ (TotalPhysical / 100);
}
}
-#elif defined(__FreeBSD__) || defined(__NetBSD__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
mib[1] = HW_PHYSMEM;
sysctl(mib, 2, NULL, &size_sys, NULL, 0);
tmp = malloc(size_sys * sizeof(int));
Index: dlls/ntdll/directory.c
===================================================================
RCS file: /home/wine/wine/dlls/ntdll/directory.c,v
retrieving revision 1.46
diff -u -r1.46 directory.c
--- dlls/ntdll/directory.c 27 Jan 2006 12:01:01 -0000 1.46
+++ dlls/ntdll/directory.c 4 Feb 2006 19:34:29 -0000
@@ -288,7 +288,7 @@
}
#endif
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
#include <fstab.h>
static char *parse_mount_entries( FILE *f, dev_t dev, ino_t ino )
{
@@ -391,7 +391,7 @@
}
RtlLeaveCriticalSection( &dir_section );
-#elif defined( __FreeBSD__ )
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__ )
char *device = NULL;
int fd, res = -1;
struct stat st;
Index: dlls/ntdll/file.c
===================================================================
RCS file: /home/wine/wine/dlls/ntdll/file.c,v
retrieving revision 1.117
diff -u -r1.117 file.c
--- dlls/ntdll/file.c 27 Jan 2006 15:22:02 -0000 1.117
+++ dlls/ntdll/file.c 4 Feb 2006 19:34:30 -0000
@@ -57,6 +57,10 @@
# endif
#endif
+#if defined(__FreeBSD_kernel__) && (!defined(MNT_RDONLY) || !defined(MNT_LOCAL))
+# include <sys/mount.h>
+#endif
+
#ifdef HAVE_IOKIT_IOKITLIB_H
# include <IOKit/IOKitLib.h>
# include <CoreFoundation/CFNumber.h> /* for kCFBooleanTrue, kCFBooleanFalse */
@@ -1594,7 +1598,7 @@
info->DeviceType = FILE_DEVICE_DISK_FILE_SYSTEM;
break;
}
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
struct statfs stfs;
/* The proper way to do this in FreeBSD seems to be with the
Index: dlls/ntdll/signal_i386.c
===================================================================
RCS file: /home/wine/wine/dlls/ntdll/signal_i386.c,v
retrieving revision 1.115
diff -u -r1.115 signal_i386.c
--- dlls/ntdll/signal_i386.c 3 Feb 2006 11:41:48 -0000 1.115
+++ dlls/ntdll/signal_i386.c 4 Feb 2006 19:34:30 -0000
@@ -204,7 +204,7 @@
#endif /* bsdi */
-#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__)
typedef struct sigcontext SIGCONTEXT;
@@ -328,7 +328,7 @@
#endif /* __APPLE__ */
-#if defined(linux) || defined(__NetBSD__) || defined(__FreeBSD__) ||\
+#if defined(linux) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) ||\
defined(__OpenBSD__) || defined(__EMX__) || defined(__CYGWIN__)
#define EAX_sig(context) ((context)->sc_eax)
@@ -358,7 +358,7 @@
#define FAULT_ADDRESS ((void *)HANDLER_CONTEXT->cr2)
#endif
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
#define EFL_sig(context) ((context)->sc_efl)
/* FreeBSD, see i386/i386/traps.c::trap_pfault va->err kludge */
#define FAULT_ADDRESS ((void *)HANDLER_CONTEXT->sc_err)
@@ -1366,7 +1366,7 @@
sigaddset( &sig_act.sa_mask, SIGUSR1 );
sigaddset( &sig_act.sa_mask, SIGUSR2 );
-#if defined(linux) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+#if defined(linux) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__)
sig_act.sa_flags = SA_RESTART;
#elif defined (__svr4__) || defined(_SCO_DS) || defined(__APPLE__)
sig_act.sa_flags = SA_SIGINFO | SA_RESTART;
Index: dlls/winsock/socket.c
===================================================================
RCS file: /home/wine/wine/dlls/winsock/socket.c,v
retrieving revision 1.206
diff -u -r1.206 socket.c
--- dlls/winsock/socket.c 4 Jan 2006 14:45:46 -0000 1.206
+++ dlls/winsock/socket.c 4 Feb 2006 19:34:32 -0000
@@ -144,7 +144,7 @@
#endif
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
# define sipx_network sipx_addr.x_net
# define sipx_node sipx_addr.x_host.c_host
#endif /* __FreeBSD__ */
Index: libs/wine/ldt.c
===================================================================
RCS file: /home/wine/wine/libs/wine/ldt.c,v
retrieving revision 1.11
diff -u -r1.11 ldt.c
--- libs/wine/ldt.c 23 Jan 2006 11:09:01 -0000 1.11
+++ libs/wine/ldt.c 4 Feb 2006 19:34:33 -0000
@@ -109,7 +109,7 @@
#endif
#endif
-#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__)
#include <machine/segments.h>
extern int i386_get_ldt(int, union descriptor *, int);
@@ -203,7 +203,7 @@
if ((ret = modify_ldt(0x11, &ldt_info, sizeof(ldt_info))) < 0)
perror( "modify_ldt" );
}
-#elif defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+#elif defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__)
{
LDT_ENTRY entry_copy = *entry;
/* The kernel will only let us set LDTs with user priority level */
Index: libs/wine/mmap.c
===================================================================
RCS file: /home/wine/wine/libs/wine/mmap.c,v
retrieving revision 1.11
diff -u -r1.11 mmap.c
--- libs/wine/mmap.c 23 Jan 2006 16:46:27 -0000 1.11
+++ libs/wine/mmap.c 4 Feb 2006 19:34:33 -0000
@@ -199,7 +199,7 @@
if (!(flags & MAP_FIXED))
{
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
/* Even FreeBSD 5.3 does not properly support NULL here. */
if( start == NULL ) start = (void *)0x110000;
#endif
@@ -283,7 +283,7 @@
{
struct reserved_area *area;
struct list *ptr;
-#if defined(__i386__) && !defined(__FreeBSD__) /* commented out until FreeBSD gets fixed */
+#if defined(__i386__) && !defined(__FreeBSD__) && !defined(__FreeBSD_kernel__) /* commented out until FreeBSD gets fixed */
char stack;
char * const stack_ptr = &stack;
char *user_space_limit = (char *)0x80000000;
Index: server/context_i386.c
===================================================================
RCS file: /home/wine/wine/server/context_i386.c,v
retrieving revision 1.35
diff -u -r1.35 context_i386.c
--- server/context_i386.c 11 Jan 2006 20:36:18 -0000 1.35
+++ server/context_i386.c 4 Feb 2006 19:34:34 -0000
@@ -340,7 +340,7 @@
file_set_error();
}
-#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__) || defined(__NetBSD__)
#include <machine/reg.h>
/* retrieve a thread context */
Reply to: