[PATCH u-boot v2 14/38] lib: crc32: put the crc_table variable into efi_runtime_rodata section

Heinrich Schuchardt xypron.glpk at gmx.de
Fri Mar 12 17:51:00 CET 2021


On 12.03.21 11:34, Marek Behún wrote:
> When compiling with LTO, the compiler fails with an error saying that
> `crc_table` causes a section type conflict with `efi_var_buf`.
>
> This is because both are declared to be in the same section (via macro
> `__efi_runtime_data`), but one is const while the other is not.
>
> Put this variable into the section .rodata.efi_runtime, instead of
> .data.efi_runtime, via macro __efi_runtime_rodata.
>
> Signed-off-by: Marek Behún <marek.behun at nic.cz>
> Reviewed-by: Marek Vasut <marex at denx.de>

Reviewed-by: Heinrich Schuchardt <xypron.gpk at gmx.de>

> ---
>  lib/crc32.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/lib/crc32.c b/lib/crc32.c
> index e9be3bf386..f2acc107fe 100644
> --- a/lib/crc32.c
> +++ b/lib/crc32.c
> @@ -26,6 +26,7 @@
>  #ifdef USE_HOSTCC
>  #define __efi_runtime
>  #define __efi_runtime_data
> +#define __efi_runtime_rodata
>  #endif
>
>  #define tole(x) cpu_to_le32(x)
> @@ -88,7 +89,7 @@ static void __efi_runtime make_crc_table(void)
>   * Table of CRC-32's of all single-byte values (made by make_crc_table)
>   */
>
> -static const uint32_t __efi_runtime_data crc_table[256] = {
> +static const uint32_t __efi_runtime_rodata crc_table[256] = {
>  tole(0x00000000L), tole(0x77073096L), tole(0xee0e612cL), tole(0x990951baL),
>  tole(0x076dc419L), tole(0x706af48fL), tole(0xe963a535L), tole(0x9e6495a3L),
>  tole(0x0edb8832L), tole(0x79dcb8a4L), tole(0xe0d5e91eL), tole(0x97d2d988L),
>



More information about the U-Boot mailing list