Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 1/1] package/gcc: ensure __register_frame is optimized out for glibc
@ 2022-10-28 22:38 James Hilliard
  2022-10-30  8:30 ` Yann E. MORIN
  0 siblings, 1 reply; 6+ messages in thread
From: James Hilliard @ 2022-10-28 22:38 UTC (permalink / raw)
  To: buildroot; +Cc: James Hilliard, Giulio Benetti, Romain Naour, Thomas Petazzoni

On some architectures when building with -O0 the __register_frame
symbol fails to get optimized out which can cause linking failures
when building glibc.

To fix this set -O1 for GCC target libs when building with glibc
and BR2_OPTIMIZE_0 on the problematic target architectures.

Fixes:
 - http://autobuild.buildroot.net/results/89b/89b6c6924240b7cf82035a844f3573673e91b364
 - http://autobuild.buildroot.net/results/46f/46f4ec99d2b23d354a4bb5e92123d64f0da6ed27
 - http://autobuild.buildroot.net/results/839/839f929f700cf181ebdf34389c7806a96f55813e
 - http://autobuild.buildroot.net/results/0e2/0e202bf53a683930f3cad6edef2a4dea629eaecb
 - http://autobuild.buildroot.net/results/8a8/8a8c917f597fdcca744e696e19e9300b64004335
 - http://autobuild.buildroot.net/results/c05/c058b27ed2834dfa633b63ec6c3639ab1e8bf412
 - http://autobuild.buildroot.net/results/8ba/8ba8882a861cf7df359c23969c09b2be0725b2e5

Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
---
 package/gcc/gcc.mk | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk
index ec6f3b550a..a339f77970 100644
--- a/package/gcc/gcc.mk
+++ b/package/gcc/gcc.mk
@@ -103,6 +103,15 @@ GCC_COMMON_TARGET_CFLAGS += -matomic
 GCC_COMMON_TARGET_CXXFLAGS += -matomic
 endif
 
+# Enable GCC target libs optimizations to optimize out __register_frame
+# when needed for some architectures when building with glibc.
+ifeq ($(BR2_TOOLCHAIN_USES_GLIBC)$(BR2_OPTIMIZE_0),yy)
+ifeq ($(BR2_microblazebe)$(BR2_microblazeel)$(BR2_mips)$(BR2_mipsel)$(BR2_nios2)$(BR2_or1k)$(BR2_sh),y)
+GCC_COMMON_TARGET_CFLAGS += -O1
+GCC_COMMON_TARGET_CXXFLAGS += -O1
+endif
+endif
+
 # Propagate options used for target software building to GCC target libs
 HOST_GCC_COMMON_CONF_ENV += CFLAGS_FOR_TARGET="$(GCC_COMMON_TARGET_CFLAGS)"
 HOST_GCC_COMMON_CONF_ENV += CXXFLAGS_FOR_TARGET="$(GCC_COMMON_TARGET_CXXFLAGS)"
-- 
2.34.1

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [Buildroot] [PATCH 1/1] package/gcc: ensure __register_frame is optimized out for glibc
  2022-10-28 22:38 [Buildroot] [PATCH 1/1] package/gcc: ensure __register_frame is optimized out for glibc James Hilliard
@ 2022-10-30  8:30 ` Yann E. MORIN
  2022-11-17  7:53   ` Thomas Petazzoni via buildroot
  0 siblings, 1 reply; 6+ messages in thread
From: Yann E. MORIN @ 2022-10-30  8:30 UTC (permalink / raw)
  To: James Hilliard; +Cc: Giulio Benetti, Romain Naour, Thomas Petazzoni, buildroot

James, All,

On 2022-10-28 16:38 -0600, James Hilliard spake thusly:
> On some architectures when building with -O0 the __register_frame
> symbol fails to get optimized out which can cause linking failures
> when building glibc.
> 
> To fix this set -O1 for GCC target libs when building with glibc
> and BR2_OPTIMIZE_0 on the problematic target architectures.
> 
> Fixes:
>  - http://autobuild.buildroot.net/results/89b/89b6c6924240b7cf82035a844f3573673e91b364
>  - http://autobuild.buildroot.net/results/46f/46f4ec99d2b23d354a4bb5e92123d64f0da6ed27
>  - http://autobuild.buildroot.net/results/839/839f929f700cf181ebdf34389c7806a96f55813e
>  - http://autobuild.buildroot.net/results/0e2/0e202bf53a683930f3cad6edef2a4dea629eaecb
>  - http://autobuild.buildroot.net/results/8a8/8a8c917f597fdcca744e696e19e9300b64004335
>  - http://autobuild.buildroot.net/results/c05/c058b27ed2834dfa633b63ec6c3639ab1e8bf412
>  - http://autobuild.buildroot.net/results/8ba/8ba8882a861cf7df359c23969c09b2be0725b2e5
> 
> Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
> ---
>  package/gcc/gcc.mk | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk
> index ec6f3b550a..a339f77970 100644
> --- a/package/gcc/gcc.mk
> +++ b/package/gcc/gcc.mk
> @@ -103,6 +103,15 @@ GCC_COMMON_TARGET_CFLAGS += -matomic
>  GCC_COMMON_TARGET_CXXFLAGS += -matomic
>  endif
>  
> +# Enable GCC target libs optimizations to optimize out __register_frame
> +# when needed for some architectures when building with glibc.
> +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC)$(BR2_OPTIMIZE_0),yy)
> +ifeq ($(BR2_microblazebe)$(BR2_microblazeel)$(BR2_mips)$(BR2_mipsel)$(BR2_nios2)$(BR2_or1k)$(BR2_sh),y)
> +GCC_COMMON_TARGET_CFLAGS += -O1
> +GCC_COMMON_TARGET_CXXFLAGS += -O1
> +endif
> +endif

Should this not be limitied to the intial compiler only? Otherwise, why
would we need it for the final compiler?

Regards,
Yann E. MORIN.

>  # Propagate options used for target software building to GCC target libs
>  HOST_GCC_COMMON_CONF_ENV += CFLAGS_FOR_TARGET="$(GCC_COMMON_TARGET_CFLAGS)"
>  HOST_GCC_COMMON_CONF_ENV += CXXFLAGS_FOR_TARGET="$(GCC_COMMON_TARGET_CXXFLAGS)"
> -- 
> 2.34.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Buildroot] [PATCH 1/1] package/gcc: ensure __register_frame is optimized out for glibc
  2022-10-30  8:30 ` Yann E. MORIN
