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 3241026c34SAl Viro def_bool y 334cea5cebSAlexey Dobriyan depends on COMPAT && BINFMT_ELF 34f43edca7SRalf Baechle select ELFCORE 35b9d36d5dSRoland McGrath 36774c105eSPaul Burtonconfig ARCH_BINFMT_ELF_STATE 37774c105eSPaul Burton bool 38774c105eSPaul Burton 39*b62a8486SCatalin Marinasconfig ARCH_BINFMT_ELF_EXTRA_PHDRS 40*b62a8486SCatalin Marinas bool 41*b62a8486SCatalin Marinas 42fe0f6766SDave Martinconfig ARCH_HAVE_ELF_PROT 43fe0f6766SDave Martin bool 44fe0f6766SDave Martin 45db751e30SDave Martinconfig ARCH_USE_GNU_PROPERTY 46db751e30SDave Martin bool 47db751e30SDave Martin 481da177e4SLinus Torvaldsconfig BINFMT_ELF_FDPIC 491da177e4SLinus Torvalds bool "Kernel support for FDPIC ELF binaries" 50382e67aeSNicolas Pitre default y if !BINFMT_ELF 51a579fcfaSArnd Bergmann depends on (ARM || (SUPERH && !MMU)) 52f43edca7SRalf Baechle select ELFCORE 531da177e4SLinus Torvalds help 541da177e4SLinus Torvalds ELF FDPIC binaries are based on ELF, but allow the individual load 551da177e4SLinus Torvalds segments of a binary to be located in memory independently of each 561da177e4SLinus Torvalds other. This makes this format ideal for use in environments where no 571da177e4SLinus Torvalds MMU is available as it still permits text segments to be shared, 581da177e4SLinus Torvalds even if data segments are not. 591da177e4SLinus Torvalds 601da177e4SLinus Torvalds It is also possible to run FDPIC ELF binaries on MMU linux also. 611da177e4SLinus Torvalds 62f43edca7SRalf Baechleconfig ELFCORE 63f43edca7SRalf Baechle bool 64f43edca7SRalf Baechle help 65f43edca7SRalf Baechle This option enables kernel/elfcore.o. 66f43edca7SRalf Baechle 67656eb2cdSRoland McGrathconfig CORE_DUMP_DEFAULT_ELF_HEADERS 68656eb2cdSRoland McGrath bool "Write ELF core dumps with partial segments" 6989502155SRoland McGrath default y 702d96d105SDavid Brownell depends on BINFMT_ELF && ELF_CORE 71656eb2cdSRoland McGrath help 72656eb2cdSRoland McGrath ELF core dump files describe each memory mapping of the crashed 73656eb2cdSRoland McGrath process, and can contain or omit the memory contents of each one. 74656eb2cdSRoland McGrath The contents of an unmodified text mapping are omitted by default. 75656eb2cdSRoland McGrath 76656eb2cdSRoland McGrath For an unmodified text mapping of an ELF object, including just 77656eb2cdSRoland McGrath the first page of the file in a core dump makes it possible to 78656eb2cdSRoland McGrath identify the build ID bits in the file, without paying the i/o 79656eb2cdSRoland McGrath cost and disk space to dump all the text. However, versions of 80656eb2cdSRoland McGrath GDB before 6.7 are confused by ELF core dump files in this format. 81656eb2cdSRoland McGrath 82656eb2cdSRoland McGrath The core dump behavior can be controlled per process using 83656eb2cdSRoland McGrath the /proc/PID/coredump_filter pseudo-file; this setting is 840c1bc6b8SMauro Carvalho Chehab inherited. See Documentation/filesystems/proc.rst for details. 85656eb2cdSRoland McGrath 86656eb2cdSRoland McGrath This config option changes the default setting of coredump_filter 8789502155SRoland McGrath seen at boot time. If unsure, say Y. 88656eb2cdSRoland McGrath 892535e0d7SJosh Triplettconfig BINFMT_SCRIPT 902535e0d7SJosh Triplett tristate "Kernel support for scripts starting with #!" 912535e0d7SJosh Triplett default y 922535e0d7SJosh Triplett help 932535e0d7SJosh Triplett Say Y here if you want to execute interpreted scripts starting with 942535e0d7SJosh Triplett #! followed by the path to an interpreter. 952535e0d7SJosh Triplett 962535e0d7SJosh Triplett You can build this support as a module; however, until that module 972535e0d7SJosh Triplett gets loaded, you cannot run scripts. Thus, if you want to load this 982535e0d7SJosh Triplett module from an initramfs, the portion of the initramfs before loading 992535e0d7SJosh Triplett this module must consist of compiled binaries only. 1002535e0d7SJosh Triplett 1012535e0d7SJosh Triplett Most systems will not boot if you say M or N here. If unsure, say Y. 1022535e0d7SJosh Triplett 103aef0f78eSChristoph Hellwigconfig ARCH_HAS_BINFMT_FLAT 104aef0f78eSChristoph Hellwig bool 105aef0f78eSChristoph Hellwig 1061da177e4SLinus Torvaldsconfig BINFMT_FLAT 1073202e181SAdrian Bunk bool "Kernel support for flat binaries" 108aef0f78eSChristoph Hellwig depends on ARCH_HAS_BINFMT_FLAT 1091da177e4SLinus Torvalds help 1101da177e4SLinus Torvalds Support uClinux FLAT format binaries. 1111da177e4SLinus Torvalds 112bdd15a28SChristoph Hellwigconfig BINFMT_FLAT_ARGVP_ENVP_ON_STACK 113bdd15a28SChristoph Hellwig bool 114bdd15a28SChristoph Hellwig 1151d52dca1SChristoph Hellwigconfig BINFMT_FLAT_OLD_ALWAYS_RAM 1161d52dca1SChristoph Hellwig bool 1171d52dca1SChristoph Hellwig 11804d82a6dSDamien Le Moalconfig BINFMT_FLAT_NO_DATA_START_OFFSET 11904d82a6dSDamien Le Moal bool 12004d82a6dSDamien Le Moal 121cf9a566cSChristoph Hellwigconfig BINFMT_FLAT_OLD 122cf9a566cSChristoph Hellwig bool "Enable support for very old legacy flat binaries" 123cf9a566cSChristoph Hellwig depends on BINFMT_FLAT 124cf9a566cSChristoph Hellwig help 125cf9a566cSChristoph Hellwig Support decade old uClinux FLAT format binaries. Unless you know 126cf9a566cSChristoph Hellwig you have some of those say N here. 127cf9a566cSChristoph Hellwig 1281da177e4SLinus Torvaldsconfig BINFMT_ZFLAT 1291da177e4SLinus Torvalds bool "Enable ZFLAT support" 1301da177e4SLinus Torvalds depends on BINFMT_FLAT 1311da177e4SLinus Torvalds select ZLIB_INFLATE 1321da177e4SLinus Torvalds help 1331da177e4SLinus Torvalds Support FLAT format compressed binaries 1341da177e4SLinus Torvalds 1351da177e4SLinus Torvaldsconfig BINFMT_SHARED_FLAT 1361da177e4SLinus Torvalds bool "Enable shared FLAT support" 1371da177e4SLinus Torvalds depends on BINFMT_FLAT 1381da177e4SLinus Torvalds help 1391da177e4SLinus Torvalds Support FLAT shared libraries 1401da177e4SLinus Torvalds 141e17c6d56SDavid Woodhouseconfig HAVE_AOUT 142e17c6d56SDavid Woodhouse def_bool n 143e17c6d56SDavid Woodhouse 1441da177e4SLinus Torvaldsconfig BINFMT_AOUT 1451da177e4SLinus Torvalds tristate "Kernel support for a.out and ECOFF binaries" 146e17c6d56SDavid Woodhouse depends on HAVE_AOUT 147a7f7f624SMasahiro Yamada help 1481da177e4SLinus Torvalds A.out (Assembler.OUTput) is a set of formats for libraries and 1491da177e4SLinus Torvalds executables used in the earliest versions of UNIX. Linux used 1501da177e4SLinus Torvalds the a.out formats QMAGIC and ZMAGIC until they were replaced 1511da177e4SLinus Torvalds with the ELF format. 1521da177e4SLinus Torvalds 1531da177e4SLinus Torvalds The conversion to ELF started in 1995. This option is primarily 1541da177e4SLinus Torvalds provided for historical interest and for the benefit of those 1551da177e4SLinus Torvalds who need to run binaries from that era. 1561da177e4SLinus Torvalds 1571da177e4SLinus Torvalds Most people should answer N here. If you think you may have 1581da177e4SLinus Torvalds occasional use for this format, enable module support above 1591da177e4SLinus Torvalds and answer M here to compile this support as a module called 1601da177e4SLinus Torvalds binfmt_aout. 1611da177e4SLinus Torvalds 1621da177e4SLinus Torvalds If any crucial components of your system (such as /sbin/init 1631da177e4SLinus Torvalds or /lib/ld.so) are still in a.out format, you will have to 1641da177e4SLinus Torvalds say Y here. 1651da177e4SLinus Torvalds 1661da177e4SLinus Torvaldsconfig OSF4_COMPAT 1671da177e4SLinus Torvalds bool "OSF/1 v4 readv/writev compatibility" 1681da177e4SLinus Torvalds depends on ALPHA && BINFMT_AOUT 1691da177e4SLinus Torvalds help 1701da177e4SLinus Torvalds Say Y if you are using OSF/1 binaries (like Netscape and Acrobat) 1711da177e4SLinus Torvalds with v4 shared libraries freely available from Compaq. If you're 1721da177e4SLinus Torvalds going to use shared libraries from Tru64 version 5.0 or later, say N. 1731da177e4SLinus Torvalds 1741da177e4SLinus Torvaldsconfig BINFMT_MISC 1751da177e4SLinus Torvalds tristate "Kernel support for MISC binaries" 176a7f7f624SMasahiro Yamada help 1771da177e4SLinus Torvalds If you say Y here, it will be possible to plug wrapper-driven binary 1781da177e4SLinus Torvalds formats into the kernel. You will like this especially when you use 1791da177e4SLinus Torvalds programs that need an interpreter to run like Java, Python, .NET or 1801da177e4SLinus Torvalds Emacs-Lisp. It's also useful if you often run DOS executables under 1811da177e4SLinus Torvalds the Linux DOS emulator DOSEMU (read the DOSEMU-HOWTO, available from 1821da177e4SLinus Torvalds <http://www.tldp.org/docs.html#howto>). Once you have 1831da177e4SLinus Torvalds registered such a binary class with the kernel, you can start one of 1841da177e4SLinus Torvalds those programs simply by typing in its name at a shell prompt; Linux 1851da177e4SLinus Torvalds will automatically feed it to the correct interpreter. 1861da177e4SLinus Torvalds 1871da177e4SLinus Torvalds You can do other nice things, too. Read the file 18834962fb8SMauro Carvalho Chehab <file:Documentation/admin-guide/binfmt-misc.rst> to learn how to use this 1898c27ceffSMauro Carvalho Chehab feature, <file:Documentation/admin-guide/java.rst> for information about how 1908c27ceffSMauro Carvalho Chehab to include Java support. and <file:Documentation/admin-guide/mono.rst> for 1911da177e4SLinus Torvalds information about how to include Mono-based .NET support. 1921da177e4SLinus Torvalds 1931da177e4SLinus Torvalds To use binfmt_misc, you will need to mount it: 1941da177e4SLinus Torvalds mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc 1951da177e4SLinus Torvalds 1961da177e4SLinus Torvalds You may say M here for module support and later load the module when 1971da177e4SLinus Torvalds you have use for it; the module is called binfmt_misc. If you 1981da177e4SLinus Torvalds don't know what to answer at this point, say Y. 199046d662fSAlex Kelly 200046d662fSAlex Kellyconfig COREDUMP 201046d662fSAlex Kelly bool "Enable core dump support" if EXPERT 202046d662fSAlex Kelly default y 203046d662fSAlex Kelly help 204046d662fSAlex Kelly This option enables support for performing core dumps. You almost 205046d662fSAlex Kelly certainly want to say Y here. Not necessary on systems that never 206046d662fSAlex Kelly need debugging or only ever run flawless code. 207006477f4SChristoph Hellwig 208006477f4SChristoph Hellwigendmenu 209