|  | #! /bin/sh | 
|  | # runtest wrapper to reliably reproduce racy incomplete reads in the testsuite. | 
|  |  | 
|  | # Copyright (C) 2013-2025 Free Software Foundation, Inc. | 
|  | # This program is free software; you can redistribute it and/or modify | 
|  | # it under the terms of the GNU General Public License as published by | 
|  | # the Free Software Foundation; either version 3 of the License, or | 
|  | # (at your option) any later version. | 
|  | # | 
|  | # This program is distributed in the hope that it will be useful, | 
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | # GNU General Public License for more details. | 
|  | # | 
|  | # You should have received a copy of the GNU General Public License | 
|  | # along with this program.  If not, see <http://www.gnu.org/licenses/>. | 
|  |  | 
|  | # This tool exercises any incomplete reads handling in the testsuite by | 
|  | # simulating read always returns just 1 character. | 
|  | # Testsuite incompatibilities are tracked as GDB PR testsuite/12649. | 
|  |  | 
|  | # Example usage: | 
|  | # | 
|  | # bash$ cd $objdir/gdb/testsuite | 
|  | # bash$ EXPECT=$srcdir/gdb/contrib/expect-read1.sh runtest | 
|  | # or | 
|  | # bash$ EXPECT=../contrib/expect-read1.sh runtest | 
|  |  | 
|  | # Find source file. | 
|  | C=$(echo "$0" | sed 's/\.sh$/.c/') | 
|  | if ! test -e "$C"; then | 
|  | echo >&2 "$0: Cannot find 'srcdir/gdb/contrib/expect-read1.c' at '$C'." | 
|  | exit 2 | 
|  | fi | 
|  |  | 
|  | # Create temp directory. | 
|  | tmpdir=$(mktemp -d) | 
|  |  | 
|  | # Schedule cleanup. | 
|  | trap 'rm -rf $tmpdir' EXIT | 
|  |  | 
|  | # Compile shared library. | 
|  | SO=$tmpdir/expect-read1.so | 
|  | CMD="${CC_FOR_TARGET:-gcc} -o $SO -Wall -fPIC -shared $C" | 
|  | if ! $CMD; then | 
|  | echo >&2 "$0: Failed: $CMD" | 
|  | exit 2 | 
|  | fi | 
|  |  | 
|  | # Call expect with the shared library preloaded. | 
|  | LD_PRELOAD=$SO expect "$@" | 
|  |  | 
|  | # Local Variables: | 
|  | # mode:shell-script | 
|  | # sh-indentation:2 | 
|  | # End: | 
|  | # vi:sw=2 |