Add first scripts

This commit is contained in:
Théophile Bastian 2018-03-26 14:18:50 +02:00
parent c462076802
commit cbccff8cc8
3 changed files with 99 additions and 0 deletions

29
env Normal file
View file

@ -0,0 +1,29 @@
#!/bin/bash
base_dir="$(dirname "$(readlink -f "$0")")"
if [ ! -d "$base_dir/glibc" ] || [ ! -d "$base_dir/eh_frame_check" ] \
|| [ ! -d "$base_dir/venv" ]; then
>&2 echo "The environment is not yet configured. Please run " \
"\`setup_env.sh\` first."
exit 1
fi
glibc_base="$base_dir/glibc/build"
python_version="$(ls -1 "$base_dir/venv/lib/" | grep python | head -n 1)"
if [ -z "$python_version" ] ; then
>&2 echo "Virtualenv has no python installed. Exiting."
exit 1
fi
python_base="$base_dir/venv/lib/$python_version/site-packages"
export LIB_PATH="${glibc_base}:${glibc_base}/math:${glibc_base}/elf:${glibc_base}/dlfcn:${glibc_base}/nss:${glibc_base}/nis:${glibc_base}/rt:${glibc_base}/resolv:${glibc_base}/crypt:${glibc_base}/mathvec:${glibc_base}/support:${glibc_base}/nptl"
export GCONV_PATH=${glibc_base}/iconvdata
export LOCPATH=${glibc_base}/localedata
export LC_ALL=C
export PYTHONPATH="$PYTHONPATH:$python_base"
export PS1="(efc_env) $PS1"
unset base_dir glibc_base python_version python_base

28
run_single_test.sh Normal file
View file

@ -0,0 +1,28 @@
#!/bin/bash
base_dir="$(dirname "$(readlink -f "$0")")"
cd "$base_dir"
source ./env
if [ "$#" -le 1 ] ; then
>&2 echo -e "Missing argument: test name. Usage example:\n" \
"$0 math/test-matherr"
exit 1
fi
test_file="$1"
glibc_base="$base_dir/glibc/build"
test_path="$glibc_base/$test_file"
eh_frame_check="$base_dir/eh_frame_check/testing/eh_frame_check.py"
if [ ! -x "$test_path" ] ; then
>&2 echo "File $test_path does not exist or is not executable."
exit 1
fi
gdb -q -x "$eh_frame_check" \
-args $glibc_base/elf/ld-linux-x86-64.so.2 \
--library-path "$LIB_PATH" \
"$test_path"

42
setup_env.sh Normal file
View file

@ -0,0 +1,42 @@
#!/bin/bash
function status_update {
echo "### $1 ###"
}
base_dir="$(dirname "$(readlink -f "$0")")"
cd "$base_dir"
# First, clone Francesco's eh_frame_check
status_update "Cloning eh_frame_check"
git clone https://github.com/francesco-zappa-nardelli/eh_frame_check/
# Then, clone glibc
status_update "Cloning glibc"
git clone git://sourceware.org/git/glibc.git glibc
# Install a virtualenv with required pip packages
status_update "Installing python virtualenv"
virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt
# Compiling glibc
status_update "Compiling base glibc"
(
mkdir -p glibc/build/install
cd glibc/build
../configure --prefix=install
make
)
# Compiling testsuite
status_update "Compiling glibc testsuite"
status_update "Feel free to go and drink some coffee now. This will take some time."
(
cd glibc/build
make check
)
# Done!
status_update "All set!"