diff mbox series

[v4,1/1] boot/uboot/uboot.mk: add binary u-boot.elf support

Message ID 20221123143126.17843-1-neal.frager@amd.com
State Accepted
Headers show
Series [v4,1/1] boot/uboot/uboot.mk: add binary u-boot.elf support | expand

Commit Message

Neal Frager Nov. 23, 2022, 2:31 p.m. UTC
If a user requests a u-boot binary in elf format,
they may actually want the stripped u-boot.elf version.
This patch provides the stripped u-boot.elf binary.

Signed-off-by: Neal Frager <neal.frager@amd.com>
---
V1->V2:
  - reduced scope to only 64-bit ARM arch platforms
  - non-ARM platforms may not have a u-boot.elf by default
V2->V3:
  - test and verify u-boot.elf exists before copying
V3->V4:
  - added a new BR2_TARGET_UBOOT_FORMAT_BIN_ELF config
---
 boot/uboot/Config.in | 8 ++++++++
 boot/uboot/uboot.mk  | 4 ++++
 2 files changed, 12 insertions(+)

Comments

Thomas Petazzoni Nov. 23, 2022, 10:30 p.m. UTC | #1
Hello Neal,

On Wed, 23 Nov 2022 07:31:26 -0700
Neal Frager via buildroot <buildroot@buildroot.org> wrote:

> If a user requests a u-boot binary in elf format,
> they may actually want the stripped u-boot.elf version.
> This patch provides the stripped u-boot.elf binary.
> 
> Signed-off-by: Neal Frager <neal.frager@amd.com>

I've applied to next, after doing some further fixes.

>  config BR2_TARGET_UBOOT_FORMAT_ELF
> +	bool "u-boot"
> +	help
> +	  Configures the u-boot ELF file with debug symbols.

This option does not "configure", it "installs". Also, I'm not sure
having debugging symbols in u-boot is guaranteed, I suppose it depends
on whether debugging is enabled or not. So I changed this to:

+         Install the u-boot image, which is directly the ELF binary
+         for the main U-Boot, potentially with debugging symbols.

> +config BR2_TARGET_UBOOT_FORMAT_BIN_ELF
>  	bool "u-boot.elf"
> +	help
> +	  Configures the u-boot.elf binary version of ELF file.
> +	  Debug symbols are not included in this ELF file.

So I researched a bit more, and this u-boot.elf is produced when
CONFIG_REMAKE_ELF=y in U-Boot. So I changed this to:

+config BR2_TARGET_UBOOT_FORMAT_REMAKE_ELF
        bool "u-boot.elf"
+       help
+         Install the u-boot.elf image, which is produced when
+         CONFIG_REMAKE_ELF=y. It is an ELF image (u-boot.elf)
+         produced from the raw U-Boot binary (u-boot.bin), which may
+         already have been statically relocated and may already have
+         a device-tree appended to it.

The description was taken from the CONFIG_REMAKE_ELF help text in U-Boot.

Best regards,

Thomas
yegorslists--- via buildroot Nov. 24, 2022, 10:24 a.m. UTC | #2
Hi Thomas,

> If a user requests a u-boot binary in elf format, they may actually 
> want the stripped u-boot.elf version.
> This patch provides the stripped u-boot.elf binary.
> 
> Signed-off-by: Neal Frager <neal.frager@amd.com>

> I've applied to next, after doing some further fixes.

Great, thanks!

>  config BR2_TARGET_UBOOT_FORMAT_ELF
> +	bool "u-boot"
> +	help
> +	  Configures the u-boot ELF file with debug symbols.

> This option does not "configure", it "installs". Also, I'm not sure having debugging symbols in u-boot is guaranteed, I suppose it depends on whether debugging is enabled or not. So I changed this to:

> +         Install the u-boot image, which is directly the ELF binary
> +         for the main U-Boot, potentially with debugging symbols.

Good point.  Thanks for correcting this.

> +config BR2_TARGET_UBOOT_FORMAT_BIN_ELF
>  	bool "u-boot.elf"
> +	help
> +	  Configures the u-boot.elf binary version of ELF file.
> +	  Debug symbols are not included in this ELF file.

> So I researched a bit more, and this u-boot.elf is produced when CONFIG_REMAKE_ELF=y in U-Boot. So I changed this to:

> +config BR2_TARGET_UBOOT_FORMAT_REMAKE_ELF
>        bool "u-boot.elf"
> +       help
> +         Install the u-boot.elf image, which is produced when
> +         CONFIG_REMAKE_ELF=y. It is an ELF image (u-boot.elf)
> +         produced from the raw U-Boot binary (u-boot.bin), which may
> +         already have been statically relocated and may already have
> +         a device-tree appended to it.

> The description was taken from the CONFIG_REMAKE_ELF help text in U-Boot.

I agree that using a name that matches the u-boot config option is the right thing to do.  Thanks for verifying this!

Best regards,
Neal Frager
AMD
diff mbox series

Patch

diff --git a/boot/uboot/Config.in b/boot/uboot/Config.in
index 557472b58b..b7591d4542 100644
--- a/boot/uboot/Config.in
+++ b/boot/uboot/Config.in
@@ -277,7 +277,15 @@  config BR2_TARGET_UBOOT_FORMAT_NAND_BIN
 	bool "u-boot-nand.bin"
 
 config BR2_TARGET_UBOOT_FORMAT_ELF
+	bool "u-boot"
+	help
+	  Configures the u-boot ELF file with debug symbols.
+
+config BR2_TARGET_UBOOT_FORMAT_BIN_ELF
 	bool "u-boot.elf"
+	help
+	  Configures the u-boot.elf binary version of ELF file.
+	  Debug symbols are not included in this ELF file.
 
 config BR2_TARGET_UBOOT_FORMAT_IMG
 	bool "u-boot.img"
diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk
index 9e073daa38..55ed6b1ba2 100644
--- a/boot/uboot/uboot.mk
+++ b/boot/uboot/uboot.mk
@@ -60,6 +60,10 @@  UBOOT_MAKE_TARGET += mdbtrick
 endif
 endif
 
+ifeq ($(BR2_TARGET_UBOOT_FORMAT_BIN_ELF),y)
+UBOOT_BINS += u-boot.elf
+endif
+
 # Call 'make all' unconditionally
 UBOOT_MAKE_TARGET += all