xref: /openbmc/linux/fs/Kconfig.binfmt (revision a7f7f624)
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
31b9d36d5dSRoland McGrathconfig COMPAT_BINFMT_ELF
32b9d36d5dSRoland McGrath	bool
334cea5cebSAlexey Dobriyan	depends on COMPAT && BINFMT_ELF
34f43edca7SRalf Baechle	select ELFCORE
35b9d36d5dSRoland McGrath
36774c105eSPaul Burtonconfig ARCH_BINFMT_ELF_STATE
37774c105eSPaul Burton	bool
38774c105eSPaul Burton
39fe0f6766SDave Martinconfig ARCH_HAVE_ELF_PROT
40fe0f6766SDave Martin	bool
41fe0f6766SDave Martin
42db751e30SDave Martinconfig ARCH_USE_GNU_PROPERTY
43db751e30SDave Martin	bool
44db751e30SDave Martin
451da177e4SLinus Torvaldsconfig BINFMT_ELF_FDPIC
461da177e4SLinus Torvalds	bool "Kernel support for FDPIC ELF binaries"
47382e67aeSNicolas Pitre	default y if !BINFMT_ELF
4837744feeSArnd Bergmann	depends on (ARM || (SUPERH && !MMU) || C6X)
49f43edca7SRalf Baechle	select ELFCORE
501da177e4SLinus Torvalds	help
511da177e4SLinus Torvalds	  ELF FDPIC binaries are based on ELF, but allow the individual load
521da177e4SLinus Torvalds	  segments of a binary to be located in memory independently of each
531da177e4SLinus Torvalds	  other. This makes this format ideal for use in environments where no
541da177e4SLinus Torvalds	  MMU is available as it still permits text segments to be shared,
551da177e4SLinus Torvalds	  even if data segments are not.
561da177e4SLinus Torvalds
571da177e4SLinus Torvalds	  It is also possible to run FDPIC ELF binaries on MMU linux also.
581da177e4SLinus Torvalds
59f43edca7SRalf Baechleconfig ELFCORE
60f43edca7SRalf Baechle	bool
61f43edca7SRalf Baechle	help
62f43edca7SRalf Baechle	  This option enables kernel/elfcore.o.
63f43edca7SRalf Baechle
64656eb2cdSRoland McGrathconfig CORE_DUMP_DEFAULT_ELF_HEADERS
65656eb2cdSRoland McGrath	bool "Write ELF core dumps with partial segments"
6689502155SRoland McGrath	default y
672d96d105SDavid Brownell	depends on BINFMT_ELF && ELF_CORE
68656eb2cdSRoland McGrath	help
69656eb2cdSRoland McGrath	  ELF core dump files describe each memory mapping of the crashed
70656eb2cdSRoland McGrath	  process, and can contain or omit the memory contents of each one.
71656eb2cdSRoland McGrath	  The contents of an unmodified text mapping are omitted by default.
72656eb2cdSRoland McGrath
73656eb2cdSRoland McGrath	  For an unmodified text mapping of an ELF object, including just
74656eb2cdSRoland McGrath	  the first page of the file in a core dump makes it possible to
75656eb2cdSRoland McGrath	  identify the build ID bits in the file, without paying the i/o
76656eb2cdSRoland McGrath	  cost and disk space to dump all the text.  However, versions of
77656eb2cdSRoland McGrath	  GDB before 6.7 are confused by ELF core dump files in this format.
78656eb2cdSRoland McGrath
79656eb2cdSRoland McGrath	  The core dump behavior can be controlled per process using
80656eb2cdSRoland McGrath	  the /proc/PID/coredump_filter pseudo-file; this setting is
810c1bc6b8SMauro Carvalho Chehab	  inherited.  See Documentation/filesystems/proc.rst for details.
82656eb2cdSRoland McGrath
83656eb2cdSRoland McGrath	  This config option changes the default setting of coredump_filter
8489502155SRoland McGrath	  seen at boot time.  If unsure, say Y.
85656eb2cdSRoland McGrath
862535e0d7SJosh Triplettconfig BINFMT_SCRIPT
872535e0d7SJosh Triplett	tristate "Kernel support for scripts starting with #!"
882535e0d7SJosh Triplett	default y
892535e0d7SJosh Triplett	help
902535e0d7SJosh Triplett	  Say Y here if you want to execute interpreted scripts starting with
912535e0d7SJosh Triplett	  #! followed by the path to an interpreter.
922535e0d7SJosh Triplett
932535e0d7SJosh Triplett	  You can build this support as a module; however, until that module
942535e0d7SJosh Triplett	  gets loaded, you cannot run scripts.  Thus, if you want to load this
952535e0d7SJosh Triplett	  module from an initramfs, the portion of the initramfs before loading
962535e0d7SJosh Triplett	  this module must consist of compiled binaries only.
972535e0d7SJosh Triplett
982535e0d7SJosh Triplett	  Most systems will not boot if you say M or N here.  If unsure, say Y.
992535e0d7SJosh Triplett
100aef0f78eSChristoph Hellwigconfig ARCH_HAS_BINFMT_FLAT
101aef0f78eSChristoph Hellwig	bool
102aef0f78eSChristoph Hellwig
1031da177e4SLinus Torvaldsconfig BINFMT_FLAT
1043202e181SAdrian Bunk	bool "Kernel support for flat binaries"
105aef0f78eSChristoph Hellwig	depends on ARCH_HAS_BINFMT_FLAT
1061da177e4SLinus Torvalds	help
1071da177e4SLinus Torvalds	  Support uClinux FLAT format binaries.
1081da177e4SLinus Torvalds
109bdd15a28SChristoph Hellwigconfig BINFMT_FLAT_ARGVP_ENVP_ON_STACK
110bdd15a28SChristoph Hellwig	bool
111bdd15a28SChristoph Hellwig
1121d52dca1SChristoph Hellwigconfig BINFMT_FLAT_OLD_ALWAYS_RAM
1131d52dca1SChristoph Hellwig	bool
1141d52dca1SChristoph Hellwig
115cf9a566cSChristoph Hellwigconfig BINFMT_FLAT_OLD
116cf9a566cSChristoph Hellwig	bool "Enable support for very old legacy flat binaries"
117cf9a566cSChristoph Hellwig	depends on BINFMT_FLAT
118cf9a566cSChristoph Hellwig	help
119cf9a566cSChristoph Hellwig	  Support decade old uClinux FLAT format binaries.  Unless you know
120cf9a566cSChristoph Hellwig	  you have some of those say N here.
121cf9a566cSChristoph Hellwig
1221da177e4SLinus Torvaldsconfig BINFMT_ZFLAT
1231da177e4SLinus Torvalds	bool "Enable ZFLAT support"
1241da177e4SLinus Torvalds	depends on BINFMT_FLAT
1251da177e4SLinus Torvalds	select ZLIB_INFLATE
1261da177e4SLinus Torvalds	help
1271da177e4SLinus Torvalds	  Support FLAT format compressed binaries
1281da177e4SLinus Torvalds
1291da177e4SLinus Torvaldsconfig BINFMT_SHARED_FLAT
1301da177e4SLinus Torvalds	bool "Enable shared FLAT support"
1311da177e4SLinus Torvalds	depends on BINFMT_FLAT
1321da177e4SLinus Torvalds	help
1331da177e4SLinus Torvalds	  Support FLAT shared libraries
1341da177e4SLinus Torvalds
135e17c6d56SDavid Woodhouseconfig HAVE_AOUT
136e17c6d56SDavid Woodhouse       def_bool n
137e17c6d56SDavid Woodhouse
1381da177e4SLinus Torvaldsconfig BINFMT_AOUT
1391da177e4SLinus Torvalds	tristate "Kernel support for a.out and ECOFF binaries"
140e17c6d56SDavid Woodhouse	depends on HAVE_AOUT
141a7f7f624SMasahiro Yamada	help
1421da177e4SLinus Torvalds	  A.out (Assembler.OUTput) is a set of formats for libraries and
1431da177e4SLinus Torvalds	  executables used in the earliest versions of UNIX.  Linux used
1441da177e4SLinus Torvalds	  the a.out formats QMAGIC and ZMAGIC until they were replaced
1451da177e4SLinus Torvalds	  with the ELF format.
1461da177e4SLinus Torvalds
1471da177e4SLinus Torvalds	  The conversion to ELF started in 1995.  This option is primarily
1481da177e4SLinus Torvalds	  provided for historical interest and for the benefit of those
1491da177e4SLinus Torvalds	  who need to run binaries from that era.
1501da177e4SLinus Torvalds
1511da177e4SLinus Torvalds	  Most people should answer N here.  If you think you may have
1521da177e4SLinus Torvalds	  occasional use for this format, enable module support above
1531da177e4SLinus Torvalds	  and answer M here to compile this support as a module called
1541da177e4SLinus Torvalds	  binfmt_aout.
1551da177e4SLinus Torvalds
1561da177e4SLinus Torvalds	  If any crucial components of your system (such as /sbin/init
1571da177e4SLinus Torvalds	  or /lib/ld.so) are still in a.out format, you will have to
1581da177e4SLinus Torvalds	  say Y here.
1591da177e4SLinus Torvalds
1601da177e4SLinus Torvaldsconfig OSF4_COMPAT
1611da177e4SLinus Torvalds	bool "OSF/1 v4 readv/writev compatibility"
1621da177e4SLinus Torvalds	depends on ALPHA && BINFMT_AOUT
1631da177e4SLinus Torvalds	help
1641da177e4SLinus Torvalds	  Say Y if you are using OSF/1 binaries (like Netscape and Acrobat)
1651da177e4SLinus Torvalds	  with v4 shared libraries freely available from Compaq. If you're
1661da177e4SLinus Torvalds	  going to use shared libraries from Tru64 version 5.0 or later, say N.
1671da177e4SLinus Torvalds
1681da177e4SLinus Torvaldsconfig BINFMT_EM86
1691da177e4SLinus Torvalds	tristate "Kernel support for Linux/Intel ELF binaries"
1701da177e4SLinus Torvalds	depends on ALPHA
171a7f7f624SMasahiro Yamada	help
1721da177e4SLinus Torvalds	  Say Y here if you want to be able to execute Linux/Intel ELF
1731da177e4SLinus Torvalds	  binaries just like native Alpha binaries on your Alpha machine. For
1741da177e4SLinus Torvalds	  this to work, you need to have the emulator /usr/bin/em86 in place.
1751da177e4SLinus Torvalds
1761da177e4SLinus Torvalds	  You can get the same functionality by saying N here and saying Y to
1771da177e4SLinus Torvalds	  "Kernel support for MISC binaries".
1781da177e4SLinus Torvalds
1791da177e4SLinus Torvalds	  You may answer M to compile the emulation support as a module and
1801da177e4SLinus Torvalds	  later load the module when you want to use a Linux/Intel binary. The
1811da177e4SLinus Torvalds	  module will be called binfmt_em86. If unsure, say Y.
1821da177e4SLinus Torvalds
1831da177e4SLinus Torvaldsconfig BINFMT_MISC
1841da177e4SLinus Torvalds	tristate "Kernel support for MISC binaries"
185a7f7f624SMasahiro Yamada	help
1861da177e4SLinus Torvalds	  If you say Y here, it will be possible to plug wrapper-driven binary
1871da177e4SLinus Torvalds	  formats into the kernel. You will like this especially when you use
1881da177e4SLinus Torvalds	  programs that need an interpreter to run like Java, Python, .NET or
1891da177e4SLinus Torvalds	  Emacs-Lisp. It's also useful if you often run DOS executables under
1901da177e4SLinus Torvalds	  the Linux DOS emulator DOSEMU (read the DOSEMU-HOWTO, available from
1911da177e4SLinus Torvalds	  <http://www.tldp.org/docs.html#howto>). Once you have
1921da177e4SLinus Torvalds	  registered such a binary class with the kernel, you can start one of
1931da177e4SLinus Torvalds	  those programs simply by typing in its name at a shell prompt; Linux
1941da177e4SLinus Torvalds	  will automatically feed it to the correct interpreter.
1951da177e4SLinus Torvalds
1961da177e4SLinus Torvalds	  You can do other nice things, too. Read the file
19734962fb8SMauro Carvalho Chehab	  <file:Documentation/admin-guide/binfmt-misc.rst> to learn how to use this
1988c27ceffSMauro Carvalho Chehab	  feature, <file:Documentation/admin-guide/java.rst> for information about how
1998c27ceffSMauro Carvalho Chehab	  to include Java support. and <file:Documentation/admin-guide/mono.rst> for
2001da177e4SLinus Torvalds          information about how to include Mono-based .NET support.
2011da177e4SLinus Torvalds
2021da177e4SLinus Torvalds          To use binfmt_misc, you will need to mount it:
2031da177e4SLinus Torvalds		mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc
2041da177e4SLinus Torvalds
2051da177e4SLinus Torvalds	  You may say M here for module support and later load the module when
2061da177e4SLinus Torvalds	  you have use for it; the module is called binfmt_misc. If you
2071da177e4SLinus Torvalds	  don't know what to answer at this point, say Y.
208046d662fSAlex Kelly
209046d662fSAlex Kellyconfig COREDUMP
210046d662fSAlex Kelly	bool "Enable core dump support" if EXPERT
211046d662fSAlex Kelly	default y
212046d662fSAlex Kelly	help
213046d662fSAlex Kelly	  This option enables support for performing core dumps. You almost
214046d662fSAlex Kelly	  certainly want to say Y here. Not necessary on systems that never
215046d662fSAlex Kelly	  need debugging or only ever run flawless code.
216006477f4SChristoph Hellwig
217006477f4SChristoph Hellwigendmenu
218