summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Remove debug statementEelco Dolstra2013-01-161-2/+0
|
* Add ‘--remove-needed’ optionEelco Dolstra2013-01-161-2/+42
| | | | | | | This allows removing the specified DT_NEEDED entries from the dynamic section. Closes #4.
* Comment out overly verbose debug lineEelco Dolstra2012-08-211-1/+1
|
* Rewrite the st_shndx field in symbol tablesEelco Dolstra2012-08-211-4/+29
| | | | | | | The st_shndx field in symbol tables specifies the index of the section that contains the symbol. Since we reorder sections, we need to update this field as well. Otherwise programs like gdb won't be able to resolve addresses to symbol names (and will print "?? ()" instead).
* Remove trailing whitespaceEelco Dolstra2012-08-211-52/+52
|
* * Support executables created by the Gold linker (NixOS/140). TheseEelco Dolstra2011-09-111-5/+40
| | | | | | | | | | | | are marked as ET_DYN (not ET_EXEC) and have a starting virtual address of 0 so they cannot grow downwards. In order not to run into a Linux kernel bug, the virtual address and the offset of the new PT_LOAD segment have to be equal; otherwise ld-linux segfaults. To ensure this, it may be necessary to add some padding to the executable (potentially a lot of padding, if the executable has a large uninitialised data segment). * Use size_t rather than off_t in some places.
* * Fix patching a little-endian binary on a big-endian machine. ThisEelco Dolstra2010-08-261-5/+5
| | | | | fixes the no-rpath test on powerpc-linux.
* * Update DT_RELA. Eelco Dolstra2010-08-261-1/+2
|
* I forgot in the last commit (enabling patchelf on the fuloong2f) to change someLluís Batlle i Rossell2010-07-291-2/+2
| | | | | | 4096 to the pageSize decided at the top of the module.
* Making patchelf work on a MIPS machine with 16KB page size (it's set in its ↵Lluís Batlle i Rossell2010-07-291-0/+5
| | | | | | | | kernel defconfig), the Lemote Fuloong 2F.
* * Segments can have a zero alignment, causing a divide-by-zero error.Eelco Dolstra2010-04-061-1/+2
| | | | | Ignore those. (Contributed by Zack Weinberg.)
* * Remove macros defined in elf.h.Eelco Dolstra2009-10-141-27/+0
|
* * Include a copy of Glibc's elf.h so that we're not dependant on theEelco Dolstra2009-10-143-2/+2676
| | | | | (lack of) elf.h on various platforms.
* * Use the e_type field instead of trying to guess whether we’reEelco Dolstra2009-06-161-6/+6
| | | | | dealing with an executable or dynamic library. Fixes NIXPKGS-98.
* * When using --force-rpath and the executable already has aEelco Dolstra2009-05-071-0/+7
| | | | | | | DT_RUNPATH, get rid of it. Sometimes you really want a DT_RPATH rather than a DT_RUNPATH, since the former is global (affects the search path of dependencies as well) while the latter is local.
* * Implement --version, --help.Eelco Dolstra2009-02-241-3/+18
|
* * Handle PT_LOAD program headers that become unaligned after addingEelco Dolstra2009-01-301-1/+7
| | | | | | an extra page to the start of the file. The dynamic loader doesn't like this (but the kernel doesn't mind).
* * Don't clobber previously written sections.Eelco Dolstra2008-06-031-3/+13
|
* * Overwriting replaced sections with 'X's revealed a bug: we weren'tEelco Dolstra2008-05-291-1/+7
| | | | | | updating the DT_GNU_HASH field in the .dynamic section, which is a problem when we move the .gnu.hash section.
* * Ancient FreeBSD compat.Eelco Dolstra2008-05-291-0/+4
|
* * Support executables without a .dynamic section (klcc generatesEelco Dolstra2008-05-281-33/+36
| | | | | 'em).
* * More duplicate code removal.Eelco Dolstra2008-05-281-143/+120
|
* * Removed some duplicate code (and work around an apparent g++ codeEelco Dolstra2008-05-281-83/+40
| | | | | generation bug).
* * When reordering the section headers, the e_shstrndx field in the ELFEelco Dolstra2008-05-281-1/+7
| | | | | header should be updated as well.
* * Add the DT_RUNPATH (or DT_RPATH) entry to the top of the .dynamicEelco Dolstra2008-05-281-11/+8
| | | | | section, otherwise "readelf" barfs for unknown reasons.
* * A first attempt at --set-rpath support for libraries. This is veryEelco Dolstra2008-05-281-3/+170
| | | | | | | | | | useful for the NVIDIA libGL.so, since setting an RPATH on libGL.so to include its dependencies (like libXext and libGLcore) makes it unnecessary to set an RPATH on the executables that use it. This is especially important for executables that use RUNPATH (like Wine) since there the paths in RUNPATH are ignored when resolving the dependencies of dependencies (i.e. RUNPATH is scoped).
* * Support DT_RUNPATH (in fact, prefer DT_RUNPATH over DT_RPATH unlessEelco Dolstra2008-05-271-9/+49
| | | | | --force-rpath is set).
* * Sort the program headers. This makes "strip" contain less aboutEelco Dolstra2008-05-271-1/+27
| | | | | | the resulting executables (but unfortunately doesn't fix NIXPKGS-85).
* * Typos.Eelco Dolstra2008-05-271-2/+2
|
* * patchelf: fix compilation on GCC 4.3.0.Eelco Dolstra2008-05-211-1/+1
|
* * Compilation fixes for FreeBSD 4.Eelco Dolstra2008-05-091-0/+22
|
* * Remove debug lines.Eelco Dolstra2007-12-071-3/+0
|
* * Various 64-bit fixes. Computation of the first page to use wasEelco Dolstra2007-12-071-24/+28
| | | | | | | | | incorrect if the ELF image maps everything above 2^32 (which seems to be the case for IA-64, which has the code starting at 0x4000000000000000). * IA-64 support. Not tested since I don't have an IA-64 machine, but readelf doesn't complain about the resulting executable.
* * When sorting the sections, make sure that we maintain the sh_linkEelco Dolstra2007-02-011-10/+49
| | | | | and sh_info fields. Tricky.
* * Keep the section headers sorted by offset. If we don't, we won'tEelco Dolstra2007-02-011-6/+50
| | | | | | correctly find the sections to be moved and some might be overwritten.
* * Support big endian binaries (such as on powerpc-linux).Eelco Dolstra2007-01-311-88/+115
|
* * .rel.plt is called .rela.plt on x86_64-linux.Eelco Dolstra2007-01-311-2/+6
|
* * Instantiate the right template depending on whether the file is 32Eelco Dolstra2007-01-311-16/+39
| | | | | | or 64 bits. (This is done at runtime, so patchelf can patch 32 *and* 64-bit executables on both 32 and 64-bit platforms).
* * Templatise the ElfFile class to take the Elf32_* types asEelco Dolstra2007-01-311-59/+74
| | | | | | arguments. The idea is that we can just pass the Elf64_* types to get a 64-bit version of the class.
* * Put the ELF operations in a class.Eelco Dolstra2007-01-311-35/+77
|
* * Print error messages on stderr.Eelco Dolstra2007-01-311-2/+2
|
* * Hack: if we can't find .rel.dyn, use .rel.got. No idea if thisEelco Dolstra2006-03-031-5/+20
| | | | | makes sense.
* * `--interpreter' -> `--set-interpreter'.Eelco Dolstra2005-10-111-2/+2
|
* * A `--debug' flag.Eelco Dolstra2005-10-041-16/+36
|
* * Fix computation of the new start page.Eelco Dolstra2005-10-031-15/+22
|
* * Use a bigger maximum size.Eelco Dolstra2005-10-021-1/+2
|
* * Handle the case where no RPATH is present, so the .dynamic table hasEelco Dolstra2005-10-011-75/+129
| | | | | to be increased.
* * Handle `--set-rpath' for the growing case.Eelco Dolstra2005-09-301-12/+39
|
* * `patchelf --set-rpath': short case.Eelco Dolstra2005-09-301-11/+28
|
* * Refactoring continued: `--shrink-rpath' works again.Eelco Dolstra2005-09-301-134/+61
|