219 lines
7.5 KiB
Plaintext
219 lines
7.5 KiB
Plaintext
|
# SPDX-License-Identifier: GPL-2.0-only
|
||
|
|
||
|
menu "Executable file formats"
|
||
|
|
||
|
config BINFMT_ELF
|
||
|
bool "Kernel support for ELF binaries"
|
||
|
depends on MMU
|
||
|
select ELFCORE
|
||
|
default y
|
||
|
help
|
||
|
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).
|
||
|
|
||
|
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.
|
||
|
|
||
|
config COMPAT_BINFMT_ELF
|
||
|
def_bool y
|
||
|
depends on COMPAT && BINFMT_ELF
|
||
|
select ELFCORE
|
||
|
|
||
|
config ARCH_BINFMT_ELF_STATE
|
||
|
bool
|
||
|
|
||
|
config ARCH_BINFMT_ELF_EXTRA_PHDRS
|
||
|
bool
|
||
|
|
||
|
config ARCH_HAVE_ELF_PROT
|
||
|
bool
|
||
|
|
||
|
config ARCH_USE_GNU_PROPERTY
|
||
|
bool
|
||
|
|
||
|
config BINFMT_ELF_FDPIC
|
||
|
bool "Kernel support for FDPIC ELF binaries"
|
||
|
default y if !BINFMT_ELF
|
||
|
depends on (ARM || (SUPERH && !MMU))
|
||
|
select ELFCORE
|
||
|
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.
|
||
|
|
||
|
config ELFCORE
|
||
|
bool
|
||
|
help
|
||
|
This option enables kernel/elfcore.o.
|
||
|
|
||
|
config CORE_DUMP_DEFAULT_ELF_HEADERS
|
||
|
bool "Write ELF core dumps with partial segments"
|
||
|
default y
|
||
|
depends on BINFMT_ELF && ELF_CORE
|
||
|
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
|
||
|
inherited. See Documentation/filesystems/proc.rst for details.
|
||
|
|
||
|
This config option changes the default setting of coredump_filter
|
||
|
seen at boot time. If unsure, say Y.
|
||
|
|
||
|
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.
|
||
|
|
||
|
config ARCH_HAS_BINFMT_FLAT
|
||
|
bool
|
||
|
|
||
|
config BINFMT_FLAT
|
||
|
bool "Kernel support for flat binaries"
|
||
|
depends on ARCH_HAS_BINFMT_FLAT
|
||
|
help
|
||
|
Support uClinux FLAT format binaries.
|
||
|
|
||
|
config BINFMT_FLAT_ARGVP_ENVP_ON_STACK
|
||
|
bool
|
||
|
|
||
|
config BINFMT_FLAT_OLD_ALWAYS_RAM
|
||
|
bool
|
||
|
|
||
|
config BINFMT_FLAT_NO_DATA_START_OFFSET
|
||
|
bool
|
||
|
|
||
|
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.
|
||
|
|
||
|
config BINFMT_ZFLAT
|
||
|
bool "Enable ZFLAT support"
|
||
|
depends on BINFMT_FLAT
|
||
|
select ZLIB_INFLATE
|
||
|
help
|
||
|
Support FLAT format compressed binaries
|
||
|
|
||
|
config BINFMT_SHARED_FLAT
|
||
|
bool "Enable shared FLAT support"
|
||
|
depends on BINFMT_FLAT
|
||
|
help
|
||
|
Support FLAT shared libraries
|
||
|
|
||
|
config HAVE_AOUT
|
||
|
def_bool n
|
||
|
|
||
|
config BINFMT_AOUT
|
||
|
tristate "Kernel support for a.out and ECOFF binaries"
|
||
|
depends on HAVE_AOUT
|
||
|
help
|
||
|
A.out (Assembler.OUTput) is a set of formats for libraries and
|
||
|
executables used in the earliest versions of UNIX. Linux used
|
||
|
the a.out formats QMAGIC and ZMAGIC until they were replaced
|
||
|
with the ELF format.
|
||
|
|
||
|
The conversion to ELF started in 1995. This option is primarily
|
||
|
provided for historical interest and for the benefit of those
|
||
|
who need to run binaries from that era.
|
||
|
|
||
|
Most people should answer N here. If you think you may have
|
||
|
occasional use for this format, enable module support above
|
||
|
and answer M here to compile this support as a module called
|
||
|
binfmt_aout.
|
||
|
|
||
|
If any crucial components of your system (such as /sbin/init
|
||
|
or /lib/ld.so) are still in a.out format, you will have to
|
||
|
say Y here.
|
||
|
|
||
|
config OSF4_COMPAT
|
||
|
bool "OSF/1 v4 readv/writev compatibility"
|
||
|
depends on ALPHA && BINFMT_AOUT
|
||
|
help
|
||
|
Say Y if you are using OSF/1 binaries (like Netscape and Acrobat)
|
||
|
with v4 shared libraries freely available from Compaq. If you're
|
||
|
going to use shared libraries from Tru64 version 5.0 or later, say N.
|
||
|
|
||
|
config BINFMT_MISC
|
||
|
tristate "Kernel support for MISC binaries"
|
||
|
help
|
||
|
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
|
||
|
<file:Documentation/admin-guide/binfmt-misc.rst> to learn how to use this
|
||
|
feature, <file:Documentation/admin-guide/java.rst> for information about how
|
||
|
to include Java support. and <file:Documentation/admin-guide/mono.rst> for
|
||
|
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.
|
||
|
|
||
|
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.
|
||
|
|
||
|
endmenu
|