#! /bin/sh
# runtest wrapper to reliably reproduce racy incomplete reads in the testsuite.

# Copyright (C) 2013-2021 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

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
SO=/tmp/expect-read1.$$.so
rm -f $SO
CMD="${CC_FOR_TARGET:-gcc} -o $SO -Wall -fPIC -shared $C"
if ! $CMD; then
  echo >&2 "$0: Failed: $CMD"
  exit 2
fi
trap "rm -f $SO" EXIT
LD_PRELOAD=$SO expect "$@"
