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

Stefan Dirsch sndirsch at suse.de
Wed Jan 29 13:38:57 UTC 2020


On Tue, Jan 28, 2020 at 11:45:39AM -0800, Dylan Baker wrote:
> 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.

Thanks a lot for the hint!

> 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!"

I agree on that.

Thanks,
Stefan

Public Key available
------------------------------------------------------
Stefan Dirsch (Res. & Dev.)   SUSE Software Solutions Germany GmbH
Tel: 0911-740 53 0            Maxfeldstraße 5
FAX: 0911-740 53 479          D-90409 Nürnberg
http://www.suse.de            Germany 
----------------------------------------------------------------
(HRB 36809, AG Nürnberg) Geschäftsführer: Felix Imendörffer
----------------------------------------------------------------


More information about the mesa-dev mailing list