[PATCH u-boot 14/39] lib: crc32: make the crc_table variable non-const

Marek Vasut marex at denx.de
Sun Mar 7 05:46:24 CET 2021


On 3/7/21 5:25 AM, 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.
> 
> Make this variable non-const in order to fix this.

This does not look right, the crc32 array is constant.
Maybe what you want to do instead if create some __efi_constant_data 
section ?

[...]

> diff --git a/lib/crc32.c b/lib/crc32.c
> index e9be3bf386..c033449cff 100644
> --- a/lib/crc32.c
> +++ b/lib/crc32.c
> @@ -88,7 +88,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 uint32_t __efi_runtime_data 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