new patch (GNU/kFreeBSD port)

Robert Millan rmh at aybabtu.com
Sat Feb 4 13:39:04 CST 2006


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
-------------- next part --------------
2006-02-04  Robert Millan  <robertmh at 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 */


More information about the wine-patches mailing list