[Mesa-dev] -fno-common build failures (default from upcoming gcc release 10)

Dylan Baker dylan at pnwbakers.com
Tue Jan 28 19:45:39 UTC 2020


Quoting Ian Romanick (2020-01-21 09:50:47)
> On 1/20/20 6:41 AM, Stefan Dirsch wrote:
> > Hi
> > 
> > Starting from the upcoming GCC release 10, the default of -fcommon option will
> > change to -fno-common. Due to this we're going to see a lot of build failures
> 
> It seems like many of the places where this would occur in Mesa are
> likely to be fine... but it would be easy enough to fix by sprinkling
> 'extern' around (if my understanding of the GCC docs is correct).  It
> also seems unlikely that GCC will be able to apply any hypothetical
> optimizations to the uses in Mesa.  I think most places where a global
> is intended to be isolated, we already decorate it with static.
> 
> See also
> https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#index-fcommon
> 
> We definitely should decide which behavior we want, and we should start
> enforcing it sooner rather than later.
> 
> > in Mesa drivers like
> > 
> > multiple definition of `syncobj_handle'; src/amd/vulkan/9198681@@vulkan_radeon at sha/meson-generated_.._radv_entrypoints.c.o (symbol from plugin):(.text+0x0): first defined here
> > [  213s]
> > /usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld:
> > src/amd/vulkan/9198681@@vulkan_radeon at sha/radv_wsi_wayland.c.o (symbol from
> > plugin): in function `radv_GetPhysicalDeviceWaylandPresentationSupportKHR':
> > 
> > I'm wondering if there is already anybody working on fixing these issues or is
> > it recommended to workaround it by setting -fcommon manually somehow? How can
> > the latter be done when using meson/ninja as build tool?
> 
> I know you can do it with buildtype=plain, but that may be overkill for
> anything other than testing.

meson -Dc_args=-fcommon -Dcpp_args=-fcommon <other args>

will do what you want.

I agree that we should probably either add -fcommon or -fno-common to the
meson/scons/android build files, so that we don't get cases of "but this works
on my dev machine with $complier!"

Dylan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20200128/121cc9b8/attachment.sig>


More information about the mesa-dev mailing list