[PATCH u-boot v2.1 38/38] ARM: enable LTO for some boards

Tim Harvey tharvey at gateworks.com
Fri Mar 12 17:34:41 CET 2021


On Fri, Mar 12, 2021 at 5:47 AM Marek Behún <marek.behun at nic.cz> wrote:
>
> Enable LTO for some boards that were tested by people on U-Boot Mailing
> List.
>
> Signed-off-by: Marek Behún <marek.behun at nic.cz>
> Tested-by: Adam Ford <aford173 at gmail.com>
> Tested-by: Pali Rohár <pali at kernel.org>
> Tested-by: Tim Harvey <tharvey at gateworks.com>
> ---
>  configs/am3517_evm_defconfig          | 1 +
>  configs/da850evm_defconfig            | 1 +
>  configs/da850evm_direct_nor_defconfig | 1 +
>  configs/da850evm_nand_defconfig       | 1 +
>  configs/imx6q_logic_defconfig         | 1 +
>  configs/imx8mm_beacon_defconfig       | 1 +
>  configs/imx8mm_venice_defconfig       | 1 +
>  configs/imx8mn_beacon_2g_defconfig    | 1 +
>  configs/imx8mn_beacon_defconfig       | 1 +
>  configs/nokia_rx51_defconfig          | 1 +
>  configs/omap3_logic_defconfig         | 1 +
>  configs/r8a774a1_beacon_defconfig     | 1 +
>  configs/r8a774b1_beacon_defconfig     | 1 +
>  configs/r8a774e1_beacon_defconfig     | 1 +
>  configs/turris_mox_defconfig          | 1 +
>  configs/turris_omnia_defconfig        | 1 +
>  16 files changed, 16 insertions(+)
>
> diff --git a/configs/am3517_evm_defconfig b/configs/am3517_evm_defconfig
> index bae0e0af35..d61eec94a4 100644
> --- a/configs/am3517_evm_defconfig
> +++ b/configs/am3517_evm_defconfig
> @@ -1,3 +1,4 @@
> +CONFIG_LTO=y
>  CONFIG_ARM=y
>  # CONFIG_SPL_USE_ARCH_MEMCPY is not set
>  # CONFIG_SPL_USE_ARCH_MEMSET is not set
> diff --git a/configs/da850evm_defconfig b/configs/da850evm_defconfig
> index 26e76a2929..6ff5e21bc6 100644
> --- a/configs/da850evm_defconfig
> +++ b/configs/da850evm_defconfig
> @@ -1,3 +1,4 @@
> +CONFIG_LTO=y
>  CONFIG_ARM=y
>  CONFIG_SYS_THUMB_BUILD=y
>  CONFIG_ARCH_DAVINCI=y
> diff --git a/configs/da850evm_direct_nor_defconfig b/configs/da850evm_direct_nor_defconfig
> index d3860a963d..06c7ce7c47 100644
> --- a/configs/da850evm_direct_nor_defconfig
> +++ b/configs/da850evm_direct_nor_defconfig
> @@ -1,3 +1,4 @@
> +CONFIG_LTO=y
>  CONFIG_ARM=y
>  CONFIG_ARCH_CPU_INIT=y
>  CONFIG_ARCH_DAVINCI=y
> diff --git a/configs/da850evm_nand_defconfig b/configs/da850evm_nand_defconfig
> index 0d0e9a148d..be737564e1 100644
> --- a/configs/da850evm_nand_defconfig
> +++ b/configs/da850evm_nand_defconfig
> @@ -1,3 +1,4 @@
> +CONFIG_LTO=y
>  CONFIG_ARM=y
>  CONFIG_SYS_THUMB_BUILD=y
>  CONFIG_ARCH_DAVINCI=y
> diff --git a/configs/imx6q_logic_defconfig b/configs/imx6q_logic_defconfig
> index 36dc24d080..0f8aea6983 100644
> --- a/configs/imx6q_logic_defconfig
> +++ b/configs/imx6q_logic_defconfig
> @@ -1,3 +1,4 @@
> +CONFIG_LTO=y
>  CONFIG_ARM=y
>  CONFIG_ARCH_MX6=y
>  CONFIG_SYS_TEXT_BASE=0x17800000
> diff --git a/configs/imx8mm_beacon_defconfig b/configs/imx8mm_beacon_defconfig
> index 045b19f4f3..e8bb44eea6 100644
> --- a/configs/imx8mm_beacon_defconfig
> +++ b/configs/imx8mm_beacon_defconfig
> @@ -1,3 +1,4 @@
> +CONFIG_LTO=y
>  CONFIG_ARM=y
>  CONFIG_ARCH_IMX8M=y
>  CONFIG_SYS_TEXT_BASE=0x40200000
> diff --git a/configs/imx8mm_venice_defconfig b/configs/imx8mm_venice_defconfig
> index a15c3641f6..dff8f64540 100644
> --- a/configs/imx8mm_venice_defconfig
> +++ b/configs/imx8mm_venice_defconfig
> @@ -1,3 +1,4 @@
> +CONFIG_LTO=y
>  CONFIG_ARM=y
>  CONFIG_ARCH_IMX8M=y
>  CONFIG_SYS_TEXT_BASE=0x40200000
> diff --git a/configs/imx8mn_beacon_2g_defconfig b/configs/imx8mn_beacon_2g_defconfig
> index 58b8e49486..1c8cbc2c89 100644
> --- a/configs/imx8mn_beacon_2g_defconfig
> +++ b/configs/imx8mn_beacon_2g_defconfig
> @@ -1,3 +1,4 @@
> +CONFIG_LTO=y
>  CONFIG_ARM=y
>  CONFIG_ARCH_IMX8M=y
>  CONFIG_SYS_TEXT_BASE=0x40200000
> diff --git a/configs/imx8mn_beacon_defconfig b/configs/imx8mn_beacon_defconfig
> index d6a3385d8d..6457b9409a 100644
> --- a/configs/imx8mn_beacon_defconfig
> +++ b/configs/imx8mn_beacon_defconfig
> @@ -1,3 +1,4 @@
> +CONFIG_LTO=y
>  CONFIG_ARM=y
>  CONFIG_ARCH_IMX8M=y
>  CONFIG_SYS_TEXT_BASE=0x40200000
> diff --git a/configs/nokia_rx51_defconfig b/configs/nokia_rx51_defconfig
> index 312ca3a1a9..85ca627790 100644
> --- a/configs/nokia_rx51_defconfig
> +++ b/configs/nokia_rx51_defconfig
> @@ -1,3 +1,4 @@
> +CONFIG_LTO=y
>  CONFIG_ARM=y
>  # CONFIG_SYS_THUMB_BUILD is not set
>  CONFIG_ARCH_OMAP2PLUS=y
> diff --git a/configs/omap3_logic_defconfig b/configs/omap3_logic_defconfig
> index 4e37237b86..cc4b727a2c 100644
> --- a/configs/omap3_logic_defconfig
> +++ b/configs/omap3_logic_defconfig
> @@ -1,3 +1,4 @@
> +CONFIG_LTO=y
>  CONFIG_ARM=y
>  # CONFIG_SPL_USE_ARCH_MEMCPY is not set
>  # CONFIG_SPL_USE_ARCH_MEMSET is not set
> diff --git a/configs/r8a774a1_beacon_defconfig b/configs/r8a774a1_beacon_defconfig
> index 2f45edd92e..9dd5d9192e 100644
> --- a/configs/r8a774a1_beacon_defconfig
> +++ b/configs/r8a774a1_beacon_defconfig
> @@ -1,3 +1,4 @@
> +CONFIG_LTO=y
>  CONFIG_ARM=y
>  CONFIG_ARCH_RMOBILE=y
>  CONFIG_SYS_TEXT_BASE=0x50000000
> diff --git a/configs/r8a774b1_beacon_defconfig b/configs/r8a774b1_beacon_defconfig
> index ca514bb1aa..b7d7f23f5a 100644
> --- a/configs/r8a774b1_beacon_defconfig
> +++ b/configs/r8a774b1_beacon_defconfig
> @@ -1,3 +1,4 @@
> +CONFIG_LTO=y
>  CONFIG_ARM=y
>  CONFIG_ARCH_RMOBILE=y
>  CONFIG_SYS_TEXT_BASE=0x50000000
> diff --git a/configs/r8a774e1_beacon_defconfig b/configs/r8a774e1_beacon_defconfig
> index b89729d92a..3e44edf29f 100644
> --- a/configs/r8a774e1_beacon_defconfig
> +++ b/configs/r8a774e1_beacon_defconfig
> @@ -1,3 +1,4 @@
> +CONFIG_LTO=y
>  CONFIG_ARM=y
>  CONFIG_ARCH_RMOBILE=y
>  CONFIG_SYS_TEXT_BASE=0x50000000
> diff --git a/configs/turris_mox_defconfig b/configs/turris_mox_defconfig
> index f938fbb475..2a351d9180 100644
> --- a/configs/turris_mox_defconfig
> +++ b/configs/turris_mox_defconfig
> @@ -1,3 +1,4 @@
> +CONFIG_LTO=y
>  CONFIG_ARM=y
>  CONFIG_ARCH_CPU_INIT=y
>  CONFIG_ARCH_MVEBU=y
> diff --git a/configs/turris_omnia_defconfig b/configs/turris_omnia_defconfig
> index 4b8843d7be..d7a2ec3592 100644
> --- a/configs/turris_omnia_defconfig
> +++ b/configs/turris_omnia_defconfig
> @@ -1,3 +1,4 @@
> +CONFIG_LTO=y
>  CONFIG_ARM=y
>  CONFIG_ARCH_CPU_INIT=y
>  CONFIG_SPL_SYS_THUMB_BUILD=y
> --
> 2.26.2
>

Marek,

Perhaps I didn't test the property test before as I did not realize
there was a config to be enabled.

Enabling CONFIG_LTO breaks linking the SPL (linking uboot is fine):
  LTO     spl/u-boot-spl
make[2]: *** read jobs pipe: No such file or directory.  Stop.
make[2]: *** Waiting for unfinished jobs....
lto-wrapper: fatal error: make returned 2 exit status
compilation terminated.
/usr/src/venice/buildroot/output/host/lib/gcc/aarch64-buildroot-linux-gnu/9.3.0/../../../../aarch64-buildroot-linux-gnu/bin/ld:
error: lto-wrapper failed
collect2: error: ld returned 1 exit status
scripts/Makefile.spl:461: recipe for target 'spl/u-boot-spl' failed
make[1]: *** [spl/u-boot-spl] Error 1
Makefile:1985: recipe for target 'spl/u-boot-spl' failed
make: *** [spl/u-boot-spl] Error 2

I'm using your lto branch

Best Regards,

Tim


More information about the U-Boot mailing list