Bug 96550 - 12.0.0-rc3: mesa_dri_drivers.so linking fails with: relocation R_X86_64_32S against `V4F_COUNT' can not be used when making a shared object
Summary: 12.0.0-rc3: mesa_dri_drivers.so linking fails with: relocation R_X86_64_32S a...
Status: RESOLVED INVALID
Alias: None
Product: Mesa
Classification: Unclassified
Component: Mesa core (show other bugs)
Version: git
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: mesa-dev
QA Contact: mesa-dev
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-06-16 09:17 UTC by warpme
Modified: 2018-03-06 05:09 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Description warpme 2016-06-16 09:17:31 UTC
I'm trying to build 12.0.0-rc3 in cross-compile environment.
Build fails at mesa_dri_drivers.so linking with following error:

libtool: link: x86_64-minimyth-linux-gnu-g++  -fPIC -DPIC -shared -nostdlib /home/piotro/minimyth-dev/images/main/usr/lib/crti.o /home/piotro/minimyth-dev/images/build/usr/lib/gcc/x86_64-minimyth-linux-gnu/5.3.0/crtbeginS.o  -Wl,--whole-archive ../../.libs/libmesa.a common/.libs/libmegadriver_stub.a common/.libs/libdricommon.a common/.libs/libxmlconfig.a i915/.libs/libi915_dri.a i965/.libs/libi965_dri.a r200/.libs/libr200_dri.a radeon/.libs/libradeon_dri.a swrast/.libs/libswrast_dri.a -Wl,--no-whole-archive  -lgcrypt -ldrm_intel -ldrm_radeon -ldrm -lexpat -lpthread -ldl -L/home/piotro/minimyth-dev/images/build/usr/lib/gcc/x86_64-minimyth-linux-gnu/5.3.0 -L/home/piotro/minimyth-dev/images/build/usr/lib/gcc/x86_64-minimyth-linux-gnu/5.3.0/../../../../x86_64-minimyth-linux-gnu/lib -L/home/piotro/minimyth-dev/images/main/lib -L/home/piotro/minimyth-dev/images/main/usr/lib -lstdc++ -lm -lc -lgcc_s /home/piotro/minimyth-dev/images/build/usr/lib/gcc/x86_64-minimyth-linux-gnu/5.3.0/crtendS.o /home/piotro/minimyth-dev/images/main/usr/lib/crtn.o  -flto -march=x86-64 -mtune=generic -O3 -mfpmath=sse -flto -m64 -Wl,-Bsymbolic -Wl,--gc-sections -Wl,--as-needed -flto -march=x86-64 -mtune=generic -O3 -mfpmath=sse -flto -m64   -Wl,-soname -Wl,mesa_dri_drivers.so -o .libs/mesa_dri_drivers.so

/home/piotro/minimyth-dev/images/build/usr/lib/gcc/x86_64-minimyth-linux-gnu/5.3.0/../../../../x86_64-minimyth-linux-gnu/bin/ld: ../../.libs/libmesa.a(xform4.o): relocation R_X86_64_32S against `V4F_COUNT' can not be used when making a shared object; recompile with -fPIC
../../.libs/libmesa.a(xform4.o): error adding symbols: Bad value
collect2: error: ld returned 1 exit status
 

11.2.2 builds perfectly in the same environment.
Comment 1 warpme 2016-08-10 15:30:26 UTC
FYI:

ppl from Phoronix forums located the cause of the problem: gen_matypes.c is passed to the compiler in order to generate assembly code in text form (compiler switch: -S), but with -flto GCC doesn't output any code nor data because that is postponed to link time. In such case gcc -S -flto generates a file with empty .text and .data sections.

This isn't a GCC bug. Passing -ffat-lto-objects solves issue for me so maybe if compile passes -S together with -flto then the config should imply -ffat-lto-objects ?
Comment 2 Timothy Arceri 2018-03-06 05:09:52 UTC
The using the link time optimisation flag is not an officially supported way to build mesa.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.