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