diff mbox series

package/kmsxx: work around gcc bug 85180

Message ID 20190606131035.47417-1-giulio.benetti@micronovasrl.com
State Superseded
Headers show
Series package/kmsxx: work around gcc bug 85180 | expand

Commit Message

Giulio Benetti June 6, 2019, 1:10 p.m. UTC
With Microblaze Gcc version < 8.x the build hangs due to gcc bug
85180: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85180. The bug
shows up when building kmsxx with optimization but not when building
with -O0. To work around this, if BR2_TOOLCHAIN_HAS_GCC_BUG_85180=y we
force using -O0.

Fixes:
http://autobuild.buildroot.net/results/360/360f19645e76314048c75424bb4b64da91742f47/

Signed-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com>
---
 package/kmsxx/kmsxx.mk | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Thomas Huth June 7, 2019, 6:08 a.m. UTC | #1
Am Thu,  6 Jun 2019 15:10:35 +0200
schrieb Giulio Benetti <giulio.benetti@micronovasrl.com>:

> With Microblaze Gcc version < 8.x the build hangs due to gcc bug
> 85180: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85180. The bug
> shows up when building kmsxx with optimization but not when building
> with -O0. To work around this, if BR2_TOOLCHAIN_HAS_GCC_BUG_85180=y we
> force using -O0.

According to the description in the bugzilla, the bug should also go
away when compiling with -fno-dse ... so wouldn't it be better to use
"-fno-dse" here instead of disabling the optimizations completely?

 Thomas
Giulio Benetti June 7, 2019, 6:39 a.m. UTC | #2
Hello Thomas H.,

adding Thomas P.+

Il 07/06/2019 08:08, Thomas Huth ha scritto:
> Am Thu,  6 Jun 2019 15:10:35 +0200
> schrieb Giulio Benetti <giulio.benetti@micronovasrl.com>:
> 
>> With Microblaze Gcc version < 8.x the build hangs due to gcc bug
>> 85180: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85180. The bug
>> shows up when building kmsxx with optimization but not when building
>> with -O0. To work around this, if BR2_TOOLCHAIN_HAS_GCC_BUG_85180=y we
>> force using -O0.
> 
> According to the description in the bugzilla, the bug should also go
> away when compiling with -fno-dse ... so wouldn't it be better to use
> "-fno-dse" here instead of disabling the optimizations completely?

Honestly I've completely missed that possible solution and didn't even 
tested.

Anyway it's been discussed on IRC channel to keep a common work around 
for every different GCC_BUG_*, so since many packages are affected by 
Bug 85180 and -O0 seemed to work every time Thomas P. suggested to 
always keep that flag as solution.

I hope I've understood correctly at that time on IRC!

Best regards
Thomas Huth June 7, 2019, 7:19 a.m. UTC | #3
Am Fri, 7 Jun 2019 08:39:07 +0200
schrieb Giulio Benetti <giulio.benetti@micronovasrl.com>:

> Hello Thomas H.,
> 
> adding Thomas P.+
> 
> Il 07/06/2019 08:08, Thomas Huth ha scritto:
> > Am Thu,  6 Jun 2019 15:10:35 +0200
> > schrieb Giulio Benetti <giulio.benetti@micronovasrl.com>:
> >   
> >> With Microblaze Gcc version < 8.x the build hangs due to gcc bug
> >> 85180: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85180. The bug
> >> shows up when building kmsxx with optimization but not when
> >> building with -O0. To work around this, if
> >> BR2_TOOLCHAIN_HAS_GCC_BUG_85180=y we force using -O0.  
> > 
> > According to the description in the bugzilla, the bug should also go
> > away when compiling with -fno-dse ... so wouldn't it be better to
> > use "-fno-dse" here instead of disabling the optimizations
> > completely?  
> 
> Honestly I've completely missed that possible solution and didn't
> even tested.
> 
> Anyway it's been discussed on IRC channel to keep a common work
> around for every different GCC_BUG_*, so since many packages are
> affected by Bug 85180 and -O0 seemed to work every time Thomas P.
> suggested to always keep that flag as solution.

