1#!/bin/sh
2# Valgrind smoke test.
3# Copyright (C) 2022 Free Software Foundation, Inc.
4# This file is part of the GNU C Library.
5
6# The GNU C Library is free software; you can redistribute it and/or
7# modify it under the terms of the GNU Lesser General Public
8# License as published by the Free Software Foundation; either
9# version 2.1 of the License, or (at your option) any later version.
10
11# The GNU C Library is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14# Lesser General Public License for more details.
15
16# You should have received a copy of the GNU Lesser General Public
17# License along with the GNU C Library; if not, see
18# <https://www.gnu.org/licenses/>.
19
20set -e
21
22rtld="$1"
23system_rtld="$2"
24test_wrapper_env="$3"
25run_program_env="$4"
26library_path="$5"
27test_prog="$6"
28
29# Test whether valgrind is available in the test
30# environment.  If not, skip the test.
31${test_wrapper_env} ${run_program_env} \
32  /bin/sh -c "command -v valgrind" || exit 77
33
34# Test valgrind works with the system ld.so in the test environment
35/bin/sh -c \
36  "${test_wrapper_env} ${run_program_env} \
37   valgrind -q --error-exitcode=1 \
38     ${system_rtld} /bin/echo ${system_rtld}" || exit 77
39
40# Finally the actual test inside the test environment,
41# using the just build ld.so and new libraries to run
42# the smoke test under valgrind.
43/bin/sh -c \
44  "${test_wrapper_env} ${run_program_env} \
45   valgrind -q --error-exitcode=1 \
46     ${rtld} --library-path ${library_path} ${test_prog} ${rtld}"
47