Difference between revisions of "Porting/Wine"

From RCS Wiki
Jump to navigation Jump to search
(2 intermediate revisions by one other user not shown)
Line 3: Line 3:
  
 
== Status ==
 
== Status ==
Initial compilation hurdles fixed.  Wine builds and installs but something isn't quite right and all applications crashes when trying to create their respective initial processes.  Unfortunately wine crashes trying to execute an illegal instruction (all zeroes) well after the process has well and truly gone off the rails, so gdb is useless.
+
[[File:Wine_demo_1.png|thumb|Command line]]
 
+
[[File:Wine_demo_2.png|thumb|Wine configuration]]
Example:
+
Initial port complete. winecfg starts and runs on ppc64el systems (64k page size tested).
<pre>
 
WINEDEBUG=+all,trace+all wine64 winecfg
 
 
 
<lots of normal wine output, DLLs loading and things generally appearing to work during wineserver startup>
 
 
 
343629.847:0008:0009:trace:nls:WideCharToMultiByte cp 65010 L"WINEDEBUG=+all,trace+all\0000" -> "WINEDEBUG=+all,trace+all\x00", ret = 25
 
0009: *fd* 10 <- 23
 
343629.847:0008:0009:trace:heap:RtlAllocateHeap (0x7fffbb0e0000,7000006a,00000010): returning 0x7fffbb0e3b90
 
0009: new_process( inherit_all=0, create_flags=00000008, socket_fd=10, exe_file=0000, access=001fffff, cpu=POWERPC64, info_size=304, objattr={wine-devdir=0000,attributes=00000000,sd={},name=L""}, info={debug_flags=0,console_flags=0,console=0000,hstdin=0000,hstdout=0000,hstderr=0000,x=0,y=0,xsize=0,ysize=0,xchars=0,ychars=0,attribute=00,flags=100,show=0,curdir=L"Z:\\",dllpath=L"",imagepath=L"C:\\windows\\system32\\wineboot.exe",cmdline=L"C:\\windows\\system32\\wineboot.exe --init",title=L"C:\\windows\\system32\\wineboot.exe",desktop=L"",shellinfo=L"",runtime=L""}, env=L"SHELL=/bin/bash\0WINDOWID=125829136\0XTERM_VERSION=XTerm(343)\0XTERM_SHELL=/bin/bash\0LOGNAME=wine-dev\0LANG=en_US.UTF-8\0XTERM_LC_COLLATE=en_US.UTF-8\0SSH_CONNECTION=192.168.20.70 59000 192.168.20.73 22\0TERM=xterm\0USER=wine-dev\0DISPLAY=localhost:12.0\0SHLVL=3\0XDG_SESSION_ID=62\0WINEDEBUG=+all,trace+all\0XDG_RUNTIME_DIR=/run/user/0\0SSH_CLIENT=192.168.20.70 59000 22\0DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus\0MAIL=/var/mail/wine-dev\0SSH_TTY=/dev/pts/7\0_=/usr/bin/wine64\0WINELOADERNOEXEC=1\0" )
 
0009: new_process() = 0 { info=0014, pid=000a, handle=0018 }
 
0009: *killed* exit_code=0
 
0008: *process killed*
 
Segmentation fault
 
wine-dev@winehost:/# wineserver: exiting (pid=115735)
 
0x132c7a060:1: Token id=0.1003 primary=1 impersonation level=-1
 
0x132c76dc0:1: Handle table last=-1 count=32 process=0x132c79ca0
 
0x132c79ca0:1: Process id=000a handles=0x132c76dc0
 
0x132c76f20:1: Startup info in=0000 out=0000 err=000
 
</pre>
 
  
 
== To-Do==
 
== To-Do==
* Finish updating wine_call_on_stack() for ppc64 systems
+
* Add ppc64 (big endian) support
* Verify newly written stub assembly / thunking for ppc64 systems
 
* Update register save/restore in winedbg for ppc64
 
* ???
 
  
 
== Initial patches ==
 
== Initial patches ==
Monolithic (will be split when closer to merge):
+
Semi-monolithic (will be split further when closer to merge):
* https://wiki.raptorcs.com/wiki/File:Wine_initial_ppc64_build_fixes.patch
+
* https://github.com/madscientist159/wine
 +
 
 +
[[Category:Ports]]

Revision as of 21:18, 5 March 2019

Why?

One word: winelib! There are several large open source projects that, for one reason or another, targeted Windows at their genesis. Many of these projects are quite old, well established, and would take many man-centuries of work to rewrite for native Linux systems. Enabling wine on ppc64 gets us a cheap way to allow these projects to run (when built from source) on ppc64 systems via winelib.

Status

Command line
Wine configuration

Initial port complete. winecfg starts and runs on ppc64el systems (64k page size tested).

To-Do

  • Add ppc64 (big endian) support

Initial patches

Semi-monolithic (will be split further when closer to merge):