Well, if -fno-dse is also "fixing" this bug, maybe you could add
"-fno-dse" to the global compiler flags instead of manually fixing each
and every package with -O0? ... anyway, just my 0.02 €.

 Thomas H
Arnout Vandecappelle June 8, 2019, 10:56 a.m. UTC | #4
On 07/06/2019 09:19, Thomas Huth wrote:
> Am Fri, 7 Jun 2019 08:39:07 +0200
> schrieb Giulio Benetti <giulio.benetti@micronovasrl.com>:
> 
>> Hello Thomas H.,
>>
>> adding Thomas P.+
>>
>> Il 07/06/2019 08:08, Thomas Huth ha scritto:
>>> Am Thu,  6 Jun 2019 15:10:35 +0200
>>> schrieb Giulio Benetti <giulio.benetti@micronovasrl.com>:
>>>   
>>>> With Microblaze Gcc version < 8.x the build hangs due to gcc bug
>>>> 85180: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85180. The bug
>>>> shows up when building kmsxx with optimization but not when
>>>> building with -O0. To work around this, if
>>>> BR2_TOOLCHAIN_HAS_GCC_BUG_85180=y we force using -O0.  
>>>
>>> According to the description in the bugzilla, the bug should also go
>>> away when compiling with -fno-dse ... so wouldn't it be better to
>>> use "-fno-dse" here instead of disabling the optimizations
>>> completely?  
>>
>> Honestly I've completely missed that possible solution and didn't
>> even tested.
>>
>> Anyway it's been discussed on IRC channel to keep a common work
>> around for every different GCC_BUG_*, so since many packages are
>> affected by Bug 85180 and -O0 seemed to work every time Thomas P.
>> suggested to always keep that flag as solution.

 It's not the same solution for every GCC_BUG_* that we want, it is the same
solution for every package. So we don't want to use -O2 -g0 in one package and
-O0 in another package.

 If the -fno-dse also works, that would be an even better solution.

> Well, if -fno-dse is also "fixing" this bug, maybe you could add
> "-fno-dse" to the global compiler flags instead of manually fixing each
> and every package with -O0? ... anyway, just my 0.02 €.

 That's a good idea, actually...

 And very easy to test if it works: just remove the definition of GCC_BUG_85180
(so the -O0 is never passed), add -fno-dse to the toolchain wrapper flags, and
build all affected packages with a toolchain that is known to be broken.

 Great for Giulio's patch count: so many patches adding this stuff, and then the
same number of patches removing it again :-)

 Regards,
 Arnout
Giulio Benetti June 8, 2019, 11:51 a.m. UTC | #5
Hi Arnout, Thomas H.,

Il 08/06/2019 12:56, Arnout Vandecappelle ha scritto:
> 
> 
> On 07/06/2019 09:19, Thomas Huth wrote:
>> Am Fri, 7 Jun 2019 08:39:07 +0200
>> schrieb Giulio Benetti <giulio.benetti@micronovasrl.com>:
>>
>>> Hello Thomas H.,
>>>
>>> adding Thomas P.+
>>>
>>> Il 07/06/2019 08:08, Thomas Huth ha scritto:
>>>> Am Thu,  6 Jun 2019 15:10:35 +0200
>>>> schrieb Giulio Benetti <giulio.benetti@micronovasrl.com>:
>>>>    
>>>>> With Microblaze Gcc version < 8.x the build hangs due to gcc bug
>>>>> 85180: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85180. The bug
>>>>> shows up when building kmsxx with optimization but not when
>>>>> building with -O0. To work around this, if
>>>>> BR2_TOOLCHAIN_HAS_GCC_BUG_85180=y we force using -O0.
>>>>
>>>> According to the description in the bugzilla, the bug should also go
>>>> away when compiling with -fno-dse ... so wouldn't it be better to
>>>> use "-fno-dse" here instead of disabling the optimizations
>>>> completely?
>>>
>>> Honestly I've completely missed that possible solution and didn't
>>> even tested.
>>>
>>> Anyway it's been discussed on IRC channel to keep a common work
>>> around for every different GCC_BUG_*, so since many packages are
>>> affected by Bug 85180 and -O0 seemed to work every time Thomas P.
>>> suggested to always keep that flag as solution.
> 
>   It's not the same solution for every GCC_BUG_* that we want, it is the same
> solution for every package. So we don't want to use -O2 -g0 in one package and
> -O0 in another package.

