https://bugs.winehq.org/show_bug.cgi?id=49507
Bug ID: 49507 Summary: 32-bit libwine fails to link: relocations against non-PIC objects in libwine_port.a Product: Wine Version: 5.11 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: bero@lindev.ch Distribution: ---
Building the 32-bit part of wine in a WoW64 setup fails:
gcc -m32 -o libwine.so.1.0 c_037.o [...] -shared -Wl,-soname,libwine.so.1 -Wl,--version-script=../../../libs/wine/wine.map \ ../../libs/port/libwine_port.a -ldl -Os -fomit-frame-pointer -g1 -Wstrict-aliasing=2 -pipe -Wformat -Werror=format-security -fstack-protector-all --param=ssp-buffer-size=4 -O3 -m64 -march=znver1 -mtune=znver1 -mmmx -msse -msse2 -mssse3 -msse4a -msse4.1 -msse4.2 -mavx -mavx2 -msha -maes -mclflushopt -mfsgsbase -mrdrnd -mfma -mrdseed -mpopcnt -madx -mbmi -mbmi2 -mfxsr -mxsave -mxsaveopt -mxsavec -mxsaves -mmwaitx -mclzero -mfpmath=sse -Wl,-O2 /usr/lib64/gcc/x86_64-openmandriva-linux-gnu/10.1.1/../../../../x86_64-openmandriva-linux-gnu/bin/ld: compose.o: relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC /usr/lib64/gcc/x86_64-openmandriva-linux-gnu/10.1.1/../../../../x86_64-openmandriva-linux-gnu/bin/ld: config.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC /usr/lib64/gcc/x86_64-openmandriva-linux-gnu/10.1.1/../../../../x86_64-openmandriva-linux-gnu/bin/ld: cptable.o: relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC /usr/lib64/gcc/x86_64-openmandriva-linux-gnu/10.1.1/../../../../x86_64-openmandriva-linux-gnu/bin/ld: debug.o: relocation R_X86_64_32S against `.bss' can not be used when making a shared object; recompile with -fPIC /usr/lib64/gcc/x86_64-openmandriva-linux-gnu/10.1.1/../../../../x86_64-openmandriva-linux-gnu/bin/ld: fold.o: relocation R_X86_64_32S against hidden symbol `wine_compatmap' can not be used when making a shared object /usr/lib64/gcc/x86_64-openmandriva-linux-gnu/10.1.1/../../../../x86_64-openmandriva-linux-gnu/bin/ld: loader.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC /usr/lib64/gcc/x86_64-openmandriva-linux-gnu/10.1.1/../../../../x86_64-openmandriva-linux-gnu/bin/ld: mbtowc.o: relocation R_X86_64_32S against hidden symbol `nfd_table' can not be used when making a shared object /usr/lib64/gcc/x86_64-openmandriva-linux-gnu/10.1.1/../../../../x86_64-openmandriva-linux-gnu/bin/ld: mmap.o: relocation R_X86_64_32S against `.data' can not be used when making a shared object; recompile with -fPIC /usr/lib64/gcc/x86_64-openmandriva-linux-gnu/10.1.1/../../../../x86_64-openmandriva-linux-gnu/bin/ld: port.o: relocation R_X86_64_32S against symbol `wine_casemap_lower' can not be used when making a shared object; recompile with -fPIC /usr/lib64/gcc/x86_64-openmandriva-linux-gnu/10.1.1/../../../../x86_64-openmandriva-linux-gnu/bin/ld: sortkey.o: relocation R_X86_64_32S against hidden symbol `collation_table' can not be used when making a shared object /usr/lib64/gcc/x86_64-openmandriva-linux-gnu/10.1.1/../../../../x86_64-openmandriva-linux-gnu/bin/ld: utf8.o: relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC /usr/lib64/gcc/x86_64-openmandriva-linux-gnu/10.1.1/../../../../x86_64-openmandriva-linux-gnu/bin/ld: wctomb.o: relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC /usr/lib64/gcc/x86_64-openmandriva-linux-gnu/10.1.1/../../../../x86_64-openmandriva-linux-gnu/bin/ld: ../../libs/port/libwine_port.a(string.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC collect2: error: ld returned 1 exit status
https://bugs.winehq.org/show_bug.cgi?id=49507
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |z.figura12@gmail.com
--- Comment #1 from Zebediah Figura z.figura12@gmail.com --- Those are 64-bit relocations. You probably reused a 64-bit build tree for a 32-bit one; you'll need to run 'make clean' in that case first.
https://bugs.winehq.org/show_bug.cgi?id=49507
--- Comment #2 from Bernhard Rosenkränzer bero@lindev.ch --- After some more debugging, the problem was a "-m64" in the CFLAGS environment variable.
Will leave the bug report open because it would be nice if the configure script caught a -m64 in compiler flags when asked to build 32-bit libraries.
https://bugs.winehq.org/show_bug.cgi?id=49507
Bernhard Rosenkränzer bero@lindev.ch changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|32-bit libwine fails to |32-bit libwine fails to |link: relocations against |build with a non-obvious |non-PIC objects in |error if CFLAGS contains |libwine_port.a |-m64
https://bugs.winehq.org/show_bug.cgi?id=49507
--- Comment #3 from Rafał Mużyło galtgendo@o2.pl --- ...I'd say that's a pure GIGO - you just don't put either '-m64' or '-m32' into your CFLAGS if you aren't explicitly cross-compiling. wine does, so it does, but the user should only do that if they have a specific need for a project.