The single option given operates on each FILE, editing in place.
Any option taking a string argument can also take a file by prefixing the argument with the @ symbol. See
EXAMPLES
--page-size SIZE
Uses the given page size instead of the default.
--set-interpreter INTERPRETER
Change the dynamic loader ("ELF interpreter") of executable given to INTERPRETER.
--print-interpreter
Prints the ELF interpreter of the executable.
--print-os-abi
Prints the OS ABI of the executable (EI_OSABI field of an ELF file).
--set-os-abi ABI
Changes the OS ABI of the executable (EI_OSABI field of an ELF file). The ABI parameter is pretty
flexible. For example, you can specify it as a "Linux", "linux", or even "lInUx" - all those names
will set EI_OSABI field of the ELF header to the value "3", which corresponds to Linux OS ABI.
The same applies to other ABI names - System V, FreeBSD, Solaris, etc.
--print-soname
Prints DT_SONAME entry of .dynamic section. Raises an error if DT_SONAME doesn't exist.
--set-soname SONAME
Sets DT_SONAME entry of a library to SONAME.
--set-rpath RUNPATH
Change the DT_RUNPATH of the executable or library to RUNPATH.
--add-rpath RUNPATH
Add RUNPATH to the existing DT_RUNPATH of the executable or library.
--remove-rpath
Removes the DT_RPATH or DT_RUNPATH entry of the executable or library.
--shrink-rpath
Remove from the DT_RUNPATH or DT_RPATH all directories that do not contain a library referenced by
DT_NEEDED fields of the executable or library.
For instance, if an executable references one library libfoo.so, has an RPATH
"/lib:/usr/lib:/foo/lib", and libfoo.so can only be found in /foo/lib, then the new RPATH will be
"/foo/lib".
--allowed-rpath-prefixes PREFIXES
Combined with the "--shrink-rpath" option, this can be used for further rpath tuning. For
instance, if an executable has an RPATH "/tmp/build-foo/.libs:/foo/lib", it is probably desirable
to keep the "/foo/lib" reference instead of the "/tmp" entry.
--print-rpath
Prints the DT_RUNPATH or DT_RPATH for an executable or library.
--force-rpath
Forces the use of the obsolete DT_RPATH in the file instead of DT_RUNPATH. By default DT_RPATH is
converted to DT_RUNPATH.
--add-needed LIBRARY
Adds a declared dependency on a dynamic library (DT_NEEDED). This option can be given multiple
times.
--replace-needed LIB_ORIG LIB_NEW
Replaces a declared dependency on a dynamic library with another one (DT_NEEDED). This option can
be given multiple times.
--remove-needed LIBRARY
Removes a declared dependency on LIBRARY (DT_NEEDED entry). This option can be given multiple
times.
--print-needed
Prints all DT_NEEDED entries of the executable.
--no-default-lib
Marks the object so that the search for dependencies of this object will ignore any default
library search paths.
--no-sort
Do not sort program headers or section headers. This is useful when debugging patchelf, because
it makes it easier to read diffs of the output of "readelf -a".
--add-debug-tag
Adds DT_DEBUG tag to the .dynamic section if not yet present in an ELF object. A shared library
(-shared) by default does not receive DT_DEBUG tag. This means that when a shared library has an
entry point (so that it can be run as an executable), the debugger does not connect to it
correctly and symbols are not resolved.
--print-execstack
Prints the state of the executable flag of the GNU_STACK program header, if present.
--clear-execstack
Clears the executable flag of the GNU_STACK program header, or adds a new header.
--set-execstack
Sets the executable flag of the GNU_STACK program header, or adds a new header.
--rename-dynamic-symbols NAME_MAP_FILE
Renames dynamic symbols. The name map file should contain lines with the old and the new name
separated by spaces like this:
old_name new_name
Symbol names do not contain version specifier that are also shown in the output of the nm -D
command from binutils. So instead of the name write@GLIBC_2.2.5 it is just write.
--output FILE
Set the output file name. If not specified, the input will be modified in place.
--debug
Prints details of the changes made to the input file.
--version
Shows the version of patchelf.