diff mbox series

[U-Boot,v5,1/2] spl: fix linker size check off-by-one errors

Message ID 20190425192240.5925-1-simon.k.r.goldschmidt@gmail.com
State Accepted
Commit 1b1d8c19f5b4b799232eee70e8916cd2491872ec
Delegated to: Tom Rini
Headers show
Series [U-Boot,v5,1/2] spl: fix linker size check off-by-one errors | expand

Commit Message

Simon Goldschmidt April 25, 2019, 7:22 p.m. UTC
This fixes SPL linker script size checks for 3 lds files where the size
checks were implemented as "x < YYY_MAX_SIZE".

Fix the size checks to be "x <= YYY_MAX_SIZE" instead.

Signed-off-by: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
---

Changes in v5:
- added patch to fix linker size checks off-by-one error

 arch/arm/cpu/u-boot-spl.lds                 | 6 +++---
 arch/arm/mach-at91/arm926ejs/u-boot-spl.lds | 4 ++--
 arch/microblaze/cpu/u-boot-spl.lds          | 2 +-
 3 files changed, 6 insertions(+), 6 deletions(-)

Comments

Simon Goldschmidt April 27, 2019, 8:17 p.m. UTC | #1
On 25.04.19 21:22, Simon Goldschmidt wrote:
> This fixes SPL linker script size checks for 3 lds files where the size
> checks were implemented as "x < YYY_MAX_SIZE".
> 
> Fix the size checks to be "x <= YYY_MAX_SIZE" instead.

After updating Ubuntu to 19.04 today, the new 8.3 gcc makes 
smartweb_defconfig fail compiling SPL without this because 
__image_copy_end==0x1000

I guess we're lucky travis uses gcc 7.3... (or, are we?)

Regards,
Simon

