summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJörg Thalheim <joerg@thalheim.io>2022-11-06 22:39:38 +0100
committerJörg Thalheim <joerg@thalheim.io>2022-11-06 22:40:51 +0100
commitf7b184c0044d32924f01b8b8003e59d1ac49ba00 (patch)
tree73778c808df6cda25ccb9d2aa6c6301035720012
parenta1f7aa8bda432831183b4f33531f2e133ab39cb4 (diff)
downloadpatchelf-f7b184c0044d32924f01b8b8003e59d1ac49ba00.tar.gz
fix checkPhase for cross builds
fixes https://github.com/NixOS/patchelf/issues/417
-rw-r--r--flake.nix4
-rw-r--r--tests/Makefile.am2
-rwxr-xr-xtests/build-id.sh2
-rwxr-xr-xtests/force-rpath.sh2
-rwxr-xr-xtests/no-gnu-hash.sh3
-rwxr-xr-xtests/no-rpath-pie-powerpc.sh3
-rwxr-xr-xtests/phdr-corruption.sh3
7 files changed, 13 insertions, 6 deletions
diff --git a/flake.nix b/flake.nix
index 8ab9454..5835dca 100644
--- a/flake.nix
+++ b/flake.nix
@@ -114,6 +114,10 @@
patchelf = patchelfFor nixpkgs.legacyPackages.${system};
default = self.packages.${system}.patchelf;
+ # This is a good test to see if packages can be cross-compiled. It also
+ # tests if our testsuite uses target-prefixed executable names.
+ patchelf-musl-cross = patchelfFor nixpkgs.legacyPackages.${system}.pkgsCross.musl64;
+
patchelf-win32 = (patchelfFor (pkgsCrossForMingw system).mingw32).overrideAttrs (old: {
NIX_CFLAGS_COMPILE = "-static";
});
diff --git a/tests/Makefile.am b/tests/Makefile.am
index cb80d9a..1fd3ff7 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -52,7 +52,7 @@ TESTS = $(src_TESTS) $(build_TESTS)
EXTRA_DIST = no-rpath-prebuild $(src_TESTS) no-rpath-prebuild.sh invalid-elf endianness empty-note
-TESTS_ENVIRONMENT = PATCHELF_DEBUG=1 OBJDUMP=$(OBJDUMP) READELF=$(READELF)
+TESTS_ENVIRONMENT = PATCHELF_DEBUG=1 OBJDUMP=$(OBJDUMP) READELF=$(READELF) OBJCOPY=$(OBJCOPY)
$(no_rpath_arch_TESTS): no-rpath-prebuild.sh
@ln -s $< $@
diff --git a/tests/build-id.sh b/tests/build-id.sh
index 94ddc4c..dc44a7a 100755
--- a/tests/build-id.sh
+++ b/tests/build-id.sh
@@ -13,4 +13,4 @@ long_rpath="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
--set-rpath "$long_rpath" "${SCRATCH}/libbuildid.so"
# older readelf versions do not recognize build id, but we can grep by constant
-readelf -n "${SCRATCH}/libbuildid.so" | grep -q -F -e 'Build ID' -e 'Unknown note type: (0x00000003)'
+${READELF} -n "${SCRATCH}/libbuildid.so" | grep -q -F -e 'Build ID' -e 'Unknown note type: (0x00000003)'
diff --git a/tests/force-rpath.sh b/tests/force-rpath.sh
index 6b1422a..c9b9a5d 100755
--- a/tests/force-rpath.sh
+++ b/tests/force-rpath.sh
@@ -1,6 +1,6 @@
#! /bin/sh -e
SCRATCH=scratch/$(basename $0 .sh)
-OBJDUMP=${OBJDDUMP:-objdump}
+OBJDUMP=${OBJDUMP:-objdump}
rm -rf ${SCRATCH}
mkdir -p ${SCRATCH}
diff --git a/tests/no-gnu-hash.sh b/tests/no-gnu-hash.sh
index a98f459..0ce93f4 100755
--- a/tests/no-gnu-hash.sh
+++ b/tests/no-gnu-hash.sh
@@ -1,12 +1,13 @@
#! /bin/sh -e
SCRATCH=scratch/$(basename $0 .sh)
+STRIP=${STRIP:-strip}
rm -rf ${SCRATCH}
mkdir -p ${SCRATCH}
cp simple ${SCRATCH}/
-strip --remove-section=.gnu.hash ${SCRATCH}/simple
+${STRIP} --remove-section=.gnu.hash ${SCRATCH}/simple
# Check if patchelf handles binaries with GNU_HASH in dynamic section but
# without .gnu.hash section
diff --git a/tests/no-rpath-pie-powerpc.sh b/tests/no-rpath-pie-powerpc.sh
index 5bdb785..b469f9b 100755
--- a/tests/no-rpath-pie-powerpc.sh
+++ b/tests/no-rpath-pie-powerpc.sh
@@ -1,6 +1,7 @@
#! /bin/sh -e
set -x
SCRATCH=scratch/no-rpath-pie-powerpc
+READELF=${READELF:-readelf}
no_rpath_bin="${srcdir}/no-rpath-prebuild/no-rpath-pie-powerpc"
@@ -27,7 +28,7 @@ if ! echo "$newRPath" | grep -q '/foo:/bar'; then
fi
# Tests for powerpc PIE endianness regressions
-readelfData=$(readelf -l ${SCRATCH}/no-rpath 2>&1)
+readelfData=$(${READELF} -l ${SCRATCH}/no-rpath 2>&1)
if [ $(echo "$readelfData" | grep --count "PHDR") != 1 ]; then
# Triggered if PHDR errors appear on stderr
diff --git a/tests/phdr-corruption.sh b/tests/phdr-corruption.sh
index 0a36882..1e62101 100755
--- a/tests/phdr-corruption.sh
+++ b/tests/phdr-corruption.sh
@@ -4,6 +4,7 @@ PATCHELF="../src/patchelf"
SONAME="phdr-corruption.so"
SCRATCH="scratch/$(basename $0 .sh)"
SCRATCH_SO="${SCRATCH}/${SONAME}"
+READELF=${READELF:-readelf}
rm -rf "${SCRATCH}"
mkdir -p "${SCRATCH}"
@@ -12,7 +13,7 @@ cp "${SONAME}" "${SCRATCH}"
"${PATCHELF}" --set-rpath "$(pwd)" "${SCRATCH_SO}"
# Check for PT_PHDR entry VirtAddr corruption
-readelfData=$(readelf -l "${SCRATCH_SO}" 2>&1)
+readelfData=$(${READELF} -l "${SCRATCH_SO}" 2>&1)
if [ $(echo "$readelfData" | grep --count "PHDR") != 1 ]; then
# Triggered if PHDR errors appear on stderr