diff mbox series

lto: disable for expect and add DEBUG_PREFIX_MAP to ldflags

Message ID 20260331081246.73406-1-thomas.perrot@bootlin.com
State New
Headers show
Series lto: disable for expect and add DEBUG_PREFIX_MAP to ldflags | expand

Commit Message

Thomas Perrot March 31, 2026, 8:12 a.m. UTC
From: Thomas Perrot <thomas.perrot@bootlin.com>

Disable LTO for the expect package and append DEBUG_PREFIX_MAP to
TARGET_LDFLAGS when LTO is enabled, ensuring debug info remapping
is applied consistently alongside LTO flags.

Signed-off-by: Thomas Perrot <thomas.perrot@bootlin.com>
---
 meta/conf/distro/include/lto.inc | 1 +
 1 file changed, 1 insertion(+)

Comments

Richard Purdie March 31, 2026, 2:12 p.m. UTC | #1
On Tue, 2026-03-31 at 10:12 +0200, Thomas Perrot via
lists.openembedded.org wrote:
> From: Thomas Perrot <thomas.perrot@bootlin.com>
> 
> Disable LTO for the expect package and append DEBUG_PREFIX_MAP to
> TARGET_LDFLAGS when LTO is enabled, ensuring debug info remapping
> is applied consistently alongside LTO flags.
> 
> Signed-off-by: Thomas Perrot <thomas.perrot@bootlin.com>
> ---
>  meta/conf/distro/include/lto.inc | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/meta/conf/distro/include/lto.inc
> b/meta/conf/distro/include/lto.inc
> index 8752249685a4..c66dfc5a8074 100644
> --- a/meta/conf/distro/include/lto.inc
> +++ b/meta/conf/distro/include/lto.inc
> @@ -4,6 +4,7 @@
>  #
>  
>  # Disable LTO for following packages
> +LTO:pn-expect = ""
>  LTO:pn-glibc = ""
>  LTO:pn-gcc-runtime = ""
>  LTO:pn-libgcc-initial = ""
> 

Is the commit message still correct for this? it doesn't add
DEBUG_PREFIX_MAP?

Cheers,

Richard
Thomas Perrot March 31, 2026, 2:17 p.m. UTC | #2
Hello Richard,

On Tue, 2026-03-31 at 15:12 +0100, Richard Purdie wrote:
> On Tue, 2026-03-31 at 10:12 +0200, Thomas Perrot via
> lists.openembedded.org wrote:
> > From: Thomas Perrot <thomas.perrot@bootlin.com>
> > 
> > Disable LTO for the expect package and append DEBUG_PREFIX_MAP to
> > TARGET_LDFLAGS when LTO is enabled, ensuring debug info remapping
> > is applied consistently alongside LTO flags.
> > 
> > Signed-off-by: Thomas Perrot <thomas.perrot@bootlin.com>
> > ---
> >  meta/conf/distro/include/lto.inc | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/meta/conf/distro/include/lto.inc
> > b/meta/conf/distro/include/lto.inc
> > index 8752249685a4..c66dfc5a8074 100644
> > --- a/meta/conf/distro/include/lto.inc
> > +++ b/meta/conf/distro/include/lto.inc
> > @@ -4,6 +4,7 @@
> >  #
> >  
> >  # Disable LTO for following packages
> > +LTO:pn-expect = ""
> >  LTO:pn-glibc = ""
> >  LTO:pn-gcc-runtime = ""
> >  LTO:pn-libgcc-initial = ""
> > 
> 
> Is the commit message still correct for this? it doesn't add
> DEBUG_PREFIX_MAP?
> 

Sorry, I forgot to update the commit message when I modified the
commit.

I will submit a v2 with the correct commit message.

Kind regards,
Thomas Perrot

