]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
efi_loader: access __efi_runtime_rel_start/stop without &
authorIlias Apalodimas <ilias.apalodimas@linaro.org>
Thu, 4 Apr 2024 06:37:37 +0000 (09:37 +0300)
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Mon, 8 Apr 2024 11:05:50 +0000 (13:05 +0200)
A symbol defined in a linker script (e.g. __efi_runtime_rel_start = .;)
is only a symbol, not a variable and should not be dereferenced.
The common practice is either define it as
extern uint32_t __efi_runtime_rel_start or
extern char __efi_runtime_rel_start[] and access it as
&__efi_runtime_rel_start or __efi_runtime_rel_start respectively.

So let's access it properly since we define it as an array

Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
lib/efi_loader/efi_runtime.c

index 9185f1894c475060d43c32f50f235898542ae35c..a61c9a77b13f91d878fdf2c93fa09611a2a8e1bd 100644 (file)
@@ -669,14 +669,14 @@ static __efi_runtime void efi_relocate_runtime_table(ulong offset)
 void efi_runtime_relocate(ulong offset, struct efi_mem_desc *map)
 {
 #ifdef IS_RELA
-       struct elf_rela *rel = (void*)&__efi_runtime_rel_start;
+       struct elf_rela *rel = (void *)__efi_runtime_rel_start;
 #else
-       struct elf_rel *rel = (void*)&__efi_runtime_rel_start;
+       struct elf_rel *rel = (void *)__efi_runtime_rel_start;
        static ulong lastoff = CONFIG_TEXT_BASE;
 #endif
 
        debug("%s: Relocating to offset=%lx\n", __func__, offset);
-       for (; (ulong)rel < (ulong)&__efi_runtime_rel_stop; rel++) {
+       for (; (uintptr_t)rel < (uintptr_t)__efi_runtime_rel_stop; rel++) {
                ulong base = CONFIG_TEXT_BASE;
                ulong *p;
                ulong newaddr;