diff mbox series

lto: disable LTO for e2fsprogs

Message ID 20260330230727.1380122-1-thomas.perrot@bootlin.com
State Under Review
Headers show
Series lto: disable LTO for e2fsprogs | expand

Commit Message

Thomas Perrot March 30, 2026, 11:07 p.m. UTC
From: Thomas Perrot <thomas.perrot@bootlin.com>

Fat LTO objects embed original source paths in .gnu.lto_* IR sections
which are not remapped by -ffile-prefix-map. This causes buildpaths QA
failures for libss.a and libext2fs.a in the e2fsprogs-staticdev package.

Disable LTO for e2fsprogs to prevent TMPDIR references from leaking into
the installed static libraries.

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

Comments

Jörg Sommer April 1, 2026, 5:39 a.m. UTC | #1
Thomas Perrot via lists.openembedded.org schrieb am Di 31. Mär, 01:07 (+0200):
> From: Thomas Perrot <thomas.perrot@bootlin.com>
> 
> Fat LTO objects embed original source paths in .gnu.lto_* IR sections
> which are not remapped by -ffile-prefix-map. This causes buildpaths QA
> failures for libss.a and libext2fs.a in the e2fsprogs-staticdev package.
> 
> Disable LTO for e2fsprogs to prevent TMPDIR references from leaking into
> the installed static libraries.

For e2fsprogs this was a patch I've used to fix the LTO problem. Feel free
to take it:

diff --git c/recipes/e2fsprogs/e2fsprogs/lto.patch i/recipes/e2fsprogs/e2fsprogs/lto.patch
new file mode 100644
index 0000000..cf5c076
--- /dev/null
+++ i/recipes/e2fsprogs/e2fsprogs/lto.patch
@@ -0,0 +1,38 @@
+Upstream-Status: Inappropriate [ TODO ]
+
+diff --git i/lib/ext2fs/Makefile.in w/lib/ext2fs/Makefile.in
+index e9a6ced2..998ccd19 100644
+--- i/lib/ext2fs/Makefile.in
++++ w/lib/ext2fs/Makefile.in
+@@ -262,11 +262,11 @@ all:: ext2fs.pc
+ 
+ .c.o:
+ 	$(E) "	CC $<"
+-	$(Q) $(CC) $(ALL_CFLAGS_STLIB) -c $< -o $@
++	$(Q) $(CC) $(ALL_CFLAGS_STLIB) -c ./$< -o $@
+ 	$(Q) $(CHECK_CMD) $(ALL_CFLAGS) $<
+ 	$(Q) $(CPPCHECK_CMD) $(CPPFLAGS) $<
+ @PROFILE_CMT@	$(Q) $(CC) $(ALL_CFLAGS_STLIB) -g -pg -o profiled/$*.o -c $<
+-@ELF_CMT@	$(Q) $(CC) $(ALL_CFLAGS_SHLIB) -fPIC -shared -o elfshared/$*.o -c $<
++@ELF_CMT@	$(Q) $(CC) $(ALL_CFLAGS_SHLIB) -fPIC -shared -o elfshared/$*.o -c ./$<
+ @BSDLIB_CMT@	$(Q) $(CC) $(ALL_CFLAGS_SHLIB) $(BSDLIB_PIC_FLAG) -o pic/$*.o -c $<
+ 
+ DISTFILES= Makefile *.c *.h image
+diff --git i/lib/ss/Makefile.in w/lib/ss/Makefile.in
+index bb504189..9d8ec595 100644
+--- i/lib/ss/Makefile.in
++++ w/lib/ss/Makefile.in
+@@ -34,11 +34,11 @@ COMPILE_ET=	_ET_DIR_OVERRIDE=$(srcdir)/../et ../et/compile_et
+ 
+ .c.o:
+ 	$(E) "	CC $<"
+-	$(Q) $(CC) $(ALL_CFLAGS_STLIB) -c $<
++	$(Q) $(CC) $(ALL_CFLAGS_STLIB) -c ./$<
+ 	$(Q) $(CHECK_CMD) $(ALL_CFLAGS) $<
+ 	$(Q) $(CPPCHECK_CMD) $(CPPFLAGS) $<
+ @PROFILE_CMT@	$(Q) $(CC) $(ALL_CFLAGS_STLIB) -g -pg -o profiled/$*.o -c $<
+-@ELF_CMT@	$(Q) $(CC) $(ALL_CFLAGS_SHLIB) -DSHARED_ELF_LIB -fPIC -shared -o elfshared/$*.o -c $<
++@ELF_CMT@	$(Q) $(CC) $(ALL_CFLAGS_SHLIB) -DSHARED_ELF_LIB -fPIC -shared -o elfshared/$*.o -c ./$<
+ @BSDLIB_CMT@	$(Q) $(CC) $(ALL_CFLAGS_SHLIB) $(BSDLIB_PIC_FLAG) -o pic/$*.o -c $<
+ 
+ # for the library
diff --git c/recipes/e2fsprogs/e2fsprogs_%.bbappend i/recipes/e2fsprogs/e2fsprogs_%.bbappend
new file mode 100644
index 0000000..ee75686
--- /dev/null
+++ i/recipes/e2fsprogs/e2fsprogs_%.bbappend
@@ -0,0 +1,5 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
+
+SRC_URI += "\
+    file://lto.patch \
+"
diff mbox series

Patch

diff --git a/meta/conf/distro/include/lto.inc b/meta/conf/distro/include/lto.inc
index 2802d38ad3df..7471360236f9 100644
--- a/meta/conf/distro/include/lto.inc
+++ b/meta/conf/distro/include/lto.inc
@@ -4,6 +4,8 @@ 
 #
 
 # Disable LTO for following packages
+
+LTO:pn-e2fsprogs = "" 
 LTO:pn-expect = "" 
 LTO:pn-glibc = ""
 LTO:pn-gcc-runtime = ""