ELFEDIT(1)
π elfedit(1) β GNU Development Tools β¨
okay bestie, so this is elfedit, a lil tool from the GNU Development Tools crew, and before we get into it: yes, it's a manual page, yes it looks scary, but it's literally just a formatter for ELF headers and you're gonna slay it π«Ά
β¨ NAME β¨
elfedit β update ELF header and program property of ELF files π
πΈ SYNOPSIS πΈ
elfedit [--input-mach=machine]
[--input-type=type]
[--input-osabi=osabi]
[--input-abiversion=version]
--output-mach=machine
--output-type=type
--output-osabi=osabi
--output-abiversion=version
--enable-x86-feature=feature
--disable-x86-feature=feature
[-v|--version]
[-h|--help]
elffile...
π¦ DESCRIPTION π¦
so elfedit goes in and updates the ELF header and program property of ELF files β but only the ones that match the ELF machine and file types you asked for. the options are the whole vibe check here: they decide how and which fields in the ELF header and program property get updated. iykyk π
and then elffile... are the actual ELF files getting updated. 32-bit and 64-bit ELF files are both supported, and so are archives containing ELF files. no cap, both sizes, archives too π§
π OPTIONS π
the long and short forms of options, shown here as alternatives, are equivalent β pick whichever one speaks to you, they're twins fr fr. and listen: at least one of --output-mach, --output-type, --output-osabi, --output-abiversion, --enable-x86-feature and --disable-x86-feature must be given. like, at minimum. one. otherwise what are we even doing here π
--input-mach=machineβ sets the matching input ELF machine type to machine. if you don't pass--input-mach, it'll match any ELF machine types. the supported ELF machine types arei386,IAMCU,L1OM,K1OMandx86-64β¨--output-mach=machineβ changes the ELF machine type in the ELF header to machine. supported ELF machine types are the same as--input-mach.--input-type=typeβ sets the matching input ELF file type to type. if--input-typeisn't specified, it will match any ELF file types. the supported ELF file types arerel,execanddynπ--output-type=typeβ changes the ELF file type in the ELF header to type. the supported ELF types are the same as--input-type.--input-osabi=osabiβ sets the matching input ELF file OSABI to osabi. if--input-osabiisn't specified, it'll match any ELF OSABIs. and the supported ELF OSABIs are:none,HPUX,NetBSD,GNU,Linux(alias forGNU),Solaris,AIX,Irix,FreeBSD,TRU64,Modesto,OpenBSD,OpenVMS,NSK,AROSandFenixOSπ--output-osabi=osabiβ changes the ELF OSABI in the ELF header to osabi. supported ELF OSABI are the same as--input-osabi.--input-abiversion=versionβ sets the matching input ELF file ABIVERSION to version. version must be between0and255. if--input-abiversionisn't specified, it will match any ELF ABIVERSIONs.--output-abiversion=versionβ changes the ELF ABIVERSION in the ELF header to version. version must be between0and255. same range, no exceptions bestie π--enable-x86-feature=featureβ sets the feature bit in program property inexecordynELF files with machine types ofi386orx86-64. the supported features areibt,shstk,lam_u48andlam_u57π₯--disable-x86-feature=featureβ clears the feature bit in program property inexecordynELF files with machine types ofi386orx86-64. supported features are the same as--enable-x86-feature.
π«Ά note:--enable-x86-featureand--disable-x86-featureare available only on hosts with mmap support. if your host doesn't have it, these two are just not invited to the party, sorry π
-v,--versionβ displays the version number ofelfedit. cute and useful.-h,--helpβ displays the command-line options understood byelfedit. aka the whole menu of what this thing can do π@fileβ reads command-line options from file. the options read get inserted right in place of the original@fileoption. and if file doesn't exist, or can't be read? then the option is treated literally, and not removed. it stays. it commits. π
options in file are separated by whitespace. a whitespace character may be included in an option by surrounding the entire option in either single or double quotes. any character (including a backslash) may be included by prefixing the character to be included with a backslash. and the file may itself contain additional @file options β any such options will be processed recursively, so it's turtles all the way down π’β¨
π SEE ALSO π
readelf(1), and the Info entries for binutils. go read those too, bestie, they're iconic.
β COPYRIGHT β
Copyright (c) 1991-2026 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
and that's the whole thing, periodt π
this page is binutils-2.47, dated 2026-07-30 β go forth and edit some ELF headers, you've got this ππ¦π
π¦ where this page comes from
- arch rolling: avr-binutils 2.47-1 Β· GPL
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms