Re: linux-next: Tree for May 31 (riscv: arch/riscv/kernel/elf_kexec.c)

From: Randy Dunlap
Date: Tue May 31 2022 - 15:52:49 EST



838b3e28488f7: RISC-V: Load purgatory in kexec_file


On 5/30/22 21:54, Stephen Rothwell wrote:
> Hi all,
>
> Note: please do not add any v5.20 material to your linux-next included
> branches until after v5.19-rc1 has been related.
>
> Changes since 20220527:
>

When CONFIG_MODULES is not set/enabled:
(oh, also CONFIG_MMU is not set)


../arch/riscv/kernel/elf_kexec.c:346:5: error: redefinition of 'arch_kexec_apply_relocations_add'
346 | int arch_kexec_apply_relocations_add(struct purgatory_info *pi,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../arch/riscv/kernel/elf_kexec.c:17:
../include/linux/kexec.h:236:1: note: previous definition of 'arch_kexec_apply_relocations_add' with type 'int(struct purgatory_info *, Elf64_Shdr *, const Elf64_Shdr *, const Elf64_Shdr *)' {aka 'int(struct purgatory_info *, struct elf64_shdr *, const struct elf64_shdr *, const struct elf64_shdr *)'}
236 | arch_kexec_apply_relocations_add(struct purgatory_info *pi, Elf_Shdr *section,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../arch/riscv/kernel/elf_kexec.c: In function 'arch_kexec_apply_relocations_add':
../arch/riscv/kernel/elf_kexec.c:353:9: error: unknown type name 'Elf_Rela'; did you mean 'Elf64_Rela'?
353 | Elf_Rela *relas;
| ^~~~~~~~
| Elf64_Rela
In file included from ../arch/riscv/include/asm/elf.h:11,
from ../include/linux/elf.h:6,
from ../include/linux/module.h:19,
from ../arch/riscv/kernel/elf_kexec.c:15:
../arch/riscv/kernel/elf_kexec.c:371:44: error: request for member 'r_info' in something not a structure or union
371 | sym += ELF64_R_SYM(relas[i].r_info);
| ^
../include/uapi/linux/elf.h:163:43: note: in definition of macro 'ELF64_R_SYM'
163 | #define ELF64_R_SYM(i) ((i) >> 32)
| ^
../arch/riscv/kernel/elf_kexec.c:380:32: error: request for member 'r_offset' in something not a structure or union
380 | loc += relas[i].r_offset;
| ^
../arch/riscv/kernel/elf_kexec.c:393:32: error: request for member 'r_addend' in something not a structure or union
393 | val += relas[i].r_addend;
| ^
../arch/riscv/kernel/elf_kexec.c:395:51: error: request for member 'r_offset' in something not a structure or union
395 | addr = section->sh_addr + relas[i].r_offset;
| ^
In file included from ../arch/riscv/include/asm/elf.h:11,
from ../include/linux/elf.h:6,
from ../include/linux/module.h:19,
from ../arch/riscv/kernel/elf_kexec.c:15:
../arch/riscv/kernel/elf_kexec.c:397:47: error: request for member 'r_info' in something not a structure or union
397 | r_type = ELF64_R_TYPE(relas[i].r_info);
| ^
../include/uapi/linux/elf.h:164:43: note: in definition of macro 'ELF64_R_TYPE'
164 | #define ELF64_R_TYPE(i) ((i) & 0xffffffff)
| ^


Full randconfig file is attached.

--
~Randy

Attachment: config-r3359.gz
Description: application/gzip