PE Conversion
Giovanni Mascellani
gmascellani at codeweavers.com
Fri Aug 20 01:52:27 CDT 2021
Hi,
Il 19/08/21 17:08, Erich E. Hoover ha scritto:
> 1) 32-bit system libraries are being deprecated by the distros (and
> Apple has already discontinued 32-bit support), so converting built-in
> libraries to PE means that Wine will interface solely with the 64-bit
> system libraries.
My understanding is that this is not just 32 on 64, but can be useful in
general to run any architecture inside any other, with the help of an
emulator. Given that ARM already has virtually all mobile devices and it
is cutting itself a corner even among laptops and desktops, that could
eventually become something we want to do. Arguably, it is already.
As I get it, the main idea here is that PE libraries are meant to be ran
in the guest architecture and ELF libraries are meant to be ran in the
host architecture. Of course the two must speak to each other, and this
happens through a well defined interface, where it is (relatively) easy
to do what the two architectures require to understand each other (enter
or leave the emulator, change processor mode, convert pointers,
endianness, sizes, whatever). In particular, PE modules do not need and
cannot interface directly with the operating system's libraries.
For PE libraries that do not need to interface with host libraries,
there is little to be done. For PE libraries that have to talk with the
host system, they need a corresponding ELF library (which is just a
regular host ELF library, so can link against other host libraries at
its will). When the PE module is loaded, it calls __wine_init_unix_lib,
which is intercepted by ntdll, which loads the corresponding ELF library
and calls its __wine_init_unix_lib function, which returns a point to a
structure with all the function pointers that the PE library might want
to call. Given that ntdll mediates this exchange, it will be able to do
whatever thunking is required to make the interface between the two
worlds work.
I've heard of a syscall-like mechanism, but I am not sure it is relevant
here.
This is what I could understand of this business. I'm happy to take
corrections for whatever I mistook.
Giovanni.
More information about the wine-devel
mailing list