Yes you'r right.

>   If the -fno-dse also works, that would be an even better solution.

Yes, I was thinking about it and you've beaten me on time :)

>> Well, if -fno-dse is also "fixing" this bug, maybe you could add
>> "-fno-dse" to the global compiler flags instead of manually fixing each
>> and every package with -O0? ... anyway, just my 0.02 €.
> 
>   That's a good idea, actually...

Yes, Thomas H. is totally right.

>   And very easy to test if it works: just remove the definition of GCC_BUG_85180
> (so the -O0 is never passed), add -fno-dse to the toolchain wrapper flags, and
> build all affected packages with a toolchain that is known to be broken.

Yep, I'm going to do that starting from Monday.

>   Great for Giulio's patch count: so many patches adding this stuff, and then the
> same number of patches removing it again :-)

:) yes, 10 patches more, more or less. This way easier to produce them 
though.

Best regards
Giulio Benetti June 8, 2019, 12:46 p.m. UTC | #6
Il 08/06/2019 13:51, Giulio Benetti ha scritto:
> Hi Arnout, Thomas H.,
> 
> Il 08/06/2019 12:56, Arnout Vandecappelle ha scritto:
>>
>>
>> On 07/06/2019 09:19, Thomas Huth wrote:
>>> Am Fri, 7 Jun 2019 08:39:07 +0200
>>> schrieb Giulio Benetti <giulio.benetti@micronovasrl.com>:
>>>
>>>> Hello Thomas H.,
>>>>
>>>> adding Thomas P.+
>>>>
>>>> Il 07/06/2019 08:08, Thomas Huth ha scritto:
>>>>> Am Thu,  6 Jun 2019 15:10:35 +0200
>>>>> schrieb Giulio Benetti <giulio.benetti@micronovasrl.com>:
>>>>>     
>>>>>> With Microblaze Gcc version < 8.x the build hangs due to gcc bug
>>>>>> 85180: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85180. The bug
>>>>>> shows up when building kmsxx with optimization but not when
>>>>>> building with -O0. To work around this, if
>>>>>> BR2_TOOLCHAIN_HAS_GCC_BUG_85180=y we force using -O0.
>>>>>
>>>>> According to the description in the bugzilla, the bug should also go
>>>>> away when compiling with -fno-dse ... so wouldn't it be better to
>>>>> use "-fno-dse" here instead of disabling the optimizations
>>>>> completely?
>>>>
>>>> Honestly I've completely missed that possible solution and didn't
>>>> even tested.
>>>>
>>>> Anyway it's been discussed on IRC channel to keep a common work
>>>> around for every different GCC_BUG_*, so since many packages are
>>>> affected by Bug 85180 and -O0 seemed to work every time Thomas P.
>>>> suggested to always keep that flag as solution.
>>
>>    It's not the same solution for every GCC_BUG_* that we want, it is the same
>> solution for every package. So we don't want to use -O2 -g0 in one package and
>> -O0 in another package.
> 
> Yes you'r right.
> 
>>    If the -fno-dse also works, that would be an even better solution.
> 
> Yes, I was thinking about it and you've beaten me on time :)

I've given a try with kmsxx using -fno-dse, unfortunately it's a NOK.
-fno-dse still hangs while -O0 is ok.

Thomas H.:
Can you please double check with this defconfig substituting '-O0' with 
'-fno-dse'?
R2_microblazeel=y
BR2_ENABLE_DEBUG=y
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
BR2_GCC_VERSION_4_9_X=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_PACKAGE_KMSXX=y

