File tree 32 files changed +275
-282
lines changed
32 files changed +275
-282
lines changed Original file line number Diff line number Diff line change 47
47
needs : [build_windows]
48
48
runs-on : windows-latest
49
49
steps :
50
- - uses : actions/checkout@v2
50
+ - uses : actions/checkout@v3
51
51
- uses : actions/download-artifact@v3
52
52
with :
53
53
name : patchelf
Original file line number Diff line number Diff line change 1
1
#! /bin/sh -e
2
- SCRATCH=scratch/$( basename $0 .sh)
2
+ SCRATCH=scratch/$( basename " $0 " .sh)
3
3
READELF=${READELF:- readelf}
4
4
5
- rm -rf ${SCRATCH}
6
- mkdir -p ${SCRATCH}
5
+ rm -rf " ${SCRATCH} "
6
+ mkdir -p " ${SCRATCH} "
7
7
8
- cp libsimple.so ${SCRATCH} /
8
+ cp libsimple.so " ${SCRATCH} " /
9
9
10
10
# check there is no DT_DEBUG tag
11
- debugTag=$( $READELF -d ${SCRATCH} /libsimple.so)
11
+ debugTag=$( $READELF -d " ${SCRATCH} /libsimple.so" )
12
12
echo " .dynamic before: $debugTag "
13
13
if echo " $debugTag " | grep -q DEBUG; then
14
14
echo " failed --add-debug-tag test. Expected no line with (DEBUG), got: $debugTag "
15
15
exit 1
16
16
fi
17
17
18
18
# set DT_DEBUG
19
- ../src/patchelf --add-debug-tag ${SCRATCH} /libsimple.so
19
+ ../src/patchelf --add-debug-tag " ${SCRATCH} /libsimple.so"
20
20
21
21
# check there is DT_DEBUG tag
22
- debugTag=$( $READELF -d ${SCRATCH} /libsimple.so)
22
+ debugTag=$( $READELF -d " ${SCRATCH} /libsimple.so" )
23
23
echo " .dynamic before: $debugTag "
24
24
if ! echo " $debugTag " | grep -q DEBUG; then
25
25
echo " failed --add-debug-tag test. Expected line with (DEBUG), got: $debugTag "
Original file line number Diff line number Diff line change 1
1
#! /bin/sh -e
2
- SCRATCH=scratch/$( basename $0 .sh)
2
+ SCRATCH=scratch/$( basename " $0 " .sh)
3
3
4
- rm -rf ${SCRATCH}
5
- mkdir -p ${SCRATCH}
6
- mkdir -p ${SCRATCH} /libsA
7
- mkdir -p ${SCRATCH} /libsB
4
+ rm -rf " ${SCRATCH} "
5
+ mkdir -p " ${SCRATCH} "
6
+ mkdir -p " ${SCRATCH} /libsA"
7
+ mkdir -p " ${SCRATCH} /libsB"
8
8
9
- cp main ${SCRATCH} /
10
- cp libfoo.so ${SCRATCH} /libsA/
11
- cp libbar.so ${SCRATCH} /libsB/
9
+ cp main " ${SCRATCH} " /
10
+ cp libfoo.so " ${SCRATCH} /libsA/"
11
+ cp libbar.so " ${SCRATCH} /libsB/"
12
12
13
- ../src/patchelf --force-rpath --add-rpath $( pwd) /${SCRATCH} /libsA ${SCRATCH} /main
14
- ../src/patchelf --force-rpath --add-rpath $( pwd) /${SCRATCH} /libsB ${SCRATCH} /main
13
+ ../src/patchelf --force-rpath --add-rpath " $( pwd) /${SCRATCH} /libsA" " ${SCRATCH} /main"
14
+ ../src/patchelf --force-rpath --add-rpath " $( pwd) /${SCRATCH} /libsB" " ${SCRATCH} /main"
15
15
16
16
if test " $( uname) " = FreeBSD; then
17
- export LD_LIBRARY_PATH=$( pwd) /${SCRATCH} /libsB
17
+ LD_LIBRARY_PATH=" $( pwd) /${SCRATCH} /libsB"
18
+ export LD_LIBRARY_PATH
18
19
fi
19
20
20
21
exitCode=0
21
- (cd ${SCRATCH} && ./main) || exitCode=$?
22
+ (cd " ${SCRATCH} " && ./main) || exitCode=$?
22
23
23
24
if test " $exitCode " ! = 46; then
24
25
echo " bad exit code!"
Original file line number Diff line number Diff line change 1
1
#! /bin/sh -e
2
- SCRATCH=scratch/$( basename $0 .sh)
2
+ SCRATCH=scratch/$( basename " $0 " .sh)
3
3
4
- rm -rf ${SCRATCH}
5
- mkdir -p ${SCRATCH}
4
+ rm -rf " ${SCRATCH} "
5
+ mkdir -p " ${SCRATCH} "
6
6
7
- cp main ${SCRATCH} /
8
- RANDOM_PATH =$( pwd) /${SCRATCH} /$RANDOM
9
- echo -n ${RANDOM_PATH} >> ${SCRATCH} /add-rpath
7
+ cp main " ${SCRATCH} " /
8
+ SOME_PATH =$( pwd) /${SCRATCH} /some-path
9
+ printf " %s " " $SOME_PATH " >> " ${SCRATCH} " /add-rpath
10
10
11
- ! ../src/patchelf --print-rpath ${SCRATCH} /main | grep $RANDOM_PATH
12
- ../src/patchelf --add-rpath @${SCRATCH} /add-rpath ${SCRATCH} /main
13
- ../src/patchelf --print-rpath ${SCRATCH} /main | grep $RANDOM_PATH
11
+ ../src/patchelf --print-rpath " ${SCRATCH} " /main | grep " $SOME_PATH " && exit 1
12
+ ../src/patchelf --add-rpath @" ${SCRATCH} " /add-rpath " ${SCRATCH} " /main
13
+ ../src/patchelf --print-rpath " ${SCRATCH} " /main | grep " $SOME_PATH "
14
14
15
15
# should print error message and fail
16
- ../src/patchelf --set-rpath @${SCRATCH} /does-not-exist ${SCRATCH} /main 2>&1 | grep " getting info about"
16
+ ../src/patchelf --set-rpath @" ${SCRATCH} " /does-not-exist " ${SCRATCH} " /main 2>&1 | grep " getting info about"
Original file line number Diff line number Diff line change 1
1
#! /bin/sh -e
2
- SCRATCH=scratch/$( basename $0 .sh)
2
+ SCRATCH=scratch/$( basename " $0 " .sh)
3
3
4
- rm -rf ${SCRATCH}
5
- mkdir -p ${SCRATCH}
6
- mkdir -p ${SCRATCH} /libsA
7
- mkdir -p ${SCRATCH} /libsB
4
+ rm -rf " ${SCRATCH} "
5
+ mkdir -p " ${SCRATCH} "
6
+ mkdir -p " ${SCRATCH} /libsA"
7
+ mkdir -p " ${SCRATCH} /libsB"
8
8
9
- cp big-dynstr ${SCRATCH} /
10
- cp libfoo.so ${SCRATCH} /libsA/
11
- cp libbar.so ${SCRATCH} /libsB/
9
+ cp big-dynstr " ${SCRATCH} /"
10
+ cp libfoo.so " ${SCRATCH} /libsA/"
11
+ cp libbar.so " ${SCRATCH} /libsB/"
12
12
13
- oldRPath=$( ../src/patchelf --print-rpath ${SCRATCH} /big-dynstr)
13
+ oldRPath=$( ../src/patchelf --print-rpath " ${SCRATCH} /big-dynstr" )
14
14
if test -z " $oldRPath " ; then oldRPath=" /oops" ; fi
15
- ../src/patchelf --force-rpath --set-rpath $oldRPath :$( pwd) /${SCRATCH} /libsA:$( pwd) /${SCRATCH} /libsB ${SCRATCH} /big-dynstr
15
+ ../src/patchelf --force-rpath --set-rpath " $oldRPath :$( pwd) /${SCRATCH} /libsA:$( pwd) /${SCRATCH} /libsB" " ${SCRATCH} /big-dynstr"
16
16
17
17
if test " $( uname) " = FreeBSD; then
18
- export LD_LIBRARY_PATH=$( pwd) /${SCRATCH} /libsB
18
+ LD_LIBRARY_PATH=" $( pwd) /${SCRATCH} /libsB"
19
+ export LD_LIBRARY_PATH
19
20
fi
20
21
21
22
exitCode=0
22
- cd ${SCRATCH} && ./big-dynstr || exitCode=$?
23
+ cd " ${SCRATCH} " && ./big-dynstr || exitCode=$?
23
24
24
25
if test " $exitCode " ! = 46; then
25
26
echo " bad exit code!"
Original file line number Diff line number Diff line change 1
1
#! /bin/sh -e
2
- SCRATCH=scratch/$( basename $0 .sh)
2
+ SCRATCH=scratch/$( basename " $0 " .sh)
3
3
READELF=${READELF:- readelf}
4
4
5
5
rm -rf " ${SCRATCH} "
Original file line number Diff line number Diff line change 1
1
#! /bin/sh -e
2
2
3
- SCRATCH=scratch/$( basename $0 .sh)
3
+ SCRATCH=scratch/$( basename " $0 " .sh)
4
4
5
- rm -rf ${SCRATCH}
6
- mkdir -p ${SCRATCH}
5
+ rm -rf " ${SCRATCH} "
6
+ mkdir -p " ${SCRATCH} "
7
7
8
- cp simple-pie ${SCRATCH} /simple-pie
8
+ cp simple-pie " ${SCRATCH} /simple-pie"
9
9
10
10
# Save the old OS ABI
11
- OLDABI=` ../src/patchelf --print-os-abi ${SCRATCH} /simple-pie`
11
+ OLDABI=$( ../src/patchelf --print-os-abi " ${SCRATCH} /simple-pie" )
12
12
# Ensure it's not empty
13
13
test -n " $OLDABI "
14
14
15
15
# Change OS ABI and verify it has been changed
16
- {
17
- echo " System V"
18
- echo " HP-UX"
19
- echo " NetBSD"
20
- echo " Linux"
21
- echo " GNU Hurd"
22
- echo " Solaris"
23
- echo " AIX"
24
- echo " IRIX"
25
- echo " FreeBSD"
26
- echo " Tru64"
27
- echo " OpenBSD"
28
- echo " OpenVMS"
29
- } | {
30
- while IFS=" \n" read ABI; do
31
- echo " Set OS ABI to '$ABI '..."
32
- ../src/patchelf --set-os-abi " $ABI " ${SCRATCH} /simple-pie
33
-
34
- echo " Check is OS ABI is '$ABI '..."
35
- NEWABI=` ../src/patchelf --print-os-abi ${SCRATCH} /simple-pie`
36
- test " $NEWABI " = " $ABI "
37
- done
38
- }
16
+ for ABI in " System V" " HP-UX" " NetBSD" " Linux" " GNU Hurd" " Solaris" " AIX" " IRIX" " FreeBSD" " Tru64" " OpenBSD" " OpenVMS" ; do
17
+ echo " Set OS ABI to '$ABI '..."
18
+ ../src/patchelf --set-os-abi " $ABI " " ${SCRATCH} /simple-pie"
19
+
20
+ echo " Check is OS ABI is '$ABI '..."
21
+ NEWABI=$( ../src/patchelf --print-os-abi " ${SCRATCH} /simple-pie" )
22
+ test " $NEWABI " = " $ABI "
23
+ done
39
24
40
25
# Reset OS ABI to the saved one
41
- ../src/patchelf --set-os-abi " $OLDABI " ${SCRATCH} /simple-pie
26
+ ../src/patchelf --set-os-abi " $OLDABI " " ${SCRATCH} /simple-pie"
42
27
43
28
# Verify we still can run the executable
44
- ${SCRATCH} /simple-pie
29
+ " ${SCRATCH} /simple-pie"
Original file line number Diff line number Diff line change 1
1
#! /bin/sh -e
2
2
3
- SCRATCH=scratch/$( basename $0 .sh)
3
+ SCRATCH=scratch/$( basename " $0 " .sh)
4
4
5
5
rm -rf " ${SCRATCH} "
6
6
mkdir -p " ${SCRATCH} "
@@ -10,4 +10,4 @@ cp contiguous-note-sections "${SCRATCH}/"
10
10
# Running --set-interpreter on this binary should not produce the following
11
11
# error:
12
12
# patchelf: cannot normalize PT_NOTE segment: non-contiguous SHT_NOTE sections
13
- ../src/patchelf --set-interpreter ld-linux-x86-64.so.2 ${SCRATCH} /contiguous-note-sections
13
+ ../src/patchelf --set-interpreter ld-linux-x86-64.so.2 " ${SCRATCH} /contiguous-note-sections"
Original file line number Diff line number Diff line change 1
1
#! /bin/sh -e
2
2
3
- SCRATCH=scratch/$( basename $0 .sh)
3
+ SCRATCH=scratch/$( basename " $0 " .sh)
4
4
5
- rm -rf ${SCRATCH}
6
- mkdir -p ${SCRATCH}
7
- cp $( dirname $( readlink -f $0 ) ) /empty-note ${SCRATCH} /
5
+ rm -rf " ${SCRATCH} "
6
+ mkdir -p " ${SCRATCH} "
7
+ cp " $( dirname " $( readlink -f " $0 " ) " ) /empty-note" " ${SCRATCH} /"
8
8
9
9
# Running --set-interpreter on this binary should not produce the following
10
10
# error:
11
11
# patchelf: cannot normalize PT_NOTE segment: non-contiguous SHT_NOTE sections
12
- ../src/patchelf --set-interpreter ld-linux-x86-64.so.2 ${SCRATCH} /empty-note
12
+ ../src/patchelf --set-interpreter ld-linux-x86-64.so.2 " ${SCRATCH} /empty-note"
Original file line number Diff line number Diff line change 1
1
#! /bin/sh -e
2
- SCRATCH=scratch/$( basename $0 .sh)
2
+ SCRATCH=scratch/$( basename " $0 " .sh)
3
3
PATCHELF=" ../src/patchelf"
4
4
5
5
for arch in ppc64 ppc64le; do
6
- rm -rf ${SCRATCH}
7
- mkdir -p ${SCRATCH}
6
+ rm -rf " ${SCRATCH} "
7
+ mkdir -p " ${SCRATCH} "
8
8
9
- cp ${srcdir} /endianness/${arch} /main ${srcdir} /endianness/${arch} /libtest.so ${SCRATCH} /
9
+ cp " ${srcdir} /endianness/${arch} /main" " ${srcdir} /endianness/${arch} /libtest.so" " ${SCRATCH} /"
10
10
11
11
rpath=" ${PWD} /${SCRATCH} "
12
12
13
13
# set rpath to scratch dir
14
- ${PATCHELF} --output ${SCRATCH} /main-rpath --set-rpath $rpath ${SCRATCH} /main
14
+ ${PATCHELF} --output " ${SCRATCH} /main-rpath" --set-rpath " $rpath " " ${SCRATCH} /main"
15
15
16
16
# attempt to shrink rpath, should not result in empty rpath
17
- ${PATCHELF} --output ${SCRATCH} /main-shrunk --shrink-rpath --debug ${SCRATCH} /main-rpath
17
+ ${PATCHELF} --output " ${SCRATCH} /main-shrunk" --shrink-rpath --debug " ${SCRATCH} /main-rpath"
18
18
19
19
# check whether rpath is still present
20
- if ! ${PATCHELF} --print-rpath ${SCRATCH} /main-shrunk | grep -q " $rpath " ; then
20
+ if ! ${PATCHELF} --print-rpath " ${SCRATCH} /main-shrunk" | grep -q " $rpath " ; then
21
21
echo " rpath was removed for ${arch} "
22
22
exit 1
23
23
fi
Original file line number Diff line number Diff line change 1
1
#! /bin/sh -e
2
- SCRATCH=scratch/$( basename $0 .sh)
2
+ SCRATCH=scratch/$( basename " $0 " .sh)
3
3
OBJDUMP=${OBJDUMP:- objdump}
4
4
5
- rm -rf ${SCRATCH}
6
- mkdir -p ${SCRATCH}
5
+ rm -rf " ${SCRATCH} "
6
+ mkdir -p " ${SCRATCH} "
7
7
8
8
SCRATCHFILE=${SCRATCH} /libfoo.so
9
- cp libfoo.so $SCRATCHFILE
9
+ cp libfoo.so " $SCRATCHFILE "
10
10
11
11
doit () {
12
- echo patchelf $*
13
- ../src/patchelf $* $SCRATCHFILE
12
+ set +x
13
+ ../src/patchelf " $@ " " $SCRATCHFILE "
14
+ set -x
14
15
}
15
16
16
17
expect () {
17
- out=$( echo $( $ OBJDUMP -x $SCRATCHFILE | grep PATH) )
18
+ out=$( " $ OBJDUMP" -x " $SCRATCHFILE " | grep PATH || true )
18
19
19
- if [ " $out " != " $* " ]; then
20
- echo " Expected '$* ' but got '$out '"
21
- exit 1
22
- fi
20
+ for i in $out ; do
21
+ if [ " $i " != " $1 " ]; then
22
+ echo " Expected '$* ' but got '$out '"
23
+ exit 1
24
+ fi
25
+ shift
26
+ done
23
27
}
24
28
25
29
doit --remove-rpath
26
- expect
30
+ expect " "
27
31
doit --set-rpath foo
28
32
expect RUNPATH foo
29
33
doit --force-rpath --set-rpath foo
Original file line number Diff line number Diff line change 1
1
#! /bin/sh -e
2
2
3
- SCRATCH=scratch/$( basename $0 .sh)
3
+ SCRATCH=scratch/$( basename " $0 " .sh)
4
4
5
- rm -rf ${SCRATCH}
6
- mkdir -p ${SCRATCH}
5
+ rm -rf " ${SCRATCH} "
6
+ mkdir -p " ${SCRATCH} "
7
7
8
- cp simple-pie ${SCRATCH} /simple-pie
8
+ cp simple-pie " ${SCRATCH} /simple-pie"
9
9
10
10
# Add a 40MB rpath
11
- tr -cd ' a-z0-9' < /dev/urandom | dd count=40 bs=1000000 > ${SCRATCH} /foo.bin
11
+ tr -cd ' a-z0-9' < /dev/urandom | dd count=40 bs=1000000 > " ${SCRATCH} /foo.bin"
12
12
13
13
# Grow the file
14
- ../src/patchelf --add-rpath @${SCRATCH} /foo.bin ${SCRATCH} /simple-pie
14
+ ../src/patchelf --add-rpath @" ${SCRATCH} /foo.bin" " ${SCRATCH} /simple-pie"
15
15
# Make sure we can still run it
16
- ${SCRATCH} /simple-pie
16
+ " ${SCRATCH} /simple-pie"
Original file line number Diff line number Diff line change 6
6
# by a signal. This works because the exit code of processes that were
7
7
# killed by a signal is 128 plus the signal number.
8
8
killed_by_signal () {
9
- [ $1 -ge 128 ]
9
+ [ " $1 " -ge 128 ]
10
10
}
11
11
12
12
13
13
# The directory containing all our input files.
14
- TEST_DIR=$( dirname $( readlink -f $0 ) ) /invalid-elf
14
+ TEST_DIR=$( dirname " $( readlink -f " $0 " ) " ) /invalid-elf
15
15
16
16
# Each test case is listed here. The names should roughly indicate
17
17
# what makes the given ELF file invalid.
Original file line number Diff line number Diff line change 1
1
#! /bin/sh -e
2
- SCRATCH=scratch/$( basename $0 .sh)
2
+ SCRATCH=scratch/$( basename " $0 " .sh)
3
3
STRIP=${STRIP:- strip}
4
4
5
- rm -rf ${SCRATCH}
6
- mkdir -p ${SCRATCH}
5
+ rm -rf " ${SCRATCH} "
6
+ mkdir -p " ${SCRATCH} "
7
7
8
- cp simple ${SCRATCH} /
8
+ cp simple " ${SCRATCH} /"
9
9
10
- ${STRIP} --remove-section=.gnu.hash ${SCRATCH} /simple
10
+ ${STRIP} --remove-section=.gnu.hash " ${SCRATCH} /simple"
11
11
12
12
# Check if patchelf handles binaries with GNU_HASH in dynamic section but
13
13
# without .gnu.hash section
14
- ../src/patchelf --set-interpreter /oops ${SCRATCH} /simple
14
+ ../src/patchelf --set-interpreter /oops " ${SCRATCH} /simple"
Original file line number Diff line number Diff line change 30
30
# Tests for powerpc PIE endianness regressions
31
31
readelfData=$( ${READELF} -l ${SCRATCH} /no-rpath 2>&1 )
32
32
33
- if [ $( echo " $readelfData " | grep --count " PHDR" ) != 1 ]; then
33
+ if [ $( echo " $readelfData " | grep " PHDR" | wc -l ) != 1 ]; then
34
34
# Triggered if PHDR errors appear on stderr
35
35
echo " Unexpected number of occurences of PHDR in readelf results"
36
36
exit 1
You can’t perform that action at this time.
0 commit comments