diff options
Diffstat (limited to 'tests')
19 files changed, 85 insertions, 8 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 9a38df6..fb98023 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,15 +1,43 @@ -check_PROGRAMS = simple main main-scoped big-dynstr +check_PROGRAMS = simple main main-scoped big-dynstr no-rpath -TESTS = plain-fail.sh plain-run.sh shrink-rpath.sh set-interpreter-short.sh \ +no_rpath_arch_TESTS = \ + no-rpath-amd64.sh \ + no-rpath-armel.sh \ + no-rpath-armhf.sh \ + no-rpath-hurd-i386.sh \ + no-rpath-i386.sh \ + no-rpath-ia64.sh \ + no-rpath-kfreebsd-amd64.sh \ + no-rpath-kfreebsd-i386.sh \ + no-rpath-mips.sh \ + no-rpath-mipsel.sh \ + no-rpath-powerpc.sh \ + no-rpath-s390.sh \ + no-rpath-sh4.sh \ + no-rpath-sparc.sh + +XFAIL_TESTS = no-rpath-ia64.sh + +src_TESTS = \ + plain-fail.sh plain-run.sh shrink-rpath.sh set-interpreter-short.sh \ set-interpreter-long.sh set-rpath.sh no-rpath.sh big-dynstr.sh \ set-rpath-library.sh -EXTRA_DIST = no-rpath $(TESTS) + +build_TESTS = \ + $(no_rpath_arch_TESTS) + +TESTS= $(src_TESTS) $(build_TESTS) + +EXTRA_DIST = no-rpath-prebuild $(src_TESTS) no-rpath-prebuild.sh TESTS_ENVIRONMENT = PATCHELF_DEBUG=1 +$(no_rpath_arch_TESTS): no-rpath-prebuild.sh + @ln -s $< $@ + CLEANFILES = big-dynstr.c clean-local: - $(RM) -r scratch + $(RM) -r scratch $(no_rpath_arch_TESTS) # by default, use -fpic to compile AM_CFLAGS = -fpic @@ -62,3 +90,7 @@ libbar_so_LDFLAGS = $(LDFLAGS_sharedlib) -Wl,-rpath,`pwd`/no-such-path libbar_scoped_so_SOURCES = bar.c libbar_scoped_so_LDFLAGS = $(LDFLAGS_sharedlib) +no_rpath_SOURCES = no-rpath.c +# no -fpic for no-rpath.o +no_rpath_CFLAGS = + diff --git a/tests/no-rpath b/tests/no-rpath Binary files differdeleted file mode 100755 index b454dfe..0000000 --- a/tests/no-rpath +++ /dev/null diff --git a/tests/no-rpath-prebuild.sh b/tests/no-rpath-prebuild.sh new file mode 100755 index 0000000..0fc96d2 --- /dev/null +++ b/tests/no-rpath-prebuild.sh @@ -0,0 +1,41 @@ +#! /bin/sh -e +ARCH="$1" +SCRATCH=scratch/no-rpath-$ARCH + +if [ -z "$ARCH" ]; then + ARCH=$(basename $0 .sh | sed -e 's/.*-//') +fi + +if [ -z "$ARCH" ] || [ $ARCH = prebuild ] ; then + echo "Architecture required" + exit 1 +fi + +no_rpath_bin="${srcdir}/no-rpath-prebuild/no-rpath-$ARCH" + +if [ ! -f $no_rpath_bin ]; then + echo "no 'no-rpath' binary for '$ARCH' in '${srcdir}/no-rpath-prebuild'" + exit 1 +fi + +rm -rf ${SCRATCH} +mkdir -p ${SCRATCH} + +cp $no_rpath_bin ${SCRATCH}/no-rpath + +oldRPath=$(../src/patchelf --print-rpath ${SCRATCH}/no-rpath) +if test -n "$oldRPath"; then exit 1; fi +../src/patchelf \ + --set-interpreter "$(../src/patchelf --print-interpreter ../src/patchelf)" \ + --set-rpath /foo:/bar:/xxxxxxxxxxxxxxx ${SCRATCH}/no-rpath + +newRPath=$(../src/patchelf --print-rpath ${SCRATCH}/no-rpath) +if ! echo "$newRPath" | grep -q '/foo:/bar'; then + echo "incomplete RPATH" + exit 1 +fi + +if [ "$(../src/patchelf --print-interpreter $no_rpath_bin)" \ + = "$(../src/patchelf --print-interpreter ../src/patchelf)" ]; then + cd ${SCRATCH} && ./no-rpath +fi diff --git a/tests/no-rpath-prebuild/no-rpath-amd64 b/tests/no-rpath-prebuild/no-rpath-amd64 Binary files differnew file mode 100755 index 0000000..f457704 --- /dev/null +++ b/tests/no-rpath-prebuild/no-rpath-amd64 diff --git a/tests/no-rpath-prebuild/no-rpath-armel b/tests/no-rpath-prebuild/no-rpath-armel Binary files differnew file mode 100755 index 0000000..8a9f879 --- /dev/null +++ b/tests/no-rpath-prebuild/no-rpath-armel diff --git a/tests/no-rpath-prebuild/no-rpath-armhf b/tests/no-rpath-prebuild/no-rpath-armhf Binary files differnew file mode 100755 index 0000000..aaaef60 --- /dev/null +++ b/tests/no-rpath-prebuild/no-rpath-armhf diff --git a/tests/no-rpath-prebuild/no-rpath-hurd-i386 b/tests/no-rpath-prebuild/no-rpath-hurd-i386 Binary files differnew file mode 100755 index 0000000..762c451 --- /dev/null +++ b/tests/no-rpath-prebuild/no-rpath-hurd-i386 diff --git a/tests/no-rpath-prebuild/no-rpath-i386 b/tests/no-rpath-prebuild/no-rpath-i386 Binary files differnew file mode 100755 index 0000000..07b3821 --- /dev/null +++ b/tests/no-rpath-prebuild/no-rpath-i386 diff --git a/tests/no-rpath-prebuild/no-rpath-ia64 b/tests/no-rpath-prebuild/no-rpath-ia64 Binary files differnew file mode 100755 index 0000000..4b65d7c --- /dev/null +++ b/tests/no-rpath-prebuild/no-rpath-ia64 diff --git a/tests/no-rpath-prebuild/no-rpath-kfreebsd-amd64 b/tests/no-rpath-prebuild/no-rpath-kfreebsd-amd64 Binary files differnew file mode 100755 index 0000000..d7a2644 --- /dev/null +++ b/tests/no-rpath-prebuild/no-rpath-kfreebsd-amd64 diff --git a/tests/no-rpath-prebuild/no-rpath-kfreebsd-i386 b/tests/no-rpath-prebuild/no-rpath-kfreebsd-i386 Binary files differnew file mode 100755 index 0000000..36c0ed3 --- /dev/null +++ b/tests/no-rpath-prebuild/no-rpath-kfreebsd-i386 diff --git a/tests/no-rpath-prebuild/no-rpath-mips b/tests/no-rpath-prebuild/no-rpath-mips Binary files differnew file mode 100755 index 0000000..2cc2d28 --- /dev/null +++ b/tests/no-rpath-prebuild/no-rpath-mips diff --git a/tests/no-rpath-prebuild/no-rpath-mipsel b/tests/no-rpath-prebuild/no-rpath-mipsel Binary files differnew file mode 100755 index 0000000..0a6ae88 --- /dev/null +++ b/tests/no-rpath-prebuild/no-rpath-mipsel diff --git a/tests/no-rpath-prebuild/no-rpath-powerpc b/tests/no-rpath-prebuild/no-rpath-powerpc Binary files differnew file mode 100755 index 0000000..9abb07e --- /dev/null +++ b/tests/no-rpath-prebuild/no-rpath-powerpc diff --git a/tests/no-rpath-prebuild/no-rpath-s390 b/tests/no-rpath-prebuild/no-rpath-s390 Binary files differnew file mode 100755 index 0000000..1334eab --- /dev/null +++ b/tests/no-rpath-prebuild/no-rpath-s390 diff --git a/tests/no-rpath-prebuild/no-rpath-sh4 b/tests/no-rpath-prebuild/no-rpath-sh4 Binary files differnew file mode 100755 index 0000000..6135f0a --- /dev/null +++ b/tests/no-rpath-prebuild/no-rpath-sh4 diff --git a/tests/no-rpath-prebuild/no-rpath-sparc b/tests/no-rpath-prebuild/no-rpath-sparc Binary files differnew file mode 100755 index 0000000..a87bb59 --- /dev/null +++ b/tests/no-rpath-prebuild/no-rpath-sparc diff --git a/tests/no-rpath.c b/tests/no-rpath.c new file mode 100644 index 0000000..e6a5b85 --- /dev/null +++ b/tests/no-rpath.c @@ -0,0 +1,6 @@ +#include <stdio.h> + +int main() { + printf("Hello world\n"); + return 0; +} diff --git a/tests/no-rpath.sh b/tests/no-rpath.sh index 20c720c..3efa7f1 100755 --- a/tests/no-rpath.sh +++ b/tests/no-rpath.sh @@ -4,7 +4,7 @@ SCRATCH=scratch/$(basename $0 .sh) rm -rf ${SCRATCH} mkdir -p ${SCRATCH} -cp ${srcdir}/no-rpath ${SCRATCH}/ +cp no-rpath ${SCRATCH}/ oldRPath=$(../src/patchelf --print-rpath ${SCRATCH}/no-rpath) if test -n "$oldRPath"; then exit 1; fi @@ -18,6 +18,4 @@ if ! echo "$newRPath" | grep -q '/foo:/bar'; then exit 1 fi -if [ "$(uname -m)" = i686 -a "$(uname -s)" = Linux ]; then - cd ${SCRATCH} && ./no-rpath -fi +cd ${SCRATCH} && ./no-rpath |