@ 2022-11-17  7:53   ` Thomas Petazzoni via buildroot
  2022-11-25 14:06     ` Arnout Vandecappelle
  0 siblings, 1 reply; 6+ messages in thread
From: Thomas Petazzoni via buildroot @ 2022-11-17  7:53 UTC (permalink / raw)
  To: Yann E. MORIN; +Cc: Romain Naour, James Hilliard, Giulio Benetti, buildroot

On Sun, 30 Oct 2022 09:30:33 +0100
"Yann E. MORIN" <yann.morin.1998@free.fr> wrote:

> Should this not be limitied to the intial compiler only? Otherwise, why
> would we need it for the final compiler?

I confirm limiting the work-around to gcc-initial works.

However, I have reported the bug to gcc upstream, and they say the
issue is in glibc:

  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107728

To be honest, even after reading multiple times the feedback from the
gcc folks, I'm not entirely sure that I really understand their
explanation nor how to move forward with investigating the issue.

Best regards,

Thomas
-- 
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Buildroot] [PATCH 1/1] package/gcc: ensure __register_frame is optimized out for glibc
  2022-11-17  7:53   ` Thomas Petazzoni via buildroot
@ 2022-11-25 14:06     ` Arnout Vandecappelle
  2022-11-25 14:15       ` Thomas Petazzoni via buildroot
  2022-12-06 22:03       ` Peter Korsgaard
  0 siblings, 2 replies; 6+ messages in thread
From: Arnout Vandecappelle @ 2022-11-25 14:06 UTC (permalink / raw)
  To: Thomas Petazzoni, Yann E. MORIN
  Cc: Giulio Benetti, Romain Naour, James Hilliard, buildroot



On 17/11/2022 08:53, Thomas Petazzoni via buildroot wrote:
> On Sun, 30 Oct 2022 09:30:33 +0100
> "Yann E. MORIN" <yann.morin.1998@free.fr> wrote:
> 
>> Should this not be limitied to the intial compiler only? Otherwise, why
>> would we need it for the final compiler?
> 
> I confirm limiting the work-around to gcc-initial works.
> 
> However, I have reported the bug to gcc upstream, and they say the
> issue is in glibc:
> 
>    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107728

  James previously already reported the problem to glibc:

https://sourceware.org/bugzilla/show_bug.cgi?id=29621

  I picked up the thread in both issues, I was able to narrow the problem down a 
little more, but in the end the conclusion seems to be "We can't support that on 
the glibc side at present."

  So I applied this patch to master, after making two major changes:

- move it to host-gcc-initial only;
- instead of putting the full condition in the .mk file, make a Config.in symbol 
BR2_TOOLCHAIN_HAS_GCC_BUG_107728.

  ... And now I notice I forgot to put the changes I made in the commit message. 
