Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 2 Mar 1998 02:13:43 -0800 (PST)
From:      Studded <Studded@dal.net>
To:        freebsd-questions@FreeBSD.ORG
Subject:   980301 in FreeBSD, partial success (fwd)
Message-ID:  <Pine.BSF.3.96.980302021234.11245A-100000@dt050ndd.san.rr.com>

next in thread | raw e-mail | index | archive | help
	Here's what I sent to comp.emulators.ms-windows.wine in case
anyone's interested:

	This version is going a little better than the last in the sense
that I can restart it after it crashes, but it's got numerous
incompatabilities with FreeBSD. In fact, I had to apply several patches
to even get it to compile. I have to wonder if there is anyone on the Wine
team who uses freebsd, or if it's basically going to be a linux product. 

	In any case, here is the diff from stock 980301. Almost all of
these are from the patches in the FreeBSD ports collection. Below is the
trace when I try to start mirc. I get the same result every time right
after I connect to a server.

diff -ur ../wine980301/configure ./configure
--- ../wine980301/configure	Sun Mar  1 11:39:00 1998
+++ ./configure	Sun Mar  1 23:36:49 1998
@@ -2761,6 +2761,8 @@
 
 trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
 
+LDLIBS="$LDLIBS -lxpg4"
+
 DEFS=-DHAVE_CONFIG_H
 
 # Without the "./", some shells look in PATH for config.status.
diff -ur ../wine980301/debugger/memory.c ./debugger/memory.c
--- ../wine980301/debugger/memory.c	Sun Feb  2 10:57:44 1997
+++ ./debugger/memory.c	Sun Mar  1 23:36:49 1998
@@ -19,7 +19,7 @@
  *     write (rwflag == 0)
  ************************************************************/
 