> 
> Signed-off-by: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
> ---
> 
> Changes in v5:
> - added patch to fix linker size checks off-by-one error
> 
>   arch/arm/cpu/u-boot-spl.lds                 | 6 +++---
>   arch/arm/mach-at91/arm926ejs/u-boot-spl.lds | 4 ++--
>   arch/microblaze/cpu/u-boot-spl.lds          | 2 +-
>   3 files changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/arm/cpu/u-boot-spl.lds b/arch/arm/cpu/u-boot-spl.lds
> index a2aa93a735..97899a567f 100644
> --- a/arch/arm/cpu/u-boot-spl.lds
> +++ b/arch/arm/cpu/u-boot-spl.lds
> @@ -79,16 +79,16 @@ SECTIONS
>   }
>   
>   #if defined(IMAGE_MAX_SIZE)
> -ASSERT(__image_copy_end - __image_copy_start < (IMAGE_MAX_SIZE), \
> +ASSERT(__image_copy_end - __image_copy_start <= (IMAGE_MAX_SIZE), \
>   	"SPL image too big");
>   #endif
>   
>   #if defined(CONFIG_SPL_BSS_MAX_SIZE)
> -ASSERT(__bss_end - __bss_start < (CONFIG_SPL_BSS_MAX_SIZE), \
> +ASSERT(__bss_end - __bss_start <= (CONFIG_SPL_BSS_MAX_SIZE), \
>   	"SPL image BSS too big");
>   #endif
>   
>   #if defined(CONFIG_SPL_MAX_FOOTPRINT)
> -ASSERT(__bss_end - _start < (CONFIG_SPL_MAX_FOOTPRINT), \
> +ASSERT(__bss_end - _start <= (CONFIG_SPL_MAX_FOOTPRINT), \
>   	"SPL image plus BSS too big");
>   #endif
> diff --git a/arch/arm/mach-at91/arm926ejs/u-boot-spl.lds b/arch/arm/mach-at91/arm926ejs/u-boot-spl.lds
> index 3955bea23a..74f6355229 100644
> --- a/arch/arm/mach-at91/arm926ejs/u-boot-spl.lds
> +++ b/arch/arm/mach-at91/arm926ejs/u-boot-spl.lds
> @@ -52,11 +52,11 @@ SECTIONS
>   }
>   
>   #if defined(IMAGE_MAX_SIZE)
> -ASSERT(__image_copy_end - __start < (IMAGE_MAX_SIZE), \
> +ASSERT(__image_copy_end - __start <= (IMAGE_MAX_SIZE), \
>   	"SPL image too big");
>   #endif
>   
>   #if defined(CONFIG_SPL_BSS_MAX_SIZE)
> -ASSERT(__bss_end - __bss_start < (CONFIG_SPL_BSS_MAX_SIZE), \
> +ASSERT(__bss_end - __bss_start <= (CONFIG_SPL_BSS_MAX_SIZE), \
>   	"SPL image BSS too big");
>   #endif
> diff --git a/arch/microblaze/cpu/u-boot-spl.lds b/arch/microblaze/cpu/u-boot-spl.lds
> index 99c62b51a1..3387eb7189 100644
> --- a/arch/microblaze/cpu/u-boot-spl.lds
> +++ b/arch/microblaze/cpu/u-boot-spl.lds
> @@ -57,6 +57,6 @@ SECTIONS
>   }
>   
>   #if defined(CONFIG_SPL_MAX_FOOTPRINT)
> -ASSERT(__end - _start < (CONFIG_SPL_MAX_FOOTPRINT), \
> +ASSERT(__end - _start <= (CONFIG_SPL_MAX_FOOTPRINT), \
>           "SPL image plus BSS too big");
>   #endif
>
Tom Rini May 6, 2019, 11:14 a.m. UTC | #2
On Thu, Apr 25, 2019 at 09:22:39PM +0200, Simon Goldschmidt wrote:

> This fixes SPL linker script size checks for 3 lds files where the size
> checks were implemented as "x < YYY_MAX_SIZE".
> 
> Fix the size checks to be "x <= YYY_MAX_SIZE" instead.
> 
> Signed-off-by: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>

Applied to u-boot/master, thanks!
diff mbox series

Patch

diff --git a/arch/arm/cpu/u-boot-spl.lds b/arch/arm/cpu/u-boot-spl.lds
index a2aa93a735..97899a567f 100644
--- a/arch/arm/cpu/u-boot-spl.lds
+++ b/arch/arm/cpu/u-boot-spl.lds
@@ -79,16 +79,16 @@  SECTIONS
 }
 
 #if defined(IMAGE_MAX_SIZE)
-ASSERT(__image_copy_end - __image_copy_start < (IMAGE_MAX_SIZE), \
+ASSERT(__image_copy_end - __image_copy_start <= (IMAGE_MAX_SIZE), \
 	"SPL image too big");
 #endif
 
 #if defined(CONFIG_SPL_BSS_MAX_SIZE)
-ASSERT(__bss_end - __bss_start < (CONFIG_SPL_BSS_MAX_SIZE), \
+ASSERT(__bss_end - __bss_start <= (CONFIG_SPL_BSS_MAX_SIZE), \
 	"SPL image BSS too big");
 #endif
 
 #if defined(CONFIG_SPL_MAX_FOOTPRINT)
-ASSERT(__bss_end - _start < (CONFIG_SPL_MAX_FOOTPRINT), \
+ASSERT(__bss_end - _start <= (CONFIG_SPL_MAX_FOOTPRINT), \
 	"SPL image plus BSS too big");
 #endif
diff --git a/arch/arm/mach-at91/arm926ejs/u-boot-spl.lds b/arch/arm/mach-at91/arm926ejs/u-boot-spl.lds
index 3955bea23a..74f6355229 100644
--- a/arch/arm/mach-at91/arm926ejs/u-boot-spl.lds
+++ b/arch/arm/mach-at91/arm926ejs/u-boot-spl.lds
@@ -52,11 +52,11 @@  SECTIONS
 }
 
 #if defined(IMAGE_MAX_SIZE)
-ASSERT(__image_copy_end - __start < (IMAGE_MAX_SIZE), \
+ASSERT(__image_copy_end - __start <= (IMAGE_MAX_SIZE), \
 	"SPL image too big");
 #endif
 
 #if defined(CONFIG_SPL_BSS_MAX_SIZE)
-ASSERT(__bss_end - __bss_start < (CONFIG_SPL_BSS_MAX_SIZE), \
+ASSERT(__bss_end - __bss_start <= (CONFIG_SPL_BSS_MAX_SIZE), \
 	"SPL image BSS too big");
 #endif
diff --git a/arch/microblaze/cpu/u-boot-spl.lds b/arch/microblaze/cpu/u-boot-spl.lds
index 99c62b51a1..3387eb7189 100644
--- a/arch/microblaze/cpu/u-boot-spl.lds
+++ b/arch/microblaze/cpu/u-boot-spl.lds
@@ -57,6 +57,6 @@  SECTIONS
 }
 
 #if defined(CONFIG_SPL_MAX_FOOTPRINT)
-ASSERT(__end - _start < (CONFIG_SPL_MAX_FOOTPRINT), \
+ASSERT(__end - _start <= (CONFIG_SPL_MAX_FOOTPRINT), \
         "SPL image plus BSS too big");
 #endif