> Cheers,
> 
> Richard
Jörg Sommer March 31, 2026, 3:40 p.m. UTC | #3
Thomas Perrot via lists.openembedded.org schrieb am Di 31. Mär, 10:12 (+0200):
> From: Thomas Perrot <thomas.perrot@bootlin.com>
> 
> Disable LTO for the expect package and append DEBUG_PREFIX_MAP to
> TARGET_LDFLAGS when LTO is enabled, ensuring debug info remapping
> is applied consistently alongside LTO flags.
> 
> Signed-off-by: Thomas Perrot <thomas.perrot@bootlin.com>
> ---
>  meta/conf/distro/include/lto.inc | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/meta/conf/distro/include/lto.inc b/meta/conf/distro/include/lto.inc
> index 8752249685a4..c66dfc5a8074 100644
> --- a/meta/conf/distro/include/lto.inc
> +++ b/meta/conf/distro/include/lto.inc
> @@ -4,6 +4,7 @@
>  #
>  
>  # Disable LTO for following packages
> +LTO:pn-expect = ""

I suspect this is due to the gcc bug not because LTO is unsuitable for
expect. Might it be a good idea to move all excludes due to the gcc bug in
its own block? This would make it easier to revert them when the bug gets
resolved.

>  LTO:pn-glibc = ""
>  LTO:pn-gcc-runtime = ""
>  LTO:pn-libgcc-initial = ""
> -- 
> 2.53.0
> 

> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: Every message in topics or hashtags you are following is emailed to you.
> The first message of every new thread is also emailed to you.
> You automatically follow any topics you start or reply to.
> View/Reply Online (#234270): https://lists.openembedded.org/g/openembedded-core/message/234270
> Follow This Topic: https://lists.openembedded.org/ft/118593189/7646358
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [joerg.sommer@navimatix.de]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Khem Raj March 31, 2026, 7:45 p.m. UTC | #4
On Tue, Mar 31, 2026 at 8:40 AM Jörg Sommer via lists.openembedded.org
<joerg.sommer=navimatix.de@lists.openembedded.org> wrote:

> Thomas Perrot via lists.openembedded.org schrieb am Di 31. Mär, 10:12
> (+0200):
> > From: Thomas Perrot <thomas.perrot@bootlin.com>
> >
> > Disable LTO for the expect package and append DEBUG_PREFIX_MAP to
> > TARGET_LDFLAGS when LTO is enabled, ensuring debug info remapping
> > is applied consistently alongside LTO flags.
> >
> > Signed-off-by: Thomas Perrot <thomas.perrot@bootlin.com>
> > ---
> >  meta/conf/distro/include/lto.inc | 1 +
> >  1 file changed, 1 insertion(+)
> >
> > diff --git a/meta/conf/distro/include/lto.inc
> b/meta/conf/distro/include/lto.inc
> > index 8752249685a4..c66dfc5a8074 100644
> > --- a/meta/conf/distro/include/lto.inc
> > +++ b/meta/conf/distro/include/lto.inc
> > @@ -4,6 +4,7 @@
> >  #
> >
> >  # Disable LTO for following packages
> > +LTO:pn-expect = ""
>
> I suspect this is due to the gcc bug not because LTO is unsuitable for
> expect. Might it be a good idea to move all excludes due to the gcc bug in
> its own block? This would make it easier to revert them when the bug gets
> resolved.
>
>
I also wonder if the issue is gcc specific and works with TOOLCHAIN =
"clang"


> >  LTO:pn-glibc = ""
> >  LTO:pn-gcc-runtime = ""
> >  LTO:pn-libgcc-initial = ""
> > --
> > 2.53.0
> >
>
> >
> >
> >
>
> --
> Navimatix GmbH           T: 03641 - 327 99 0
> Tatzendpromenade 2       F: 03641 - 526 306
> 07745 Jena               www.navimatix.de
>
> Geschäftsführer: Steffen Späthe, Jan Rommeley
> Registergericht: Amtsgericht Jena, HRB 501480
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#234304):
> https://lists.openembedded.org/g/openembedded-core/message/234304
> Mute This Topic: https://lists.openembedded.org/mt/118593189/1997914
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
Thomas Perrot March 31, 2026, 8:27 p.m. UTC | #5
Hello,

On Tue, 2026-03-31 at 12:45 -0700, Khem Raj via lists.openembedded.org
wrote:
> 
> 
> On Tue, Mar 31, 2026 at 8:40 AM Jörg Sommer via
> lists.openembedded.org
> <joerg.sommer=navimatix.de@lists.openembedded.org> wrote:
> > Thomas Perrot via lists.openembedded.org schrieb am Di 31. Mär,
> > 10:12 (+0200):
> > > From: Thomas Perrot <thomas.perrot@bootlin.com>
> > > 
> > > Disable LTO for the expect package and append DEBUG_PREFIX_MAP to
> > > TARGET_LDFLAGS when LTO is enabled, ensuring debug info remapping
> > > is applied consistently alongside LTO flags.
> > > 
> > > Signed-off-by: Thomas Perrot <thomas.perrot@bootlin.com>
> > > ---
> > >  meta/conf/distro/include/lto.inc | 1 +
> > >  1 file changed, 1 insertion(+)
> > > 
> > > diff --git a/meta/conf/distro/include/lto.inc
> > b/meta/conf/distro/include/lto.inc
> > > index 8752249685a4..c66dfc5a8074 100644
> > > --- a/meta/conf/distro/include/lto.inc
> > > +++ b/meta/conf/distro/include/lto.inc
> > > @@ -4,6 +4,7 @@
> > >  #
> > >  
> > >  # Disable LTO for following packages
> > > +LTO:pn-expect = ""
> > 
> > I suspect this is due to the gcc bug not because LTO is unsuitable
> > for
> > expect. Might it be a good idea to move all excludes due to the gcc
> > bug in
> > its own block? This would make it easier to revert them when the
> > bug gets
> > resolved.
> > 
> > 
> 
> 
> I also wonder if the issue is gcc specific and works with TOOLCHAIN =
> "clang"

I investigated further and can confirm your suspicion, this is indeed a
GCC bug,
not an incompatibility between LTO and expect.

                                                                                                                                                                                                                                                                                                                              
With -v added to LDFLAGS, I verified that -ffile-prefix-map flags 
are correctly passed to lto1. However, the raw TMPDIR path does not
come from expect's own compilation, it leaks from tcl8 via the 
.debug_line_str section:

$ readelf --debug-dump=line libexpect5.45.4.so | grep '/src/build' 
0 (indirect line string, offset: 0x7de): 
/src/build/tmp/work/.../tcl8/8.6.17/build 
                                                                                                                                                                                                                                                                                                                              
During LTO, when GCC incorporates debug info from a linked dependency
(tcl8 here), the directory entries in .debug_line_str are not subject 
to prefix remapping. DW_AT_comp_dir is correctly remapped, but 
.debug_line_str is not. 
                                                                                                                                                                                                                                                                                                                              
This is not expect-specific, any package linking against tcl8 with LTO 
could be affected.

                                                                                                                                                                                                                                                                                                                              
Your suggestion to group packages disabled due to this GCC bug 
in a separate block, I think it's a good idea.

Kind regards,
Thomas

>  
> > >  LTO:pn-glibc = ""
> > >  LTO:pn-gcc-runtime = ""
> > >  LTO:pn-libgcc-initial = ""
> > > -- 
> > > 2.53.0
> > > 
> > 
> > > 
> > > 
> > > 
> > 
> > 
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#234313):
> > https://lists.openembedded.org/g/openembedded-core/message/234313
> > Mute This Topic:
> > https://lists.openembedded.org/mt/118593189/5443093
> > Group Owner: openembedded-core+owner@lists.openembedded.org
> > Unsubscribe:
> > https://lists.openembedded.org/g/openembedded-core/unsub [
> > thomas.perrot@bootlin.com]
> > -=-=-=-=-=-=-=-=-=-=-=-
> >
diff mbox series

Patch

diff --git a/meta/conf/distro/include/lto.inc b/meta/conf/distro/include/lto.inc
index 8752249685a4..c66dfc5a8074 100644
--- a/meta/conf/distro/include/lto.inc
+++ b/meta/conf/distro/include/lto.inc
@@ -4,6 +4,7 @@ 
 #
 
 # Disable LTO for following packages
+LTO:pn-expect = ""
 LTO:pn-glibc = ""
 LTO:pn-gcc-runtime = ""
 LTO:pn-libgcc-initial = ""