Difference between revisions of "Porting/Wine"

From RCS Wiki
Jump to navigation Jump to search
(→‎Status: Link to Page size)
 
(9 intermediate revisions by 3 users not shown)
Line 3: Line 3:
  
 
== Status ==
 
== Status ==
Initial compilation hurdles fixedWine 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]]
 +
Initial port completewinecfg starts and runs on ppc64el systems ([[Page size|64KiB page size]] tested).
  
Example:
+
== To-Do==
<pre>
+
* Add ppc64 (big endian) support
WINEDEBUG=+all,trace+all wine64 winecfg
+
 
 +
== Initial patches ==
 +
Semi-monolithic (will be split further when closer to merge):
 +
* https://github.com/madscientist159/wine
 +
 
 +
== Upstreaming ==
  
<lots of normal wine output, DLLs loading and things generally appearing to work during wineserver startup>
+
* [https://www.phoronix.com/scan.php?page=news_item&px=WINE-PPC64-Starts-Landing Status as of 2021.]
 +
* As of 2020, [https://github.com/AndreRH/hangover/issues/20#issuecomment-703300407 blocked by PE conversion], which was completed in [https://www.phoronix.com/news/Wine-8.0-Released Wine 8.0] in 2023.
  
343629.847:0008:0009:trace:nls:WideCharToMultiByte cp 65010 L"WINEDEBUG=+all,trace+all\0000" -> "WINEDEBUG=+all,trace+all\x00", ret = 25
+
== See Also ==
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==
+
* [[Porting/Box86|Box86]]
* Finish updating wine_call_on_stack() for ppc64 systems
+
* [[Porting/FEX-Emu|FEX-Emu]]
* Verify newly written stub assembly / thunking for ppc64 systems
+
* [[Porting/Hangover|Hangover]]
* Update register save/restore in winedbg for ppc64
 
* ???
 
  
== Initial patches ==
+
[[Category:Ports]]
Monolithic (will be split when closer to merge):
 
* https://wiki.raptorcs.com/wiki/File:Wine_initial_ppc64_build_fixes.patch
 

Latest revision as of 21:09, 17 May 2023

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 (64KiB page size tested).

To-Do

  • Add ppc64 (big endian) support

Initial patches

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

Upstreaming

See Also