mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-08 16:36:21 +00:00
43 lines
1.3 KiB
Bash
Executable File
43 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Shell script with one argument (path of an OpenMP executable) that exits
|
|
# with status 0 if the OpenMP test program should be run and that exits with
|
|
# status 1 if the OpenMP test program should not be run.
|
|
|
|
test -e "$1" || exit $?
|
|
|
|
./supported_libpthread || exit $?
|
|
|
|
# Do not accept any statically linked executable.
|
|
if /usr/bin/file "$1" | grep -q 'statically linked'; then
|
|
exit 1
|
|
fi
|
|
|
|
if [ "$(uname)" = Linux ]; then
|
|
|
|
# Let the dynamic linker/loader print the path of libgomp. See also man ld.so
|
|
libgomp_path="$(LD_TRACE_LOADED_OBJECTS=1 "$1" \
|
|
| while read soname arrow path offset; \
|
|
do if [ "${soname#libgomp.so}" != "${soname}" ]; then echo $path; fi; done)"
|
|
|
|
# Inspect the output of nm. If nm does not find any symbol information,
|
|
# echo 1. If the symbol gomp_barrier_init is found, echo 0. Otherwise echo
|
|
# nothing. The second case occurs if gcc has been compiled with
|
|
# --disable-linux-futex, and the last case occurs if gcc has been compiled
|
|
# with --enable-linux-futex.
|
|
rc="$(nm "${libgomp_path}" 2>&1 \
|
|
|
|
|
while read line
|
|
do
|
|
if [ "${line%: no symbols}" != "${line}" ]; then
|
|
echo 1
|
|
break
|
|
elif [ "${line% gomp_barrier_init}" != "${line}" ]; then
|
|
echo 0
|
|
break
|
|
fi
|
|
done)"
|
|
exit ${rc:-1}
|
|
|
|
fi
|