binfmt_elf_fdpic: support 64-bit systems
authorGreg Ungerer <gerg@kernel.org>
Tue, 11 Jul 2023 13:07:53 +0000 (23:07 +1000)
committerPalmer Dabbelt <palmer@rivosinc.com>
Wed, 23 Aug 2023 21:17:42 +0000 (14:17 -0700)
commitb922bf04d2c1355633bdefbc2ed5fba1f0d4df07
tree2b363e6d7781c02f5492ef5ed5643faefb617057
parent06c2afb862f9da8dc5efa4b6076a0e48c3fbaaa5
binfmt_elf_fdpic: support 64-bit systems

The binfmt_flat_fdpic code has a number of 32-bit specific data
structures associated with it. Extend it to be able to support and
be used on 64-bit systems as well.

The new code defines a number of key 64-bit variants of the core
elf-fdpic data structures - along side the existing 32-bit sized ones.
A common set of generic named structures are defined to be either
the 32-bit or 64-bit ones as required at compile time. This is a
similar technique to that used in the ELF binfmt loader.

For example:

  elf_fdpic_loadseg is either elf32_fdpic_loadseg or elf64_fdpic_loadseg
  elf_fdpic_loadmap is either elf32_fdpic_loadmap or elf64_fdpic_loadmap

the choice based on ELFCLASS32 or ELFCLASS64.

Signed-off-by: Greg Ungerer <gerg@kernel.org>
Acked-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20230711130754.481209-2-gerg@kernel.org
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
fs/binfmt_elf_fdpic.c
include/linux/elf-fdpic.h
include/uapi/linux/elf-fdpic.h