Skip to contentSkip to conversation

systemd: Build with LTO

PATCH New Alexey Brodkin 2 participants 2 messages Oct 9, 2018

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 systemd: Build with LTO

Usage of LTO allows to shave off some size of the binaries. For example libsystemd for Aarch64:
libsystemd.so.0.23.0-LTO - 467K
libsystemd.so.0.23.0-no-LTO - 523K

Build-tetsed for ARC and ARM, run-tested on ARC.

Prerequisite is fix for Meson:
https://patchwork.ozlabs.org/patch/981496/

Cc Thomas Petazzoni <[email protected]>
Cc Yann E. MORIN <[email protected]>
Cc Peter Korsgaard <[email protected]>
Cc Romain Naour <[email protected]>
Cc Jeremy Rosen <[email protected]>
---
 package/systemd/systemd.mk | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
package/systemd/systemd.mk +2 -1
index 4813496670..ebd29c89b0 100644
@@ -38,7 +38,8 @@ SYSTEMD_CONF_OPTS += \
 	-Dsulogin-path=/usr/sbin/sulogin \
 	-Dmount-path=/usr/bin/mount \
 	-Dumount-path=/usr/bin/umount \
-	-Dnobody-group=nogroup
+	-Dnobody-group=nogroup \
+	-Db_lto=true
 
 # disable unsupported features for non-glibc toolchains
 ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y)
Signature · 1 line
2.16.2
#1 lore raw

PATCH 1/1 systemd: Build with LTO

Hello,

package/systemd/systemd.mk SYSTEMD_CONF_OPTS += \ · line 42

Quoted 11 lines · Alexey Brodkin
package/systemd/systemd.mk +2 -1
index 4813496670..ebd29c89b0 100644
@@ -38,7 +38,8 @@ SYSTEMD_CONF_OPTS += \
 	-Dsulogin-path=/usr/sbin/sulogin \
 	-Dmount-path=/usr/bin/mount \
 	-Dumount-path=/usr/bin/umount \
-	-Dnobody-group=nogroup
+	-Dnobody-group=nogroup \
+	-Db_lto=true

I don't think we can do this unconditionally. We have a bunch of options such as BR2_BINUTILS_ENABLE_LTO and BR2_GCC_ENABLE_LTO to enable LTO support in the internal toolchain, and we don't today have a way to know if the external toolchain provided supports LTO or not.

So this needs a much more generic solution:

- A global Config.in option to enable/disable usage of LTO. It will have to interact with the toolchain LTO support.

- An option that tells whether the toolchain supports LTO. For internal toolchains, it's simply selected by BR2_GCC_ENABLE_LTO. For external toolchains, we need a check to verify that the toolchain is LTO + a visible option for custom external toolchains.

So: yes for using LTO, but we need something more generic.

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com