But it's pushed already.

  Anyway, applied to master, thanks!

  Regards,
  Arnout

> 
> To be honest, even after reading multiple times the feedback from the
> gcc folks, I'm not entirely sure that I really understand their
> explanation nor how to move forward with investigating the issue.
> 
> Best regards,
> 
> Thomas
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Buildroot] [PATCH 1/1] package/gcc: ensure __register_frame is optimized out for glibc
  2022-11-25 14:06     ` Arnout Vandecappelle
@ 2022-11-25 14:15       ` Thomas Petazzoni via buildroot
  2022-12-06 22:03       ` Peter Korsgaard
  1 sibling, 0 replies; 6+ messages in thread
From: Thomas Petazzoni via buildroot @ 2022-11-25 14:15 UTC (permalink / raw)
  To: Arnout Vandecappelle
  Cc: James Hilliard, Romain Naour, Giulio Benetti, Yann E. MORIN,
	buildroot

On Fri, 25 Nov 2022 15:06:21 +0100
Arnout Vandecappelle <arnout@mind.be> wrote:

>   James previously already reported the problem to glibc:
> 
> https://sourceware.org/bugzilla/show_bug.cgi?id=29621
> 
>   I picked up the thread in both issues, I was able to narrow the problem down a 
> little more, but in the end the conclusion seems to be "We can't support that on 
> the glibc side at present."
> 
>   So I applied this patch to master, after making two major changes:
> 
> - move it to host-gcc-initial only;
> - instead of putting the full condition in the .mk file, make a Config.in symbol 
> BR2_TOOLCHAIN_HAS_GCC_BUG_107728.
> 
>   ... And now I notice I forgot to put the changes I made in the commit message. 
> But it's pushed already.
> 
>   Anyway, applied to master, thanks!

Thanks for following up on this. I reviewed the change you pushed, and
it looks like the best trade-off. Thanks again!

Thomas
-- 
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Buildroot] [PATCH 1/1] package/gcc: ensure __register_frame is optimized out for glibc
  2022-11-25 14:06     ` Arnout Vandecappelle
  2022-11-25 14:15       ` Thomas Petazzoni via buildroot
@ 2022-12-06 22:03       ` Peter Korsgaard
  1 sibling, 0 replies; 6+ messages in thread
From: Peter Korsgaard @ 2022-12-06 22:03 UTC (permalink / raw)
  To: Arnout Vandecappelle
  Cc: Yann E. MORIN, James Hilliard, Thomas Petazzoni, buildroot,
	Romain Naour, Giulio Benetti

>>>>> "Arnout" == Arnout Vandecappelle <arnout@mind.be> writes:

 > On 17/11/2022 08:53, Thomas Petazzoni via buildroot wrote:
 >> On Sun, 30 Oct 2022 09:30:33 +0100
 >> "Yann E. MORIN" <yann.morin.1998@free.fr> wrote:
 >> 
 >>> Should this not be limitied to the intial compiler only? Otherwise, why
 >>> would we need it for the final compiler?
 >> I confirm limiting the work-around to gcc-initial works.
 >> However, I have reported the bug to gcc upstream, and they say the
 >> issue is in glibc:
 >> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107728

 >  James previously already reported the problem to glibc:

 > https://sourceware.org/bugzilla/show_bug.cgi?id=29621

 >  I picked up the thread in both issues, I was able to narrow the
 >  problem down a little more, but in the end the conclusion seems to be
 > "We can't support that on the glibc side at present."

 >  So I applied this patch to master, after making two major changes:

 > - move it to host-gcc-initial only;
 > - instead of putting the full condition in the .mk file, make a
 >   Config.in symbol BR2_TOOLCHAIN_HAS_GCC_BUG_107728.

 >  ... And now I notice I forgot to put the changes I made in the commit
 >  message. But it's pushed already.

 >  Anyway, applied to master, thanks!

Committed to 2022.08.x and 2022.02.x, thanks.

-- 
Bye, Peter Korsgaard
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-12-06 22:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-10-28 22:38 [Buildroot] [PATCH 1/1] package/gcc: ensure __register_frame is optimized out for glibc James Hilliard
2022-10-30  8:30 ` Yann E. MORIN
2022-11-17  7:53   ` Thomas Petazzoni via buildroot
2022-11-25 14:06     ` Arnout Vandecappelle
2022-11-25 14:15       ` Thomas Petazzoni via buildroot
2022-12-06 22:03       ` Peter Korsgaard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox