1#!/bin/sh
2# Test how rtld loads itself.
3# Copyright (C) 2012-2022 Free Software Foundation, Inc.
4# This file is part of the GNU C Library.
5#
6
7# The GNU C Library is free software; you can redistribute it and/or
8# modify it under the terms of the GNU Lesser General Public
9# License as published by the Free Software Foundation; either
10# version 2.1 of the License, or (at your option) any later version.
11
12# The GNU C Library is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15# Lesser General Public License for more details.
16
17# You should have received a copy of the GNU Lesser General Public
18# License along with the GNU C Library; if not, see
19# <https://www.gnu.org/licenses/>.
20
21set -e
22
23rtld=$1
24test_wrapper=$2
25test_wrapper_env=$3
26result=0
27
28echo '# normal mode'
29${test_wrapper} $rtld $rtld 2>&1 && rc=0 || rc=$?
30echo "# exit status $rc"
31test $rc -le 127 || result=1
32
33echo '# list mode'
34${test_wrapper} $rtld --list $rtld 2>&1 && rc=0 || rc=$?
35echo "# exit status $rc"
36test $rc -eq 0 || result=1
37
38echo '# verify mode'
39${test_wrapper} $rtld --verify $rtld 2>&1 && rc=0 || rc=$?
40echo "# exit status $rc"
41test $rc -eq 2 || result=1
42
43echo '# trace mode'
44${test_wrapper_env} LD_TRACE_LOADED_OBJECTS=1 \
45    $rtld $rtld 2>&1 && rc=0 || rc=$?
46echo "# exit status $rc"
47test $rc -eq 0 || result=1
48
49exit $result
50