xref: /openbmc/linux/fs/Kconfig.binfmt (revision 9549fb35)
1ec8f24b7SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only
2006477f4SChristoph Hellwig
3006477f4SChristoph Hellwigmenu "Executable file formats"
4006477f4SChristoph Hellwig
51da177e4SLinus Torvaldsconfig BINFMT_ELF
61da177e4SLinus Torvalds	bool "Kernel support for ELF binaries"
7a687a533SArnd Bergmann	depends on MMU
8f43edca7SRalf Baechle	select ELFCORE
91da177e4SLinus Torvalds	default y
10a7f7f624SMasahiro Yamada	help
111da177e4SLinus Torvalds	  ELF (Executable and Linkable Format) is a format for libraries and
121da177e4SLinus Torvalds	  executables used across different architectures and operating
131da177e4SLinus Torvalds	  systems. Saying Y here will enable your kernel to run ELF binaries
141da177e4SLinus Torvalds	  and enlarge it by about 13 KB. ELF support under Linux has now all
151da177e4SLinus Torvalds	  but replaced the traditional Linux a.out formats (QMAGIC and ZMAGIC)
161da177e4SLinus Torvalds	  because it is portable (this does *not* mean that you will be able
171da177e4SLinus Torvalds	  to run executables from different architectures or operating systems
181da177e4SLinus Torvalds	  however) and makes building run-time libraries very easy. Many new
191da177e4SLinus Torvalds	  executables are distributed solely in ELF format. You definitely
201da177e4SLinus Torvalds	  want to say Y here.
211da177e4SLinus Torvalds
221da177e4SLinus Torvalds	  Information about ELF is contained in the ELF HOWTO available from
231da177e4SLinus Torvalds	  <http://www.tldp.org/docs.html#howto>.
241da177e4SLinus Torvalds
251da177e4SLinus Torvalds	  If you find that after upgrading from Linux kernel 1.2 and saying Y
261da177e4SLinus Torvalds	  here, you still can't run any ELF binaries (they just crash), then
271da177e4SLinus Torvalds	  you'll have to install the newest ELF runtime libraries, including
281da177e4SLinus Torvalds	  ld.so (check the file <file:Documentation/Changes> for location and
291da177e4SLinus Torvalds	  latest version).
301da177e4SLinus Torvalds
319e1a3ce0SKees Cookconfig BINFMT_ELF_KUNIT_TEST
329e1a3ce0SKees Cook	bool "Build KUnit tests for ELF binary support" if !KUNIT_ALL_TESTS
339e1a3ce0SKees Cook	depends on KUNIT=y && BINFMT_ELF=y
349e1a3ce0SKees Cook	default KUNIT_ALL_TESTS
359e1a3ce0SKees Cook	help
369e1a3ce0SKees Cook	  This builds the ELF loader KUnit tests, which try to gather
379e1a3ce0SKees Cook	  prior bug fixes into a regression test collection. This is really
389e1a3ce0SKees Cook	  only needed for debugging. Note that with CONFIG_COMPAT=y, the
399e1a3ce0SKees Cook	  compat_binfmt_elf KUnit test is also created.
409e1a3ce0SKees Cook
41b9d36d5dSRoland McGrathconfig COMPAT_BINFMT_ELF
4241026c34SAl Viro	def_bool y
434cea5cebSAlexey Dobriyan	depends on COMPAT && BINFMT_ELF
44f43edca7SRalf Baechle	select ELFCORE
45b9d36d5dSRoland McGrath
46774c105eSPaul Burtonconfig ARCH_BINFMT_ELF_STATE
47774c105eSPaul Burton	bool
48774c105eSPaul Burton
49b62a8486SCatalin Marinasconfig ARCH_BINFMT_ELF_EXTRA_PHDRS
50b62a8486SCatalin Marinas	bool
51b62a8486SCatalin Marinas
52fe0f6766SDave Martinconfig ARCH_HAVE_ELF_PROT
53fe0f6766SDave Martin	bool
54fe0f6766SDave Martin
55db751e30SDave Martinconfig ARCH_USE_GNU_PROPERTY
56db751e30SDave Martin	bool
57db751e30SDave Martin
581da177e4SLinus Torvaldsconfig BINFMT_ELF_FDPIC
591da177e4SLinus Torvalds	bool "Kernel support for FDPIC ELF binaries"
60382e67aeSNicolas Pitre	default y if !BINFMT_ELF
61*9549fb35SGreg Ungerer	depends on ARM || ((M68K || RISCV || SUPERH || XTENSA) && !MMU)
62f43edca7SRalf Baechle	select ELFCORE
631da177e4SLinus Torvalds	help
641da177e4SLinus Torvalds	  ELF FDPIC binaries are based on ELF, but allow the individual load
651da177e4SLinus Torvalds	  segments of a binary to be located in memory independently of each
661da177e4SLinus Torvalds	  other. This makes this format ideal for use in environments where no
671da177e4SLinus Torvalds	  MMU is available as it still permits text segments to be shared,
681da177e4SLinus Torvalds	  even if data segments are not.
691da177e4SLinus Torvalds
701da177e4SLinus Torvalds	  It is also possible to run FDPIC ELF binaries on MMU linux also.
711da177e4SLinus Torvalds
72f43edca7SRalf Baechleconfig ELFCORE
73f43edca7SRalf Baechle	bool
74f43edca7SRalf Baechle	help
75f43edca7SRalf Baechle	  This option enables kernel/elfcore.o.
76f43edca7SRalf Baechle
77656eb2cdSRoland McGrathconfig CORE_DUMP_DEFAULT_ELF_HEADERS
78656eb2cdSRoland McGrath	bool "Write ELF core dumps with partial segments"
7989502155SRoland McGrath	default y
802d96d105SDavid Brownell	depends on BINFMT_ELF && ELF_CORE
81656eb2cdSRoland McGrath	help
82656eb2cdSRoland McGrath	  ELF core dump files describe each memory mapping of the crashed
83656eb2cdSRoland McGrath	  process, and can contain or omit the memory contents of each one.
84656eb2cdSRoland McGrath	  The contents of an unmodified text mapping are omitted by default.
85656eb2cdSRoland McGrath
86656eb2cdSRoland McGrath	  For an unmodified text mapping of an ELF object, including just
87656eb2cdSRoland McGrath	  the first page of the file in a core dump makes it possible to
88656eb2cdSRoland McGrath	  identify the build ID bits in the file, without paying the i/o
89656eb2cdSRoland McGrath	  cost and disk space to dump all the text.  However, versions of
90656eb2cdSRoland McGrath	  GDB before 6.7 are confused by ELF core dump files in this format.
91656eb2cdSRoland McGrath
92656eb2cdSRoland McGrath	  The core dump behavior can be controlled per process using
93656eb2cdSRoland McGrath	  the /proc/PID/coredump_filter pseudo-file; this setting is
940c1bc6b8SMauro Carvalho Chehab	  inherited.  See Documentation/filesystems/proc.rst for details.
95656eb2cdSRoland McGrath
96656eb2cdSRoland McGrath	  This config option changes the default setting of coredump_filter
9789502155SRoland McGrath	  seen at boot time.  If unsure, say Y.
98656eb2cdSRoland McGrath
992535e0d7SJosh Triplettconfig BINFMT_SCRIPT
1002535e0d7SJosh Triplett	tristate "Kernel support for scripts starting with #!"
1012535e0d7SJosh Triplett	default y
1022535e0d7SJosh Triplett	help
1032535e0d7SJosh Triplett	  Say Y here if you want to execute interpreted scripts starting with
1042535e0d7SJosh Triplett	  #! followed by the path to an interpreter.
1052535e0d7SJosh Triplett
1062535e0d7SJosh Triplett	  You can build this support as a module; however, until that module
1072535e0d7SJosh Triplett	  gets loaded, you cannot run scripts.  Thus, if you want to load this
1082535e0d7SJosh Triplett	  module from an initramfs, the portion of the initramfs before loading
1092535e0d7SJosh Triplett	  this module must consist of compiled binaries only.
1102535e0d7SJosh Triplett
1112535e0d7SJosh Triplett	  Most systems will not boot if you say M or N here.  If unsure, say Y.
1122535e0d7SJosh Triplett
113aef0f78eSChristoph Hellwigconfig ARCH_HAS_BINFMT_FLAT
114aef0f78eSChristoph Hellwig	bool
115aef0f78eSChristoph Hellwig
1161da177e4SLinus Torvaldsconfig BINFMT_FLAT
1173202e181SAdrian Bunk	bool "Kernel support for flat binaries"
118aef0f78eSChristoph Hellwig	depends on ARCH_HAS_BINFMT_FLAT
1191da177e4SLinus Torvalds	help
1201da177e4SLinus Torvalds	  Support uClinux FLAT format binaries.
1211da177e4SLinus Torvalds
122bdd15a28SChristoph Hellwigconfig BINFMT_FLAT_ARGVP_ENVP_ON_STACK
123bdd15a28SChristoph Hellwig	bool
124bdd15a28SChristoph Hellwig
1251d52dca1SChristoph Hellwigconfig BINFMT_FLAT_OLD_ALWAYS_RAM
1261d52dca1SChristoph Hellwig	bool
1271d52dca1SChristoph Hellwig
12804d82a6dSDamien Le Moalconfig BINFMT_FLAT_NO_DATA_START_OFFSET
12904d82a6dSDamien Le Moal	bool
13004d82a6dSDamien Le Moal
131cf9a566cSChristoph Hellwigconfig BINFMT_FLAT_OLD
132cf9a566cSChristoph Hellwig	bool "Enable support for very old legacy flat binaries"
133cf9a566cSChristoph Hellwig	depends on BINFMT_FLAT
134cf9a566cSChristoph Hellwig	help
135cf9a566cSChristoph Hellwig	  Support decade old uClinux FLAT format binaries.  Unless you know
136cf9a566cSChristoph Hellwig	  you have some of those say N here.
137cf9a566cSChristoph Hellwig
1381da177e4SLinus Torvaldsconfig BINFMT_ZFLAT
1391da177e4SLinus Torvalds	bool "Enable ZFLAT support"
1401da177e4SLinus Torvalds	depends on BINFMT_FLAT
1411da177e4SLinus Torvalds	select ZLIB_INFLATE
1421da177e4SLinus Torvalds	help
1431da177e4SLinus Torvalds	  Support FLAT format compressed binaries
1441da177e4SLinus Torvalds
1451da177e4SLinus Torvaldsconfig BINFMT_MISC
1461da177e4SLinus Torvalds	tristate "Kernel support for MISC binaries"
147a7f7f624SMasahiro Yamada	help
1481da177e4SLinus Torvalds	  If you say Y here, it will be possible to plug wrapper-driven binary
1491da177e4SLinus Torvalds	  formats into the kernel. You will like this especially when you use
1501da177e4SLinus Torvalds	  programs that need an interpreter to run like Java, Python, .NET or
1511da177e4SLinus Torvalds	  Emacs-Lisp. It's also useful if you often run DOS executables under
1521da177e4SLinus Torvalds	  the Linux DOS emulator DOSEMU (read the DOSEMU-HOWTO, available from
1531da177e4SLinus Torvalds	  <http://www.tldp.org/docs.html#howto>). Once you have
1541da177e4SLinus Torvalds	  registered such a binary class with the kernel, you can start one of
1551da177e4SLinus Torvalds	  those programs simply by typing in its name at a shell prompt; Linux
1561da177e4SLinus Torvalds	  will automatically feed it to the correct interpreter.
1571da177e4SLinus Torvalds
1581da177e4SLinus Torvalds	  You can do other nice things, too. Read the file
15934962fb8SMauro Carvalho Chehab	  <file:Documentation/admin-guide/binfmt-misc.rst> to learn how to use this
1608c27ceffSMauro Carvalho Chehab	  feature, <file:Documentation/admin-guide/java.rst> for information about how
1618c27ceffSMauro Carvalho Chehab	  to include Java support. and <file:Documentation/admin-guide/mono.rst> for
1621da177e4SLinus Torvalds          information about how to include Mono-based .NET support.
1631da177e4SLinus Torvalds
1641da177e4SLinus Torvalds          To use binfmt_misc, you will need to mount it:
1651da177e4SLinus Torvalds		mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc
1661da177e4SLinus Torvalds
1671da177e4SLinus Torvalds	  You may say M here for module support and later load the module when
1681da177e4SLinus Torvalds	  you have use for it; the module is called binfmt_misc. If you
1691da177e4SLinus Torvalds	  don't know what to answer at this point, say Y.
170046d662fSAlex Kelly
171046d662fSAlex Kellyconfig COREDUMP
172046d662fSAlex Kelly	bool "Enable core dump support" if EXPERT
173046d662fSAlex Kelly	default y
174046d662fSAlex Kelly	help
175046d662fSAlex Kelly	  This option enables support for performing core dumps. You almost
176046d662fSAlex Kelly	  certainly want to say Y here. Not necessary on systems that never
177046d662fSAlex Kelly	  need debugging or only ever run flawless code.
178006477f4SChristoph Hellwig
179006477f4SChristoph Hellwigendmenu
180