xexaxo
2009-Jun-12 13:39 UTC
[Wine] Wine-linux-ppc32 working status and future enchantments
Hello there Wine community Thank you for developing and maintaining this wonderful project I have been using YellowDog Linux on my PPC32 box for a while now, I was thinking if the good old wine project could be ported/expanded to this platform as well. After a minor change in the source code ( letoh16 > lendian16toh) it compiled successfully ( without the tests ). It even managed to get some of the "build-in" programs running, while others where Code: while (!OUT_OF_MEM) do exec winedbg done Due to the side of the project, and the number of modules, it's taking ages to analyze it. So I have the following questions about he structure of wine, and the implementation it on the different platforms/architectures. 1. During compile winelib and all ( or selected ) modules of wine ( ie dll ) are made in native target linux ( in mine case ppc32 ) binaries/libraries. 2. During the first run of wine a ~/.wine/ folder is created with all the *.reg and *inf files. Now correct me if I'm wrong wine calls winebuild to compile/convert the existing *.dll.so files by making them a Win PE32. Making a Win PE header file with all the necessary EXPORT and IMPORT functions but the EXPORT functions are actually implemented in a native way ( common on the platform and CPU architecture ) 3. After the creation of .wine directory the program can be loaded and executed. All the IMPORT functions are handled properly but is there any "conversion" between the different architectures. Meaning does the parameters passed to the library are handled in a ASM or in any higher programing language. How does wine actually interpret all the info in the file, variables, constants, internal functions (all of which in assembler format). Does it actually send them direct to the CPU. If someone could be kind to share some light over these questions, it would be really nice. Thank you for all your help On my system the major problem occurs at step 2 with the compile/convert of the existing *.dll.so to a Win PE32 format. Here is a short output Code: wineboot -i wine: created the configuration directory '/home/emo/.wine' err:ole:CreateBindCtx reserved should be 0, not 0xe710c84 fixme:ole:TLB_ReadTypeLib Header type magic 0x4d534654 not supported. err:ole:TLB_ReadTypeLib Loading of typelib L"mshtml.tlb" failed with error 2 err:mshtml:register_server typelib registration failed: 80029c4a fixme:ole:TLB_ReadTypeLib Header type magic 0x4d534654 not supported. err:ole:TLB_ReadTypeLib Loading of typelib L"C:\\windows\\system32\\msi.dll" failed with error 2 fixme:seh:call_stack_handlers not implemented on PowerPC wine: Unhandled page fault on read access to 0x0ee69ff4 at address 0xebecb90 (thread 0014), starting debugger... not done not done not done memory.c:37: be_cpu_linearize: Assertion `addr->Mode == AddrModeFlat' failed. fixme:seh:call_stack_handlers not implemented on PowerPC wine: Assertion failed at address 0xf3f5a70 (thread 0016), starting debugger... not done not done not done memory.c:37: be_cpu_linearize: Assertion `addr->Mode == AddrModeFlat' failed. fixme:seh:call_stack_handlers not implemented on PowerPC wine: Assertion failed at address 0xf3f5a70 (thread 0018), starting debugger... not done not done not done memory.c:37: be_cpu_linearize: Assertion `addr->Mode == AddrModeFlat' failed. fixme:seh:call_stack_handlers not implemented on PowerPC wine: Assertion failed at address 0xf3f5a70 (thread 001a), starting debugger... not done not done not done memory.c:37: be_cpu_linearize: Assertion `addr->Mode == AddrModeFlat' failed. fixme:seh:call_stack_handlers not implemented on PowerPC wine: Assertion failed at address 0xf3f5a70 (thread 001c), starting debugger... This is a output of the winecfg tool after clicking on Graphics/Desktop integration/Drives or Audio tab. Same thing occures on program close Code: fixme:seh:call_stack_handlers not implemented on PowerPC wine: Unhandled page fault on read access to 0x80610004 at address 0xe7ca6f4 (thread 0009), starting debugger... not done not done not done not done memory.c:37: be_cpu_linearize: Assertion `addr->Mode == AddrModeFlat' failed. fixme:seh:call_stack_handlers not implemented on PowerPC wine: Assertion failed at address 0xf3f5a70 (thread 0012), starting debugger... not done not done not done not done memory.c:37: be_cpu_linearize: Assertion `addr->Mode == AddrModeFlat' failed. fixme:seh:call_stack_handlers not implemented on PowerPC wine: Assertion failed at address 0xf3f5a70 (thread 0014), starting debugger... not done not done not done not done memory.c:37: be_cpu_linearize: Assertion `addr->Mode == AddrModeFlat' failed. fixme:seh:call_stack_handlers not implemented on PowerPC wine: Assertion failed at address 0xf3f5a70 (thread 0016), starting debugger... not done not done not done not done memory.c:37: be_cpu_linearize: Assertion `addr->Mode == AddrModeFlat' failed. fixme:seh:call_stack_handlers not implemented on PowerPC wine: Assertion failed at address 0xf3f5a70 (thread 0018), starting debugger... not done not done not done not done memory.c:37: be_cpu_linearize: Assertion `addr->Mode == AddrModeFlat' failed. fixme:seh:call_stack_handlers not implemented on PowerPC wine: Assertion failed at address 0xf3f5a70 (thread 001a), starting debugger... not done not done not done not done memory.c:37: be_cpu_linearize: Assertion `addr->Mode == AddrModeFlat' failed. fixme:seh:call_stack_handlers not implemented on PowerPC wine: Assertion failed at address 0xf3f5a70 (thread 001c), starting debugger... not done not done not done not done memory.c:37: be_cpu_linearize: Assertion `addr->Mode == AddrModeFlat' failed. fixme:seh:call_stack_handlers not implemented on PowerPC wine: Assertion failed at address 0xf3f5a70 (thread 001e), starting debugger... not done not done not done not done memory.c:37: be_cpu_linearize: Assertion `addr->Mode == AddrModeFlat' failed. fixme:seh:call_stack_handlers not implemented on PowerPC wine: Assertion failed at address 0xf3f5a70 (thread 0020), starting debugger...
Austin English
2009-Jun-12 16:26 UTC
[Wine] Wine-linux-ppc32 working status and future enchantments
On Fri, Jun 12, 2009 at 8:39 AM, xexaxo<wineforum-user at winehq.org> wrote:> So I have the following questions about he structure of wine, and the implementation it on the different platforms/architectures. > > 1. During compile winelib and all ( or selected ) modules of wine ( ie dll ) are made in native target linux ( in mine case ppc32 ) binaries/libraries.Yes.> 2. During the first run of wine a ~/.wine/ folder is created with all the *.reg and *inf files. Now correct me if I'm wrong wine calls winebuild to compile/convert the existing *.dll.so files by making them a Win PE32. Making a Win PE header file with all the necessary EXPORT and IMPORT functions but the EXPORT functions are actually implemented in a native way ( common on the platform and CPU architecture )No...they're ELF binaries, not PE.> 3. After the creation of .wine directory the program can be loaded and executed. All the IMPORT functions are handled properly but is there any "conversion" between the different architectures. Meaning does the parameters passed to the library are handled in a ASM or in any higher programing language.No, there is no conversion. Which is why wine on the PPC isn't very useful, since it can't run Win32 applications, unless you wrap it with a CPU emulator, like the old Darwine project used to do. -- -Austin
Thunderbird
2009-Jun-12 19:40 UTC
[Wine] Re: Wine-linux-ppc32 working status and future enchantments
The darwine project didn't really attempt this. The only thing you need to run 32-bit windows apps on powerpc linux is to install qemu. Originally qemu was developed just for this and only consisted of a linux binary loader these days it is also a VM but you can still use the good old binary loader. The darwine guys assisted porting the qemu binary loader to darwin, so that a potential darwin x86 port of wine could be run on the powerpc build of darwin / osx.