(Update/Remove URLs) |
Madewokherd (talk | contribs) (→Todo: wine-mono is no longer waiting for arm mingw) |
||
(9 intermediate revisions by 4 users not shown) | |||
Line 18: | Line 18: | ||
=== Todo === | === Todo === | ||
* [http://source.winehq.org/source/libs/port/interlocked.c libs/port/interlocked.c]: maybe native operations. | * [http://source.winehq.org/source/libs/port/interlocked.c libs/port/interlocked.c]: maybe native operations. | ||
* [[Gecko|wine-gecko]] | * [[Gecko|wine-gecko]] ARM port (waiting for mingw-w64-arm). | ||
* [[Mono|wine-mono]] ARM port (requires JIT/seh code modification, and a few non-essential support libraries fail to build). | |||
* DCOM | * DCOM | ||
Line 55: | Line 56: | ||
=== Running Windows/x86 Applications === | === Running Windows/x86 Applications === | ||
See [[Emulation]] | |||
=== Analyzed/Known Test Failures === | |||
* | * d3dx9_36:mesh | ||
** Crashes, https://bugs.winehq.org/show_bug.cgi?id=43945 | |||
* mscoree:mscoree | |||
** no wine-mono for arm, https://bugs.winehq.org/show_bug.cgi?id=43937 | |||
* mshtml:* (FIXME: also applies to several others) | |||
* | ** no wine-gecko for arm, https://bugs.winehq.org/show_bug.cgi?id=43938 | ||
* | * msi:action | ||
** https://bugs.winehq.org/show_bug.cgi?id=43944 | |||
* | |||
* | |||
* msvcr100:msvcr100 | * msvcr100:msvcr100 | ||
** softfloat vs. hardfloat | ** softfloat vs. hardfloat | ||
* rpcrt4:cstub | |||
** https://bugs.winehq.org/show_bug.cgi?id=43960 | |||
* user32:class | * user32:class | ||
** per dissonant compile time checks the testsuite expects the x86 value for cbWndExtra, whereas the code uses the pointer size | ** per dissonant compile time checks the testsuite expects the x86 value for cbWndExtra, whereas the code uses the pointer size | ||
=== Wine | === Wine and Valgrind === | ||
Currently a work in progress - [[User:Austin987|Austin English]] | |||
* [ | * [https://bugs.kde.org/show_bug.cgi?id=386425 running valgrind + wine on armv7l gives illegal opcode] | ||
=== See also === | === See also === | ||
[[AndreHentschel|André Hentschel]] | [[AndreHentschel|André Hentschel]] | ||
Wine On [[Android]] | |||
[http://source.winehq.org/git/wine.git/?a=search&h=HEAD&st=commit&s=+ARM ARM commits] in Wine (and the [http://source.winehq.org/git/wine.git/?a=search&h=HEAD&st=commit&s=+Thumb Thumb] ones) | [http://source.winehq.org/git/wine.git/?a=search&h=HEAD&st=commit&s=+ARM ARM commits] in Wine (and the [http://source.winehq.org/git/wine.git/?a=search&h=HEAD&st=commit&s=+Thumb Thumb] ones) | ||
Line 118: | Line 109: | ||
Winulator ([http://www.winulator.com/ Android APP]) claims it is not wine-based, but does somewhat the same a Wine x86_2_ARM would do: http://docs.winulator.com/faq | Winulator ([http://www.winulator.com/ Android APP]) claims it is not wine-based, but does somewhat the same a Wine x86_2_ARM would do: http://docs.winulator.com/faq | ||
[http://forum.xda-developers.com/showthread.php?t=2095934 win86emu] is Bochs and DOSBox based and run x86 Applications on Windows RT | [http://forum.xda-developers.com/showthread.php?t=2095934 win86emu] is Bochs and [[DOSBox]] based and run x86 Applications on Windows RT | ||
Limbo is an Intel x86 PC Emulator for Android based on QEMU,also uses code from [http://code.google.com/p/android-vnc-viewer android-vnc-viewer] and [http://developer.gnome.org/glib glib] among others: https://code.google.com/p/limbo-android/ | Limbo is an Intel x86 PC Emulator for Android based on QEMU,also uses code from [http://code.google.com/p/android-vnc-viewer android-vnc-viewer] and [http://developer.gnome.org/glib glib] among others: https://code.google.com/p/limbo-android/ |
Latest revision as of 15:08, 30 October 2023
ARM support
Motivation
Windows apps are mostly compiled for x86 and they won't run on ARM with bare Wine, likewise ARM applications won't run on x86(_64) with bare Wine, so this is not our motivation.
The original Motivation was to be able to run winelib-apps on ARM, that even was before it got public that win8 will run on ARM devices. Meanwhile we support these new ARM PEs for win8!
Status
- Yes, It works! (TM)
- Running win8 ARM PEs also works.
- Already ported Putty to ARM as winelib application.
- First patch was September 18. 2009, final patchset sent September 18. 2010 and they got in Wine-1.3.4
- Wine on ARM already gets packaged by Debian (since 1.7.35), Fedora, Maemo and openSUSE.
- Good debugger/disassembler support.
- Relay tracing.
- Relocation.
- Linux Kernel patched upstream for running Windows RT applications see
Bug 31322
Todo
- libs/port/interlocked.c: maybe native operations.
- wine-gecko ARM port (waiting for mingw-w64-arm).
- wine-mono ARM port (requires JIT/seh code modification, and a few non-essential support libraries fail to build).
- DCOM
How to help
- Fix compiler warnings.
- Run winetest and report your results.
- Fix test failures or analyse them, see below.
- Report bugs with winelib or Windows RT applications.
- Write tests for missing functions.
Compiling
Toolchains: Every toolchain with Thumb support should work as we are independent from the crti.o mode since wine-1.5.8
Compiling on the ARM Device is recommended:
../configure && make
Anyway here is a crosscompiling example:
../configure --host=arm-linux-gnueabihf host_alias=arm-linux-gnueabihf --with-wine-tools=../path/to/your/native/wine/build && make
Maybe you also should append something like:
CFLAGS="-mcpu=yourcpu -g -O2" LDFLAGS="-mcpu=yourcpu"
Fixme/Todo: Compiling inside a chroot
Running Windows RT Applications
You can find a list of such ported applications at forum.xda-developers.com. To run them you'll need a recent Wine and a Linux Kernel with the tpidrurw patch, it's included since Kernel 3.11-rc1. When you're unsure if the Kernel you are using supports it, you can clone, make and run tpidrurw-test, it'll tell you if your Kernel is suitable.
Running Windows CE Applications
That's still pre-alpha/proof-of-concept and not part of official Wine, don't expect any success. WineCE can be found at github.
Running Windows/x86 Applications
See Emulation
Analyzed/Known Test Failures
- d3dx9_36:mesh
- mscoree:mscoree
- no wine-mono for arm, https://bugs.winehq.org/show_bug.cgi?id=43937
- mshtml:* (FIXME: also applies to several others)
- no wine-gecko for arm, https://bugs.winehq.org/show_bug.cgi?id=43938
- msi:action
- msvcr100:msvcr100
- softfloat vs. hardfloat
- rpcrt4:cstub
- user32:class
- per dissonant compile time checks the testsuite expects the x86 value for cbWndExtra, whereas the code uses the pointer size
Wine and Valgrind
Currently a work in progress - Austin English
See also
Wine On Android
ARM commits in Wine (and the Thumb ones)
AArch64: ARM64
My and Vincents slides can be found here: FOSDEM2013
For Windows RT recompiled applications check: at xda-developers
Examples of Winelib ports: - on OpenPandora
Example use of Qemu for running x86 code: Wine for PPC (per qemu usermode emulation)
There was some experience using Qemu to run the WINE x86 binary under Zaurus's ARM Debian: http://www.oesf.org/forum/index.php?showtopic=14829
Qemu Backend success story: http://forum.winehq.org/viewtopic.php?t=13286 and http://forum.winehq.org/viewtopic.php?t=13330
Mixed topic, including ARM discussions: http://forum.winehq.org/viewtopic.php?p=67218
Some x86-to-ARM translation strategies were also discussed: http://forum.openhandhelds.org/viewtopic.php?f=16&t=1088
Android running x86 wine and solitaire (by using ubuntu hack and binfmt) : http://forum.xda-developers.com/showthread.php?t=1258506
Winulator (Android APP) claims it is not wine-based, but does somewhat the same a Wine x86_2_ARM would do: http://docs.winulator.com/faq
win86emu is Bochs and DOSBox based and run x86 Applications on Windows RT
Limbo is an Intel x86 PC Emulator for Android based on QEMU,also uses code from android-vnc-viewer and glib among others: https://code.google.com/p/limbo-android/
Eltechs' ExaGear RPG ([1]) allows x86 applications to run on Android using wine.