Thanks!
Giulio Benetti June 8, 2019, 1 p.m. UTC | #7
Il 08/06/2019 14:46, Giulio Benetti ha scritto:
> Il 08/06/2019 13:51, Giulio Benetti ha scritto:
>> Hi Arnout, Thomas H.,
>>
>> Il 08/06/2019 12:56, Arnout Vandecappelle ha scritto:
>>>
>>>
>>> On 07/06/2019 09:19, Thomas Huth wrote:
>>>> Am Fri, 7 Jun 2019 08:39:07 +0200
>>>> schrieb Giulio Benetti <giulio.benetti@micronovasrl.com>:
>>>>
>>>>> Hello Thomas H.,
>>>>>
>>>>> adding Thomas P.+
>>>>>
>>>>> Il 07/06/2019 08:08, Thomas Huth ha scritto:
>>>>>> Am Thu,  6 Jun 2019 15:10:35 +0200
>>>>>> schrieb Giulio Benetti <giulio.benetti@micronovasrl.com>:
>>>>>>      
>>>>>>> With Microblaze Gcc version < 8.x the build hangs due to gcc bug
>>>>>>> 85180: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85180. The bug
>>>>>>> shows up when building kmsxx with optimization but not when
>>>>>>> building with -O0. To work around this, if
>>>>>>> BR2_TOOLCHAIN_HAS_GCC_BUG_85180=y we force using -O0.
>>>>>>
>>>>>> According to the description in the bugzilla, the bug should also go
>>>>>> away when compiling with -fno-dse ... so wouldn't it be better to
>>>>>> use "-fno-dse" here instead of disabling the optimizations
>>>>>> completely?
>>>>>
>>>>> Honestly I've completely missed that possible solution and didn't
>>>>> even tested.
>>>>>
>>>>> Anyway it's been discussed on IRC channel to keep a common work
>>>>> around for every different GCC_BUG_*, so since many packages are
>>>>> affected by Bug 85180 and -O0 seemed to work every time Thomas P.
>>>>> suggested to always keep that flag as solution.
>>>
>>>     It's not the same solution for every GCC_BUG_* that we want, it is the same
>>> solution for every package. So we don't want to use -O2 -g0 in one package and
>>> -O0 in another package.
>>
>> Yes you'r right.
>>
>>>     If the -fno-dse also works, that would be an even better solution.
>>
>> Yes, I was thinking about it and you've beaten me on time :)
> 
> I've given a try with kmsxx using -fno-dse, unfortunately it's a NOK.
> -fno-dse still hangs while -O0 is ok.
> 
> Thomas H.:
> Can you please double check with this defconfig substituting '-O0' with
> '-fno-dse'?
> R2_microblazeel=y
> BR2_ENABLE_DEBUG=y
> BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
> BR2_GCC_VERSION_4_9_X=y
> BR2_TOOLCHAIN_BUILDROOT_CXX=y
> BR2_PACKAGE_KMSXX=y
> 
> Thanks!
> 

Hmm, now it works...

I will check for every toolchain and every package affected by Gcc Bug 
85180 and if it's ok I proceed creating new patches.
Giulio Benetti June 13, 2019, 4:43 p.m. UTC | #8
Hi Arnout, Thomas H.,

