[PATCH] ARM: verify size of zImage
Ard Biesheuvel
ard.biesheuvel at linaro.org
Tue Nov 28 08:32:42 PST 2017
(+ Gregory)
On 28 November 2017 at 16:27, Russell King <rmk+kernel at armlinux.org.uk> wrote:
> The linker can sometimes add additional sections to the zImage ELF file
> which results in the zImage binary being larger than expected. This
> causes appended DT blobs to fail.
>
> Verify that the zImage binary is the expected size, and fail the build
> if this is not the case.
>
> Signed-off-by: Russell King <rmk+kernel at armlinux.org.uk>
> ---
> As this patch is different, I've dropped Matthias' tested-by. I'd
> appreciate a replacement, thanks. Also, I seem to remember that
> Ard's toolchain was giving issues - maybe this alternative will
> finally resolve them.
>
$ nm arch/arm/boot/compressed/vmlinux |grep _edata
007b8200 D _edata
007b8200 D _edata_real
Tested-by: Ard Biesheuvel <ard.biesheuvel at linaro.org>
although I don't remember seeing this fail. It think it may have been
Gregory who was having these issues?
> arch/arm/boot/compressed/vmlinux.lds.S | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/arch/arm/boot/compressed/vmlinux.lds.S b/arch/arm/boot/compressed/vmlinux.lds.S
> index e6bf6774c4bb..ed53ca9f482e 100644
> --- a/arch/arm/boot/compressed/vmlinux.lds.S
> +++ b/arch/arm/boot/compressed/vmlinux.lds.S
> @@ -101,6 +101,12 @@ SECTIONS
> * this symbol allows further debug in the near future.
> */
> .image_end (NOLOAD) : {
> + /*
> + * EFI requires that the image is aligned to 512 bytes, and appended
> + * DTB requires that we know where the end of the image is. Ensure
> + * that both are satisfied by ensuring that there are no additional
> + * sections emitted into the decompressor image.
> + */
> _edata_real = .;
> }
>
> @@ -128,3 +134,4 @@ SECTIONS
> .stab.indexstr 0 : { *(.stab.indexstr) }
> .comment 0 : { *(.comment) }
> }
> +ASSERT(_edata_real == _edata, "error: zImage file size is incorrect");
> --
> 2.7.4
>
More information about the linux-arm-kernel
mailing list