Comment # 6 on bug 1231820 from Alexander Leithner
I've now finally found time to play a little with some of the ./configure
parameters. For my findings, keep in mind that I'm testing this on a 64-bit
openSUSE Tumbleweed machine (snapshot 20241129) with Wine from their Git at
commit e28b587cd329a13795390597da97d4af7bbae3e3.

Below I'll list configure command lines, the directory structure they're
building and whether I was able to compile my Wine DLL as a 32-bit ELF and
64-bit ELF. Command line #0 is my original command line I've used initially
before reporting this bug.

(Note that I've built Wine with --prefix=<PREFIX> as an additional parameter to
configure not listed here, where <PREFIX> is a path in my home directory.)

Throughout my testing, I've tried to compile my Wine DLL using either of these
commands:
<PREFIX>/bin/winegcc -m32 --winebuild <PREFIX>/bin/winebuild -shared -o
myproject.dll myproject_main.c myproject.spec

<PREFIX>/bin/winegcc --winebuild <PREFIX>/bin/winebuild -shared -o
myproject.dll myproject_main.c myproject.spec


(0) ./configure --enable-archs=i386,x86_64 --enable-win64

Dirs: lib64/wine/i386-windows, lib64/wine/x86_64-unix,
lib64/wine/x86_64-windows
Builds 32-bit ELF: yes
Builds 64-bit ELF: yes



(1) ./configure --enable-archs=i386

Dirs: lib64/wine/i386-windows, lib64/wine/x86_64-unix
Builds 32-bit ELF: yes
Builds 64-bit ELF: yes



(2) ./configure --build=i586-suse-linux --host=i586-suse-linux
--enable-archs=i386

Dirs: lib/wine/i386-unix, lib/wine/i386-windows
Builds 32-bit ELF: no
Builds 34-bit ELF: yes



(3) ./configure --build=i586-suse-linux --host=i586-suse-linux

Dirs: lib/wine/i386-unix, lib/wine/i386-windows
Builds 32-bit ELF: no
Builds 64-bit ELF: yes



(4) ./configure --build=i586-suse-linux --host=i586-suse-linux
--enable-archs=i386,x86_64

Dirs: lib/wine/i386-unix, lib/wine/i386-windows, lib/wine/x86_64-windows
Builds 32-bit ELF: no
Builds 64-bit ELF: yes



(5) ./configure --build=i586-suse-linux --host=i586-suse-linux
--enable-archs=i386,x86_64 --enable-win64

Dirs: lib/wine/i386-unix, lib/wine/i386-windows, lib/wine/x86_64-windows
Builds 32-bit ELF: no
Builds 64-bit ELF: yes


In environments produced by 2-5, compilation of my Wine DLL as a 32-bit ELF via
the winegcc and winebuild produced by these builds failed with the same error
message all the time:

/usr/bin/ld: relocatable linking with relocations from format elf64-x86-64
(<PREFIX>/bin/../lib/wine/i386-unix/libwinecrt0.a(stub.o)) to format elf32-i386
(tmp674ef937/myproject-00000001.spec-00000001.o) is not supported
winebuild: /usr/bin/ld failed with status 1
winegcc: <PREFIX>/bin/winebuild failed

I find it very peculiar that the files produced as "x86_64-unix" support
linking with 32-bit ELF DLLs but that the shared objects and archives
explicitly labelled "i386-unix" do not (in fact, these shared objects are
identified by file as "ELF 64-bit LSB shared object, x86-64", though I guess
this is to be expected?).

All in all, this experiment only showed that adding "--build=i586-suse-linux
--host=i586-suse-linux" breaks things when compiling wine. Now I'm wondering if
this actually is a bug with Wine's compilation process (Makefiles?) instead of
openSUSE's but I'm afraid that any further diagnosis really is beyond me.


You are receiving this mail because: