[Buildroot] [PATCH 2/2] package/pixman: fix build failure due to gcc bug 101737

Arnout Vandecappelle arnout at mind.be
Thu Aug 5 19:31:04 UTC 2021



On 05/08/2021 08:58, Giulio Benetti wrote:
> Hi Arnout, Thomas,
> 
>> Il giorno 4 ago 2021, alle ore 22:28, Arnout Vandecappelle <arnout at mind.be> ha scritto:
>>
>>  Hi Giulio,
>>
>>> On 03/08/2021 10:42, Giulio Benetti wrote:
>>> The pixman package exhibits gcc bug 101737 when built for the SH4
>>> architecture with optimization enabled, which causes a build failure.
>>>
>>> As done for other packages in Buildroot work around this gcc bug by
>>> setting optimization to -O0 if BR2_TOOLCHAIN_HAS_GCC_BUG_101737=y.
>>> Also let's add PIXMAN_CFLAGS and pass the Codesourcery work around CFLAGS
>>> to it for consistency like we do for the rest of the packages.
>>>
>>> Fixes:
>>> http://autobuild.buildroot.net/results/b20/b20869bbb48edb1f0a847ea9e2e1a0462d6350be/
>>>
>>> Signed-off-by: Giulio Benetti <giulio.benetti at benettiengineering.com>
>>> ---
>>> package/pixman/pixman.mk | 10 +++++++++-
>>> 1 file changed, 9 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/package/pixman/pixman.mk b/package/pixman/pixman.mk
>>> index d99005ecb7..6fab539593 100644
>>> --- a/package/pixman/pixman.mk
>>> +++ b/package/pixman/pixman.mk
>>> @@ -44,12 +44,20 @@ ifneq ($(BR2_iwmmxt),y)
>>> PIXMAN_CONF_OPTS += --disable-arm-iwmmxt
>>> endif
>>>
>>> +PIXMAN_CFLAGS = $(TARGET_CFLAGS)
>>> +
>>> # toolchain gets confused about TLS access through GOT (PIC), so disable TLS
>>> # movhi    r4, %got_hiadj(%tls_ldo(fast_path_cache))
>>> # {standard input}:172: Error: bad expression
>>> ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII),y)
>>> -PIXMAN_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -DPIXMAN_NO_TLS"
>>> +PIXMAN_CFLAGS += -DPIXMAN_NO_TLS
>>> +endif
>>> +
>>> +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_101737),y)
>>
>> I believe Thomas's experiments showed that it only occurs under -Os. So I think
>> we should do this conditionally under BR2_OPTIMIZE_S, and use -O2 rather than -O0.
> 
> Yes, you’re right, but at a certain point, if I remember correctly, we’ve decided to uniform this kind work-arounds using -O0,
>  indeed some other gcc bug could be solved differently but we kept -O0 way to have a “standard” solution.

 Fair enough. Both applied to master, thanks.

 Regards,
 Arnout

> 
> What do you think about it?
> 
> Otherwise I do as you’ve described above, no problem.
> 
> Best regards
> Giulio Benetti
> 
>>
>>
>> Regards,
>> Arnout
>>
>>> +PIXMAN_CFLAGS += -O0
>>> endif
>>>
>>> +PIXMAN_CONF_OPTS += CFLAGS="$(PIXMAN_CFLAGS)"
>>> +
>>> $(eval $(autotools-package))
>>> $(eval $(host-autotools-package))
>>>
> 


More information about the buildroot mailing list