1#!/bin/sh 2# Test that ldconfig -X does not remove stale symbolic links. 3# Copyright (C) 2000-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 -ex 21 22common_objpfx=$1 23test_wrapper_env=$2 24run_program_env=$3 25 26testroot="${common_objpfx}elf/bug19610-test-directory" 27cleanup () { 28 rm -rf "$testroot" 29} 30trap cleanup 0 31 32rm -rf "$testroot" 33mkdir -p $testroot/lib $testroot/etc 34 35# Relative symbolic link target. 36ln -s libdoesnotexist.so.1.1 $testroot/lib/libdoesnotexist.so.1 37 38# Absolute symbolic link target. 39ln -s $testroot/opt/sw/lib/libdoesnotexist2.so.1.1 $testroot/lib/ 40 41errors=0 42check_files () { 43 for name in libdoesnotexist.so.1 libdoesnotexist2.so.1.1 ; do 44 path="$testroot/lib/$name" 45 if test ! -h $path ; then 46 echo "error: missing file: $path" 47 errors=1 48 fi 49 done 50} 51 52check_files 53 54${test_wrapper_env} \ 55${run_program_env} \ 56${common_objpfx}elf/ldconfig -X -f /dev/null \ 57 -C $testroot/etc/ld.so.cache \ 58 $testroot/lib 59 60check_files 61 62exit $errors 63