Go to file
Eelco Dolstra 21a85cc1c6 Update version 2014-01-14 13:33:39 +01:00
src In symbol tables, rewrite st_value for STT_SECTION entries 2014-01-14 13:23:07 +01:00
tests Rewrite tests in automake 2012-07-10 18:16:24 -04:00
.gitignore Add a .gitignore for all file generated by ./bootstrap.sh 2012-07-10 18:16:24 -04:00
BUGS * Document other people's bugs ;-) 2005-09-29 08:59:45 +00:00
COPYING * Updated the license to GPLv3. 2009-10-14 13:43:12 +00:00
Makefile.am Use automake support to install docs 2012-07-10 18:16:24 -04:00
README Update version 2014-01-14 13:33:39 +01:00
bootstrap.sh Use autoreconf to bootstrap the project 2012-07-10 18:16:24 -04:00
configure.ac Don't use the "version suffix" stuff in releaseTools.sourceTarball 2013-03-06 16:58:24 +01:00
patchelf.1 * Added a manual page contributed by Jeremy Sanders 2010-06-10 08:55:30 +00:00
patchelf.spec.in Build Fedora 18 RPMs 2013-05-08 13:59:46 +02:00
release.nix Prepare 0.7 release 2014-01-07 15:54:25 +01:00
version Update version 2014-01-14 13:33:39 +01:00

README

PatchELF is a simple utility for modifing existing ELF executables and
libraries.  In particular, it can do the following:

* Change the dynamic loader ("ELF interpreter") of executables:

  $ patchelf --set-interpreter /lib/my-ld-linux.so.2 my-program

* Change the RPATH of executables and libraries:

  $ patchelf --set-rpath /opt/my-libs/lib:/other-libs my-program

* Shrink the RPATH of executables and libraries:

  $ patchelf --shrink-rpath my-program

  This removes from the 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".

* Remove declared dependencies on dynamic libraries (DT_NEEDED
  entries):

  $ patchelf --remove-needed libfoo.so.1 my-program

  This option can be given multiple times.


AUTHOR

Copyright 2004-2013 Eelco Dolstra <eelco.dolstra@logicblox.com>.


LICENSE

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at
your option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.


HOMEPAGE

http://nixos.org/patchelf.html


BUGS

The `strip' command from binutils generated broken executables when
applied to the output of patchelf (if `--set-rpath' or
`--set-interpreter' with a larger path than the original is used).
This appears to be a bug in binutils
(http://bugs.strategoxt.org/browse/NIXPKGS-85).


RELEASE HISTORY

0.8 (January 15, 2014):

* Fix a segfault caused by certain illegal entries in symbol tables.

0.7 (January 7, 2014):

* Rewrite section indices in symbol tables. This for instance allows
  gdb to show proper backtraces.

* Added `--remove-needed' option.

0.6 (November 7, 2011):

* Hacky support for executables created by the Gold linker.

* Support segments with an alignment of 0 (contributed by Zack
  Weinberg).

* Added a manual page (contributed by Jeremy Sanders
  <jeremy@jeremysanders.net>).

0.5 (November 4, 2009):

* Various bugfixes.

* `--force-rpath' now deletes the DT_RUNPATH if it is present.

0.4 (June 4, 2008):

* Support for growing the RPATH on dynamic libraries.

* IA-64 support (not tested) and related 64-bit fixes.

* FreeBSD support.

* `--set-rpath', `--shrink-rpath' and `--print-rpath' now prefer
  DT_RUNPATH over DT_RPATH, which is obsolete.  When updating, if both
  are present, both are updated.  If only DT_RPATH is present, it is
  converted to DT_RUNPATH unless `--force-rpath' is specified.  If
  neither is present, a DT_RUNPATH is added unless `--force-rpath' is
  specified, in which case a DT_RPATH is added.

0.3 (May 24, 2007):

* Support for 64-bit ELF binaries (such as on x86_64-linux).

* Support for big-endian ELF binaries (such as on powerpc-linux).

* Various bugfixes.

0.2 (January 15, 2007):

* Provides a hack to get certain programs (such as the
  Belastingaangifte 2005) to work.

0.1 (October 11, 2005):

* Initial release.