Commit Graph

765 Commits

Author SHA1 Message Date
Breno Rodrigues Guimarães b9474398c5
Merge branch 'NixOS:master' into breno.rename_syms 2023-02-21 06:23:42 -03:00
Breno Rodrigues Guimarães 5380f3b3a6
Update patchelf.1
Co-authored-by: Jörg Thalheim <Mic92@users.noreply.github.com>
2023-02-21 06:12:44 -03:00
Breno Rodrigues Guimaraes cd0926c73f Add description to patchelf.1 2023-02-20 19:32:47 -03:00
bors[bot] 8d3188daa7
Merge #463
463: Apply fixes from shellcheck r=Mic92 a=Mic92



Co-authored-by: Jörg Thalheim <joerg@thalheim.io>
2023-02-20 22:20:05 +00:00
Jörg Thalheim a187790b47 bump github actions version 2023-02-20 23:18:33 +01:00
Jörg Thalheim be4b84635f tests: apply suggestions from shellcheck 2023-02-20 23:18:33 +01:00
Breno Rodrigues Guimaraes 0b6b666873 Add support for symbol name remapping 2023-02-20 18:43:01 -03:00
bors[bot] 365e1e0186
Merge #456
456: Add options to print, clear and set executable stack state r=Mic92 a=cgzones



Co-authored-by: Christian Göttsche <cgzones@googlemail.com>
2023-02-20 21:24:57 +00:00
bors[bot] 85b3460be0
Merge #458
458: Bump cachix/install-nix-action from 18 to 19 r=Mic92 a=dependabot[bot]



Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-19 07:01:21 +00:00
dependabot[bot] 0d91ddc99d
Bump cachix/install-nix-action from 18 to 19
Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 18 to 19.
- [Release notes](https://github.com/cachix/install-nix-action/releases)
- [Commits](https://github.com/cachix/install-nix-action/compare/v18...v19)

---
updated-dependencies:
- dependency-name: cachix/install-nix-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-13 02:52:26 +00:00
Christian Göttsche f7d304eeb1 Add options to print, clear and set executable stack state
Add options the modify the state of the executable flag of the GNU_STACK
program header. That header indicates whether the object is requiring an
executable stack.
2023-01-28 23:27:34 +01:00
Jörg Thalheim 5908e16cd5 bump version 2023-01-10 20:37:51 +01:00
bors[bot] 583fd5a360
Merge #447
447: Split segment size fix r=Mic92 a=otherjason



Co-authored-by: Jason <otherjason@nodomain.com>
2023-01-10 17:28:47 +00:00
Jason 3a6d771127 Revert "shiftFile: when splitting a segment into two pieces, preserve the original flags in both"
This reverts commit f4f1848e42.
2022-12-28 23:47:36 -05:00
bors[bot] c6f4069f6f
Merge #452
452: Add bors.toml r=Mic92 a=Mic92



Co-authored-by: Jörg Thalheim <joerg@thalheim.io>
2022-12-27 09:58:34 +00:00
Jörg Thalheim 2b1789b68c bors: add configuration 2022-12-27 10:58:02 +01:00
Jörg Thalheim ce1009850c bump nixpkgs 2022-12-27 10:16:02 +01:00
Jörg Thalheim 25307883a5
Merge pull request #451 from yairKoskas/master
Fix Out-of-bounds read in the function modifySoname
2022-12-27 09:09:45 +00:00
yairKoskas e9d3394659 Out-of-bounds read exists in the function modifySoname 2022-12-27 09:19:52 +02:00
Jason 8d2cb4f9ab Fix bug in file shifting that could cause conflicting PT_LOAD segments
When a section in the file needs to be enlarged (e.g. to accommodate
setting a larger RPATH), shiftFile() is used to shift all content
following the growing section to a later position in the file.

Commit 109b771f53 introduced logic to
ensure that, after the segment split, no sections span multiple
segments. This is done by sliding the portion of the segment after the
split point later in the file, then adding a new PT_LOAD segment that
contains the preceding data plus the extra room that is being added. The
existing implementation does this by simply adding
`extraPages*getPageSize()` bytes to the number of bytes ahead of the
split point in the segment.

However, this approach can result in two PT_LOAD segments that overlap
when page boundaries are taken into account. As an example, this PT_LOAD
section (taken from a Python 3.10 binary):

LOAD           0x0000000000000000 0x0000000000400000 0x0000000000400000
               0x0000000000000948 0x0000000000000948  R E    0x200000

is split into the following two sections:

LOAD           0x0000000000000000 0x00000000003ff000 0x00000000003ff000
               0x0000000000001594 0x0000000000001594  R E    0x1000
LOAD           0x0000000000001594 0x0000000000400594 0x0000000000400594
               0x00000000000003b4 0x00000000000003b4  R E    0x1000

Note that the two PT_LOAD sections both contain the memory page at
address 0x400000. The Linux kernel's ELF loader (at least as of v4.18)
does not accept this as a valid ELF executable, triggering a segfault
with si_code=SI_KERNEL immediately when the binary is executed.

The fix here is to set the length of the segment that comes before the
split point more carefully; instead of adding `extraPages*getPageSize()`
bytes to the portion of the segment that came before the split, the
actual number of padding bytes that were needed (before rounding up to
the next multiple of the page size) are used. This avoids the overlap
in the PT_LOAD segments and makes the output files executable again.
2022-12-02 10:01:41 -05:00
Jason f4f1848e42 shiftFile: when splitting a segment into two pieces, preserve the original flags in both 2022-12-02 09:58:49 -05:00
Jörg Thalheim 3f90e4925c
Merge pull request #445 from NixOS/win32
switch back to upstream nixpkgs for windows build
2022-11-17 19:31:39 +01:00
Jörg Thalheim 0826d9d4a8 switch back to upstream nixpkgs for windows build 2022-11-17 18:33:59 +01:00
Jörg Thalheim adf5c05a5e
Merge pull request #444 from NixOS/netbsd
cross compile to netbsd
2022-11-14 10:43:54 +01:00
Jörg Thalheim db6f4e6bb0 cross compile to netbsd 2022-11-14 10:38:29 +01:00
Jörg Thalheim fe789649fa
Merge pull request #443 from heirecka/also-pass-strip-to-tests
Also pass STRIP to the tests
2022-11-08 10:11:25 +01:00
Jörg Thalheim eab1466d9a
Merge pull request #442 from NixOS/ci
Ci
2022-11-08 10:07:07 +01:00
Heiko Becker d9ff398634 Also pass STRIP to the tests
It is used in tests/no-gnu-hash.sh.
2022-11-08 00:21:26 +01:00
Jörg Thalheim 204f950704 put version name in built exe files 2022-11-07 18:26:36 +01:00
Jörg Thalheim 016ca3d8e0 bump version 2022-11-07 18:26:36 +01:00
Jörg Thalheim ad0265668f
Merge pull request #441 from NixOS/ci
bump version 0.17.0
2022-11-07 10:57:32 +01:00
Jörg Thalheim e106c599eb bump version 0.17.0 2022-11-06 23:22:11 +01:00
Jörg Thalheim 0e5a9f0cc8
Merge pull request #438 from NixOS/ci
build patchelf on windows
2022-11-06 22:55:54 +01:00
Jörg Thalheim 199b134356
Merge branch 'master' into ci 2022-11-06 22:46:02 +01:00
Jörg Thalheim d6ee352ee6
Merge pull request #440 from NixOS/fix-cross
fix checkPhase for cross builds
2022-11-06 22:44:10 +01:00
Jörg Thalheim f7b184c004 fix checkPhase for cross builds
fixes https://github.com/NixOS/patchelf/issues/417
2022-11-06 22:40:51 +01:00
Jörg Thalheim 2b42ac343d ci: build windows binaries
build patchelf on window
2022-11-06 22:18:27 +01:00
Jörg Thalheim a1f7aa8bda
Merge pull request #439 from NixOS/mingw
build patchelf on windows
2022-11-06 21:12:06 +01:00
Jörg Thalheim efeec8d709 build patchelf on window 2022-11-06 21:08:25 +01:00
Jörg Thalheim b526538610 build patchelf on window 2022-11-06 20:28:27 +01:00
Jörg Thalheim 07bbf47e9c
Merge pull request #437 from NixOS/ci
make objdump/objcopy/readelf configurable and respect cross-compiling…
2022-11-06 15:49:06 +01:00
Jörg Thalheim 053c2eb871
Merge pull request #436 from NixOS/ci
Refactor flake.nix
2022-11-06 15:38:53 +01:00
Jörg Thalheim b0599fe776 make objdump/objcopy/readelf configurable and respect cross-compiling related prefixes 2022-11-06 15:38:38 +01:00
Jörg Thalheim c543a45f7f remove aarch64 from build package set for now 2022-11-06 15:35:15 +01:00
Jörg Thalheim b3f3feea53 drop patchelf-musl on i686 2022-11-06 15:28:05 +01:00
Jörg Thalheim 94ef48393a refactor flake to no longer use overlay + re-import nixpkgs 2022-11-06 15:25:50 +01:00
Jörg Thalheim 5c80c59a4c drop deprecated flake output attributes 2022-11-06 15:07:43 +01:00
Jörg Thalheim 78a2a707e4
Merge pull request #435 from NixOS/ci
add workaround for readelf from binutils 2.30
2022-11-06 14:03:23 +01:00
Jörg Thalheim 19c1a2fdd6 add workaround for readelf from binutils 2.30 2022-11-06 13:58:44 +01:00
Jörg Thalheim ba47f658cb
Merge pull request #434 from NixOS/ci
update vendored elf file
2022-11-06 10:54:47 +01:00