2019-05-19 05:07:45 -07:00
|
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
2018-07-31 04:39:34 -07:00
|
|
|
|
|
|
|
menu "Executable file formats"
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
config BINFMT_ELF
|
|
|
|
bool "Kernel support for ELF binaries"
|
2018-03-07 15:30:54 -07:00
|
|
|
depends on MMU
|
2016-05-23 16:22:26 -07:00
|
|
|
select ELFCORE
|
2005-04-16 15:20:36 -07:00
|
|
|
default y
|
2020-06-13 09:50:22 -07:00
|
|
|
help
|
2005-04-16 15:20:36 -07:00
|
|
|
ELF (Executable and Linkable Format) is a format for libraries and
|
|
|
|
executables used across different architectures and operating
|
|
|
|
systems. Saying Y here will enable your kernel to run ELF binaries
|
|
|
|
and enlarge it by about 13 KB. ELF support under Linux has now all
|
|
|
|
but replaced the traditional Linux a.out formats (QMAGIC and ZMAGIC)
|
|
|
|
because it is portable (this does *not* mean that you will be able
|
|
|
|
to run executables from different architectures or operating systems
|
|
|
|
however) and makes building run-time libraries very easy. Many new
|
|
|
|
executables are distributed solely in ELF format. You definitely
|
|
|
|
want to say Y here.
|
|
|
|
|
|
|
|
Information about ELF is contained in the ELF HOWTO available from
|
|
|
|
<http://www.tldp.org/docs.html#howto>.
|
|
|
|
|
|
|
|
If you find that after upgrading from Linux kernel 1.2 and saying Y
|
|
|
|
here, you still can't run any ELF binaries (they just crash), then
|
|
|
|
you'll have to install the newest ELF runtime libraries, including
|
|
|
|
ld.so (check the file <file:Documentation/Changes> for location and
|
|
|
|
latest version).
|
|
|
|
|
2022-02-23 20:32:10 -07:00
|
|
|
config BINFMT_ELF_KUNIT_TEST
|
|
|
|
bool "Build KUnit tests for ELF binary support" if !KUNIT_ALL_TESTS
|
|
|
|
depends on KUNIT=y && BINFMT_ELF=y
|
|
|
|
default KUNIT_ALL_TESTS
|
|
|
|
help
|
|
|
|
This builds the ELF loader KUnit tests, which try to gather
|
|
|
|
prior bug fixes into a regression test collection. This is really
|
|
|
|
only needed for debugging. Note that with CONFIG_COMPAT=y, the
|
|
|
|
compat_binfmt_elf KUnit test is also created.
|
|
|
|
|
2008-01-30 05:31:46 -07:00
|
|
|
config COMPAT_BINFMT_ELF
|
2020-12-02 21:56:34 -07:00
|
|
|
def_bool y
|
2008-10-15 22:04:17 -07:00
|
|
|
depends on COMPAT && BINFMT_ELF
|
2016-05-23 16:22:26 -07:00
|
|
|
select ELFCORE
|
2008-01-30 05:31:46 -07:00
|
|
|
|
binfmt_elf: allow arch code to examine PT_LOPROC ... PT_HIPROC headers
MIPS is introducing new variants of its O32 ABI which differ in their
handling of floating point, in order to enable a gradual transition
towards a world where mips32 binaries can take advantage of new hardware
features only available when configured for certain FP modes. In order
to do this ELF binaries are being augmented with a new section that
indicates, amongst other things, the FP mode requirements of the binary.
The presence & location of such a section is indicated by a program
header in the PT_LOPROC ... PT_HIPROC range.
In order to allow the MIPS architecture code to examine the program
header & section in question, pass all program headers in this range
to an architecture-specific arch_elf_pt_proc function. This function
may return an error if the header is deemed invalid or unsuitable for
the system, in which case that error will be returned from
load_elf_binary and upwards through the execve syscall.
A means is required for the architecture code to make a decision once
it is known that all such headers have been seen, but before it is too
late to return from an execve syscall. For this purpose the
arch_check_elf function is added, and called once, after all PT_LOPROC
to PT_HIPROC headers have been passed to arch_elf_pt_proc but before
the code which invoked execve has been lost. This enables the
architecture code to make a decision based upon all the headers present
in an ELF binary and its interpreter, as is required to forbid
conflicting FP ABI requirements between an ELF & its interpreter.
In order to allow data to be stored throughout the calls to the above
functions, struct arch_elf_state is introduced.
Finally a variant of the SET_PERSONALITY macro is introduced which
accepts a pointer to the struct arch_elf_state, allowing it to act
based upon state observed from the architecture specific program
headers.
Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: linux-fsdevel@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/7679/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2014-09-11 00:30:16 -07:00
|
|
|
config ARCH_BINFMT_ELF_STATE
|
|
|
|
bool
|
|
|
|
|
2022-01-31 09:54:52 -07:00
|
|
|
config ARCH_BINFMT_ELF_EXTRA_PHDRS
|
|
|
|
bool
|
|
|
|
|
2020-03-16 09:50:46 -07:00
|
|
|
config ARCH_HAVE_ELF_PROT
|
|
|
|
bool
|
|
|
|
|
2020-03-16 09:50:43 -07:00
|
|
|
config ARCH_USE_GNU_PROPERTY
|
|
|
|
bool
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
config BINFMT_ELF_FDPIC
|
|
|
|
bool "Kernel support for FDPIC ELF binaries"
|
2017-08-10 21:53:39 -07:00
|
|
|
default y if !BINFMT_ELF
|
2023-07-11 06:07:54 -07:00
|
|
|
depends on ARM || ((M68K || RISCV || SUPERH || XTENSA) && !MMU)
|
2016-05-23 16:22:26 -07:00
|
|
|
select ELFCORE
|
2005-04-16 15:20:36 -07:00
|
|
|
help
|
|
|
|
ELF FDPIC binaries are based on ELF, but allow the individual load
|
|
|
|
segments of a binary to be located in memory independently of each
|
|
|
|
other. This makes this format ideal for use in environments where no
|
|
|
|
MMU is available as it still permits text segments to be shared,
|
|
|
|
even if data segments are not.
|
|
|
|
|
|
|
|
It is also possible to run FDPIC ELF binaries on MMU linux also.
|
|
|
|
|
2016-05-23 16:22:26 -07:00
|
|
|
config ELFCORE
|
|
|
|
bool
|
|
|
|
help
|
|
|
|
This option enables kernel/elfcore.o.
|
|
|
|
|
2008-10-18 20:28:23 -07:00
|
|
|
config CORE_DUMP_DEFAULT_ELF_HEADERS
|
|
|
|
bool "Write ELF core dumps with partial segments"
|
2010-10-27 15:34:09 -07:00
|
|
|
default y
|
2009-01-09 17:40:52 -07:00
|
|
|
depends on BINFMT_ELF && ELF_CORE
|
2008-10-18 20:28:23 -07:00
|
|
|
help
|
|
|
|
ELF core dump files describe each memory mapping of the crashed
|
|
|
|
process, and can contain or omit the memory contents of each one.
|
|
|
|
The contents of an unmodified text mapping are omitted by default.
|
|
|
|
|
|
|
|
For an unmodified text mapping of an ELF object, including just
|
|
|
|
the first page of the file in a core dump makes it possible to
|
|
|
|
identify the build ID bits in the file, without paying the i/o
|
|
|
|
cost and disk space to dump all the text. However, versions of
|
|
|
|
GDB before 6.7 are confused by ELF core dump files in this format.
|
|
|
|
|
|
|
|
The core dump behavior can be controlled per process using
|
|
|
|
the /proc/PID/coredump_filter pseudo-file; this setting is
|
2020-04-14 09:48:37 -07:00
|
|
|
inherited. See Documentation/filesystems/proc.rst for details.
|
2008-10-18 20:28:23 -07:00
|
|
|
|
|
|
|
This config option changes the default setting of coredump_filter
|
2010-10-27 15:34:09 -07:00
|
|
|
seen at boot time. If unsure, say Y.
|
2008-10-18 20:28:23 -07:00
|
|
|
|
2013-04-30 15:27:44 -07:00
|
|
|
config BINFMT_SCRIPT
|
|
|
|
tristate "Kernel support for scripts starting with #!"
|
|
|
|
default y
|
|
|
|
help
|
|
|
|
Say Y here if you want to execute interpreted scripts starting with
|
|
|
|
#! followed by the path to an interpreter.
|
|
|
|
|
|
|
|
You can build this support as a module; however, until that module
|
|
|
|
gets loaded, you cannot run scripts. Thus, if you want to load this
|
|
|
|
module from an initramfs, the portion of the initramfs before loading
|
|
|
|
this module must consist of compiled binaries only.
|
|
|
|
|
|
|
|
Most systems will not boot if you say M or N here. If unsure, say Y.
|
|
|
|
|
2019-06-13 00:08:57 -07:00
|
|
|
config ARCH_HAS_BINFMT_FLAT
|
|
|
|
bool
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
config BINFMT_FLAT
|
2008-04-29 00:59:02 -07:00
|
|
|
bool "Kernel support for flat binaries"
|
2019-06-13 00:08:57 -07:00
|
|
|
depends on ARCH_HAS_BINFMT_FLAT
|
2005-04-16 15:20:36 -07:00
|
|
|
help
|
|
|
|
Support uClinux FLAT format binaries.
|
|
|
|
|
2019-06-13 00:08:51 -07:00
|
|
|
config BINFMT_FLAT_ARGVP_ENVP_ON_STACK
|
|
|
|
bool
|
|
|
|
|
2019-06-13 00:08:50 -07:00
|
|
|
config BINFMT_FLAT_OLD_ALWAYS_RAM
|
|
|
|
bool
|
|
|
|
|
2021-04-16 18:10:08 -07:00
|
|
|
config BINFMT_FLAT_NO_DATA_START_OFFSET
|
|
|
|
bool
|
|
|
|
|
2019-06-13 00:08:58 -07:00
|
|
|
config BINFMT_FLAT_OLD
|
|
|
|
bool "Enable support for very old legacy flat binaries"
|
|
|
|
depends on BINFMT_FLAT
|
|
|
|
help
|
|
|
|
Support decade old uClinux FLAT format binaries. Unless you know
|
|
|
|
you have some of those say N here.
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
config BINFMT_ZFLAT
|
|
|
|
bool "Enable ZFLAT support"
|
|
|
|
depends on BINFMT_FLAT
|
|
|
|
select ZLIB_INFLATE
|
|
|
|
help
|
|
|
|
Support FLAT format compressed binaries
|
|
|
|
|
|
|
|
config BINFMT_MISC
|
|
|
|
tristate "Kernel support for MISC binaries"
|
2020-06-13 09:50:22 -07:00
|
|
|
help
|
2005-04-16 15:20:36 -07:00
|
|
|
If you say Y here, it will be possible to plug wrapper-driven binary
|
|
|
|
formats into the kernel. You will like this especially when you use
|
|
|
|
programs that need an interpreter to run like Java, Python, .NET or
|
|
|
|
Emacs-Lisp. It's also useful if you often run DOS executables under
|
|
|
|
the Linux DOS emulator DOSEMU (read the DOSEMU-HOWTO, available from
|
|
|
|
<http://www.tldp.org/docs.html#howto>). Once you have
|
|
|
|
registered such a binary class with the kernel, you can start one of
|
|
|
|
those programs simply by typing in its name at a shell prompt; Linux
|
|
|
|
will automatically feed it to the correct interpreter.
|
|
|
|
|
|
|
|
You can do other nice things, too. Read the file
|
2018-05-08 11:14:57 -07:00
|
|
|
<file:Documentation/admin-guide/binfmt-misc.rst> to learn how to use this
|
2016-10-18 05:12:27 -07:00
|
|
|
feature, <file:Documentation/admin-guide/java.rst> for information about how
|
|
|
|
to include Java support. and <file:Documentation/admin-guide/mono.rst> for
|
2005-04-16 15:20:36 -07:00
|
|
|
information about how to include Mono-based .NET support.
|
|
|
|
|
|
|
|
To use binfmt_misc, you will need to mount it:
|
|
|
|
mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc
|
|
|
|
|
|
|
|
You may say M here for module support and later load the module when
|
|
|
|
you have use for it; the module is called binfmt_misc. If you
|
|
|
|
don't know what to answer at this point, say Y.
|
2012-10-04 17:15:23 -07:00
|
|
|
|
|
|
|
config COREDUMP
|
|
|
|
bool "Enable core dump support" if EXPERT
|
|
|
|
default y
|
|
|
|
help
|
|
|
|
This option enables support for performing core dumps. You almost
|
|
|
|
certainly want to say Y here. Not necessary on systems that never
|
|
|
|
need debugging or only ever run flawless code.
|
2018-07-31 04:39:34 -07:00
|
|
|
|
2024-05-19 17:17:59 -07:00
|
|
|
config EXEC_KUNIT_TEST
|
|
|
|
bool "Build execve tests" if !KUNIT_ALL_TESTS
|
|
|
|
depends on KUNIT=y
|
|
|
|
default KUNIT_ALL_TESTS
|
|
|
|
help
|
|
|
|
This builds the exec KUnit tests, which tests boundary conditions
|
|
|
|
of various aspects of the exec internals.
|
|
|
|
|
2018-07-31 04:39:34 -07:00
|
|
|
endmenu
|