-#ifdef linux
+#if defined(linux) || defined(__FreeBSD__)
 BOOL32 DEBUG_checkmap_bad( const char *addr, size_t size, int rwflag)
 {
   FILE *fp;
@@ -28,6 +28,7 @@
   char *start, *end;
   int ret = TRUE;
 
+#ifdef linux
   /* 
      The entries in /proc/self/maps are of the form:
      08000000-08002000 r-xp 00000000 03:41 2361
@@ -41,12 +42,34 @@
 
      Only permissions start and end are used here
      */
+#else
+/*
+    % cat /proc/curproc/map
+    start      end         resident   private perm    type
+    0x1000     0xe000            12         0 r-x COW vnode
+    0xe000     0x10000            2         2 rwx COW vnode
+    0x10000    0x27000            4         4 rwx     default
+    0x800e000  0x800f000          1         1 rw-     default
+    0xefbde000 0xefbfe000         1         1 rwx     default
+    
+    COW = "copy on write"
+*/
+#endif
+
   
+#ifdef linux
   if (!(fp = fopen("/proc/self/maps", "r")))
+#else
+  if (!(fp = fopen("/proc/curproc/map", "r")))
+#endif
     return FALSE; 
 
   while (fgets( buf, 79, fp)) {
+#ifdef linux
     sscanf(buf, "%x-%x %3s", (int *) &start, (int *) &end, prot);
+#else
+    sscanf(buf, "%x %x %*d %*d %3s", (int *) &start, (int *) &end, prot);
+#endif
     if ( end < addr)
       continue;
     if (start <= addr && addr+size < end) {
diff -ur ../wine980301/debugger/stabs.c ./debugger/stabs.c
--- ../wine980301/debugger/stabs.c	Sun Feb  1 10:17:43 1998
+++ ./debugger/stabs.c	Sun Mar  1 23:36:47 1998
@@ -5,6 +5,7 @@
  */
 
 #include <sys/types.h>
+#include <sys/types.h>
 #include <fcntl.h>
 #include <sys/stat.h>
 #include <sys/mman.h>
diff -ur ../wine980301/memory/selector.c ./memory/selector.c
--- ../wine980301/memory/selector.c	Sun Mar  1 11:39:09 1998
+++ ./memory/selector.c	Sun Mar  1 23:36:48 1998
@@ -13,7 +13,16 @@
 #include "debug.h"
 
 
+#ifdef __FreeBSD__
+#include <osreldate.h>
+#if __FreeBSD_version < 220000
 #define FIRST_LDT_ENTRY_TO_ALLOC  17
+#else
+#define FIRST_LDT_ENTRY_TO_ALLOC  17
+#endif
+#else
+#define FIRST_LDT_ENTRY_TO_ALLOC  6
+#endif
 
 
 /***********************************************************************
diff -ur ../wine980301/memory/virtual.c ./memory/virtual.c
--- ../wine980301/memory/virtual.c	Sun Mar  1 11:39:10 1998
+++ ./memory/virtual.c	Sun Mar  1 23:36:48 1998
@@ -1097,6 +1097,9 @@
         {
             SetLastError( ERROR_INVALID_PARAMETER );
             goto error;
+#ifndef MS_SYNC
+#define MS_SYNC 0
+#endif MS_SYNC
         }
         flags = MAP_SHARED;
         /* fall through */
diff -ur ../wine980301/multimedia/midi.c ./multimedia/midi.c
--- ../wine980301/multimedia/midi.c	Sun Mar  1 11:39:13 1998
+++ ./multimedia/midi.c	Sun Mar  1 23:36:48 1998
@@ -11,6 +11,10 @@
 #include <string.h>
 #include <unistd.h>
 #include <fcntl.h>
+#ifdef __FreeBSD__
+#include <string.h>
+#include <sys/errno.h>
+#endif
 #include <sys/ioctl.h>
 #include "windows.h"
 #include "ldt.h"
diff -ur ../wine980301/win32/init.c ./win32/init.c
--- ../wine980301/win32/init.c	Sun Mar  1 11:39:23 1998
+++ ./win32/init.c	Mon Mar  2 01:19:48 1998
@@ -82,7 +82,7 @@
   char *name;
 
   name=getlogin();
-  if (!name) name=cuserid(NULL);
+  if (!name) name='U';
   len = name ? strlen(name) : 0;
   if (!len || !lpSize || len > *lpSize) {
     if (lpszName) *lpszName = 0;
diff -ur ../wine980301/windows/dialog.c ./windows/dialog.c
--- ../wine980301/windows/dialog.c	Sun Mar  1 11:39:26 1998
+++ ./windows/dialog.c	Sun Mar  1 23:36:47 1998
@@ -9,6 +9,9 @@
 #include <limits.h>
 #include <stdlib.h>
 #include <stdio.h>
+#ifdef __FreeBSD__
+#include <sys/errno.h>
+#endif
 #include <string.h>
 #include <errno.h>
 #include "windows.h"


 23# wine -winver win31 mirc.exe
Could not stat /mnt/cdrom, ignoring drive D:
Warning: profile file C:\WINAPPS\MIRC\WINE\mirclink.ini not found
edit: EM_FMTLINES: message not implemented
Segmentation fault in 32-bit code (0x000ca1e4).
Loading symbols: Reading symbols from file /usr/local/wine/wine.sym
 CTL3DV2 WIN87EM SHELL MMSYSTEM DDEML KEYBOARD COMMDLG WINSOCK mIRC
WINDEBUG WPROCS SYSTEM GDI USER KERNEL

<I think this "32 bit mode" is odd given the -winver flag above and the
fact that I'm running 16bit mirc>

In 32 bit mode.
Register dump:
 CS:001f SS:0027 DS:0027 ES:0027 FS:0a17 GS:0027
 EIP:000ca1e4 ESP:208d1000 EBP:208d1004 EFLAGS:00010246
 EAX:00000174 EBX:206a0ac2 ECX:00091cc4 EDX:209c0bfa
 ESI:0009274f EDI:209cfe4c
Stack dump:
0x208d1000 (_end+0x20689e28): *** Invalid address 0x208d1000
(_end+0x20689e28)

Backtrace:
=>0 0x000ca1e4 (_WSACancelAsyncRequest16+0x8)
  1 0x000ca1e9 (_WSACancelAsyncRequest16+0xd)
  2 0x000ca1e9 (_WSACancelAsyncRequest16+0xd)
  3 0x000ca1e9 (_WSACancelAsyncRequest16+0xd)
  4 0x000ca1e9 (_WSACancelAsyncRequest16+0xd)
  5 0x000ca1e9 (_WSACancelAsyncRequest16+0xd)

  ... and as many of these as I let go till I hit ^C.  

	I'll be happy to work with anyone interested in providing patches,
etc.

Thanks,

Doug



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.96.980302021234.11245A-100000>