Il 08/06/2019 15:00, Giulio Benetti ha scritto:
> Il 08/06/2019 14:46, Giulio Benetti ha scritto:
>> Il 08/06/2019 13:51, Giulio Benetti ha scritto:
>>> Hi Arnout, Thomas H.,
>>>
>>> Il 08/06/2019 12:56, Arnout Vandecappelle ha scritto:
>>>>
>>>>
>>>> On 07/06/2019 09:19, Thomas Huth wrote:
>>>>> Am Fri, 7 Jun 2019 08:39:07 +0200
>>>>> schrieb Giulio Benetti <giulio.benetti@micronovasrl.com>:
>>>>>
>>>>>> Hello Thomas H.,
>>>>>>
>>>>>> adding Thomas P.+
>>>>>>
>>>>>> Il 07/06/2019 08:08, Thomas Huth ha scritto:
>>>>>>> Am Thu,  6 Jun 2019 15:10:35 +0200
>>>>>>> schrieb Giulio Benetti <giulio.benetti@micronovasrl.com>:
>>>>>>>> With Microblaze Gcc version < 8.x the build hangs due to gcc bug
>>>>>>>> 85180: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85180. The bug
>>>>>>>> shows up when building kmsxx with optimization but not when
>>>>>>>> building with -O0. To work around this, if
>>>>>>>> BR2_TOOLCHAIN_HAS_GCC_BUG_85180=y we force using -O0.
>>>>>>>
>>>>>>> According to the description in the bugzilla, the bug should also go
>>>>>>> away when compiling with -fno-dse ... so wouldn't it be better to
>>>>>>> use "-fno-dse" here instead of disabling the optimizations
>>>>>>> completely?
>>>>>>
>>>>>> Honestly I've completely missed that possible solution and didn't
>>>>>> even tested.
>>>>>>
>>>>>> Anyway it's been discussed on IRC channel to keep a common work
>>>>>> around for every different GCC_BUG_*, so since many packages are
>>>>>> affected by Bug 85180 and -O0 seemed to work every time Thomas P.
>>>>>> suggested to always keep that flag as solution.
>>>>
>>>>     It's not the same solution for every GCC_BUG_* that we want, it 
>>>> is the same
>>>> solution for every package. So we don't want to use -O2 -g0 in one 
>>>> package and
>>>> -O0 in another package.
>>>
>>> Yes you'r right.
>>>
>>>>     If the -fno-dse also works, that would be an even better solution.
>>>
>>> Yes, I was thinking about it and you've beaten me on time :)
>>
>> I've given a try with kmsxx using -fno-dse, unfortunately it's a NOK.
>> -fno-dse still hangs while -O0 is ok.
>>
>> Thomas H.:
>> Can you please double check with this defconfig substituting '-O0' with
>> '-fno-dse'?
>> R2_microblazeel=y
>> BR2_ENABLE_DEBUG=y
>> BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
>> BR2_GCC_VERSION_4_9_X=y
>> BR2_TOOLCHAIN_BUILDROOT_CXX=y
>> BR2_PACKAGE_KMSXX=y
>>
>> Thanks!
>>
> 
> Hmm, now it works...
> 
> I will check for every toolchain and every package affected by Gcc Bug 
> 85180 and if it's ok I proceed creating new patches.

Just checked and even if this is true for "kmsxx" package, it's not for 
"atop","chocolate-doom","ddrescue","jasper" packages. And "kismet" 
package is NOK for Gcc 4.9/5 but OK for 6/7 with -fno-dse, so it seems 
only a case it worked for "kmsxx".
So they still hangs during building with -fno-dse instead of -O0 override.
As discussed on IRC with Arnout let's proceed using -O0 per-package.

Best regards
diff mbox series

Patch

diff --git a/package/kmsxx/kmsxx.mk b/package/kmsxx/kmsxx.mk
index c664d52361..829beb1d68 100644
--- a/package/kmsxx/kmsxx.mk
+++ b/package/kmsxx/kmsxx.mk
@@ -12,6 +12,14 @@  KMSXX_INSTALL_STAGING = YES
 KMSXX_DEPENDENCIES = libdrm host-pkgconf
 KMSXX_CONF_OPTS = -DKMSXX_ENABLE_PYTHON=OFF
 
+KMSXX_CXXFLAGS = $(TARGET_CXXFLAGS)
+
+ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)
+KMSXX_CXXFLAGS += -O0
+endif
+
+KMSXX_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(KMSXX_CXXFLAGS)"
+
 ifeq ($(BR2_PACKAGE_KMSXX_INSTALL_TESTS),y)
 KMSXX_TESTS = \
 	fbtest kmsblank kmscapture \