diff mbox series

[v2] lto: disable expect to workaround GCC LTO debug_line_str bug

Message ID 20260331203154.674733-1-thomas.perrot@bootlin.com
State New
Headers show
Series [v2] lto: disable expect to workaround GCC LTO debug_line_str bug | expand

Commit Message

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

When expect is built with LTO, GCC correctly passes -ffile-prefix-map
to lto1 during link-time recompilation. However, when lto1 incorporates
debug info from a linked dependency (tcl8), the directory entries in
.debug_line_str from that dependency are not subject to prefix
remapping, leaving a raw TMPDIR path in the split debug symbols of
libexpect5.45.4.so:

  .debug_line_str: /src/build/tmp/work/.../tcl8/8.6.17/build

This is specific to packages linking against tcl8 with LTO and is not
an incompatibility between LTO and expect itself.

Signed-off-by: Thomas Perrot <thomas.perrot@bootlin.com>

---
Changes in v2:
- Fix commit message
- Link to v1: https://lore.kernel.org/all/20260331081246.73406-1-thomas.perrot@bootlin.com/
---
 meta/conf/distro/include/lto.inc | 1 +
 1 file changed, 1 insertion(+)

Comments

Khem Raj March 31, 2026, 9:14 p.m. UTC | #1
On Tue, Mar 31, 2026 at 1:34 PM Thomas Perrot via lists.openembedded.org
<thomas.perrot=bootlin.com@lists.openembedded.org> wrote:

> From: Thomas Perrot <thomas.perrot@bootlin.com>
>
> When expect is built with LTO, GCC correctly passes -ffile-prefix-map
> to lto1 during link-time recompilation. However, when lto1 incorporates
> debug info from a linked dependency (tcl8), the directory entries in
> .debug_line_str from that dependency are not subject to prefix
> remapping, leaving a raw TMPDIR path in the split debug symbols of
> libexpect5.45.4.so:
>
>   .debug_line_str: /src/build/tmp/work/.../tcl8/8.6.17/build
>
> This is specific to packages linking against tcl8 with LTO and is not
> an incompatibility between LTO and expect itself.
>
> Signed-off-by: Thomas Perrot <thomas.perrot@bootlin.com>
>
> ---
> Changes in v2:
> - Fix commit message
> - Link to v1:
> https://lore.kernel.org/all/20260331081246.73406-1-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 54983412bc14..8c13601a4df6 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 think, along with package name override, it should use toolchain-gcc
override as well.


>  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 (#234315):
> https://lists.openembedded.org/g/openembedded-core/message/234315
> Mute This Topic: https://lists.openembedded.org/mt/118604439/1997914
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
diff mbox series

Patch

diff --git a/meta/conf/distro/include/lto.inc b/meta/conf/distro/include/lto.inc
index 54983412bc14..8c13601a4df6 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 = ""