summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2023-12-05 20:10:48 +0100
committerMattias Andrée <maandree@kth.se>2023-12-05 20:10:48 +0100
commit6d77b155bcd4725e09837604e6ea86f5f124ba9c (patch)
tree7cfdf466bb94bbbe3e7929432bc048da5eaa2349 /test
parentSecond commit (diff)
downloadlibsyscalls-6d77b155bcd4725e09837604e6ea86f5f124ba9c.tar.gz
libsyscalls-6d77b155bcd4725e09837604e6ea86f5f124ba9c.tar.bz2
libsyscalls-6d77b155bcd4725e09837604e6ea86f5f124ba9c.tar.xz
Third commit
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'test')
-rwxr-xr-xtest561
1 files changed, 23 insertions, 538 deletions
diff --git a/test b/test
index 803f45f..c825493 100755
--- a/test
+++ b/test
@@ -6,6 +6,7 @@ if test $# = 0; then
printf 'Testing is broken!\n' >&2
exit 2
fi
+ set +e
"$0" $$
r=$?
rm -f -- .?-$$.tmp
@@ -21,566 +22,50 @@ b=.b-$pid.tmp
PATH="$(dirname -- "$0")/testutil:$PATH"
export PATH
+. tests/load-functions
-
-stderr () {
- ("$@") 2>&1 >/dev/null
-}
-
-getlist () {
- getlist_list="$1"
- shift 1
- if test $# = 0; then set cat; fi
- "$@" < libsyscalls.h \
- | tr , '\n' \
- | sed -n 's/^\s*LIBSYSCALLS_'"${getlist_list}"'_\([A-Z0-9_]\+\(\s*=\s*[ 0-9A-Fa-fxXULul()^&|!*/<>~+-]\+\)\?\)\b.*$/\1/p' \
- | tr = ' ' \
- | (i=0; while read name value; do
- if test -n "$value"; then
- i=$(( $(printf '%s\n' "$value" | tr -d 'ULul') ))
- i=$(printf '%s\n' "$i" | cut -d . -f 1)
- fi
- printf '%i %s\n' $(( i++ )) $name;
- done)
-}
-
-getnamelist () {
- getlist "$@" | cut -d ' ' -f 2
-}
-
-getnumlist () {
- getlist "$@" | cut -d ' ' -f 1
-}
-
-getname () {
- (getlist "$1" | grep "^$2 " | cut -d ' ' -f 2 | tee /dev/stderr | grep . >/dev/null) 2>&1
-}
-
-getnum () {
- (getlist "$1" | grep " $2"\$ | cut -d ' ' -f 1 | tee /dev/stderr | grep . >/dev/null) 2>&1
-}
-
-lookupname () {
- (printf '%s\n' "$1" | grep "^$2 " | cut -d ' ' -f 2 | tee /dev/stderr | grep . >/dev/null) 2>&1
-}
-
-lookupnum () {
- (printf '%s\n' "$1" | grep " $2"\$ | cut -d ' ' -f 1 | tee /dev/stderr | grep . >/dev/null) 2>&1
-}
-
-issupported () {
- if test $# = 1; then
- printf '%s\n' ${SUPPORTED_OSES} | grep -i "^$1"\$ > /dev/null
- else
- printf '%s\n' ${SUPPORTED_OSES} | grep -i "^$1"\$ > /dev/null &&
- env | sed -n 's/^SUPPORTED_'"$1"'_ARCHES=//p' | xargs printf '%s\n' | grep -i "^$2"\$ > /dev/null
- fi
-}
-
+alias t=.
+# this is for test development; set to : to skip tests
+# have already been written and passed, set to . otherwise
set -v
+test -n "${SUPPORTED_OSES}" # This check that the test's environment has set up, if this fails, run through `make check`
-# self check
-(
- set -e
- stderr_printf () {
- printf "$@" >&2
- }
- test "$(stderr_printf 'hello\n')" = ''
- test "$(stderr stderr_printf 'hello\n' 2>&1)" = 'hello'
- (! (false > $a) )
- getname OS 0
- (! getname OS)
- getnum OS LINUX
- (! getnum OS 0)
- getnamelist OS | grep LINUX
- getnamelist ARCH | grep AMD64_X32
- getnumlist OS | grep '^0$'
- getnumlist ARCH | grep 10
- getnumlist OS ${CPP} | grep '^0$'
- test -n "${CPP}"
- test "$(getname OS 0)" = LINUX
- test "$(getnum OS LINUX)" = 0
- test "$(lookupnum "$(getlist OS)" LINUX)" = 0
- test "$(lookupname "$(getlist OS)" 0)" = LINUX
- printf 'a\n' > $a
- printf 'b\n' > $b
- (! diff -u $a $b)
- printf 'a\n' > $b
- diff -u $a $b
- for os in ${SUPPORTED_OSES}; do
- issupported $os
- for arch in $(env | sed -n 's/^SUPPORTED_'"$os"'_ARCHES=//p' | xargs printf '%s\n'); do
- issupported $os $arch
- done
- done
-) >/dev/null 2>/dev/null
-
-
-
-### enums ###
-
-cpp_enum_clean () {
- $CPP < libsyscalls.h | grep -v '#' | tr '\n,{}' ' \n\n\n'
-}
-check_enum_good () {
- test -n "$(getnamelist "$@")"
- test -n "$(getnumlist "$@")"
- test -z "$(getnamelist "$@" | sort | uniq -d)"
- test -z "$(getnumlist "$@" | sort | uniq -d)"
- (( "$(getnumlist "$@" | sort -n | sed -n \$p)" <= 0xFFFF ))
-}
-check_enum_good OS
-check_enum_good ARCH
-check_enum_good CAT
-for cat in $(getnamelist CAT); do
- if test "$cat" = SUPPORT_PENDING || test "$cat" = NOT_IMPLEMENTED; then
- continue
- fi
- check_enum_good ${cat}_SUBCAT
- grep -i "enum.libsyscalls_${cat}_syscall_subcategory"'\s\+'"$cat"\\b < libsyscalls.h >/dev/null
-done
-check_enum_good SIGN
-check_enum_good ANNOTATION
-check_enum_good SECTION
-check_enum_good TYPE cpp_enum_clean
-types="$(getlist TYPE cpp_enum_clean)"
-
-
-
-### libsyscalls errors ###
-
-strerror-all.tu > $a
-stderr perror-all.tu > $b
-diff -u $a $b
-test $(wc -l < $a) -ge 10
-
-strerror-bad.tu > $a
-stderr perror-bad.tu > $b
-diff -u $a $b
-test $(wc -l < $a) = 2
-grep -i '\(un\|not \)recogni[sz]ed' > /dev/null < $a
-test "$(sed 1q < $a)" = "$(sed 1d < $a)"
-
-for t in perror-bad.tu perror-all.tu; do
- stderr $t "" > $a
- stderr $t > $b
- diff -u $a $b
-
- stderr $t "test" > $a
- stderr $t > $b
- (! diff -u $a $b >/dev/null)
-
- stderr $t "test" > $a
- stderr $t | sed 's/^/test: /' > $b
- diff -u $a $b
-done
-
-strerror-all.tu > $a
-list-errors.tu > $b
-(! grep '^-' >/dev/null < $b)
-grep '^[0-9]\+ ' >/dev/null < $b
-grep '^[0-9]\+ LIBSYSCALLS_E_[A-Z]\+ ' >/dev/null < $b
-grep '^[0-9]\+ LIBSYSCALLS_E_[A-Z]\+ [A-Z].*[^.]$' >/dev/null < $b
-cut -d ' ' -f 3- < $b | diff -u $a -
-sed 1q < $b | grep '^0 LIBSYSCALLS_E_OK Success$' >/dev/null
-test -z "$(cut -d ' ' -f 1 < $b | sort | uniq -d)"
-test -z "$(cut -d ' ' -f 2 < $b | sort | uniq -d)"
-test -z "$(cut -d ' ' -f 3- < $b | sort | uniq -d)"
-
-test "$(get-error.tu LIBSYSCALLS_E_OK)" = 'Success'
-test "$(get-error.tu LIBSYSCALLS_E_OSNOSUP)" = 'Operating system not supported'
-test "$(get-error.tu LIBSYSCALLS_E_NOSUCHSYSCALL)" = 'No such system call'
-
-# This can be updated, its just to check that nothing is accidentally changed in LIBSYSCALLS_LIST_ERRORS
-cat > $a <<.
-0 LIBSYSCALLS_E_OK Success
-1 LIBSYSCALLS_E_OSNOSUP Operating system not supported
-2 LIBSYSCALLS_E_ARCHNOSUP Architecture not supported for selected operating system
-3 LIBSYSCALLS_E_NOSUCHSYSCALL No such system call
-4 LIBSYSCALLS_E_NOERRORS There is no error listing for selected operating system
-5 LIBSYSCALLS_E_NOSIGNALS There is no signal listing for selected operating system
-6 LIBSYSCALLS_E_NOMEM Failed to allocate required memory
-7 LIBSYSCALLS_E_INVAL Invalid arguments passed to function
-8 LIBSYSCALLS_E_NOSUCHTYPE Type does not exist on the selected operating system or architecture
-9 LIBSYSCALLS_E_ISSTRUCT Type is a structure or union
-.
-list-errors.tu | diff -u $a -
-
-
-
-### System call number ranges ###
-
-for os in $(getnamelist OS); do
- osn=$(getnum OS $os)
- for arch in $(getnamelist ARCH); do
- archn=$(getnum ARCH $arch)
- get-syscall-range.tu $osn $archn $os $arch > $a
- min="$(sed -n 's/min: //p' < $a)"
- max="$(sed -n 's/max: //p' < $a)"
- test -n "$min"
- test -n "$max"
- if test $min = x || test $max = x; then
- (! issupported $os $arch)
- continue
- fi
- issupported $os $arch
- done
-done
-check_range () {
- if issupported $1 $2; then
- osn=$(getnum OS $1)
- archn=$(getnum ARCH $2)
- get-syscall-range.tu $osn $archn $1 $2 > $a
- min="$(sed -n 's/min: //p' < $a)"
- max="$(sed -n 's/max: //p' < $a)"
- test $min -le $3
- test $max -ge $4
- test -z "$5" || test $min -ge $5
- fi
-}
-check_range LINUX AMD64 0 453 0
-check_range LINUX AMD64_X32 0 547 0
-check_range LINUX M68K 0 452 0
-check_range LINUX PARISC_32 0 452 0
-check_range LINUX PARISC_64 0 452 0
-check_range LINUX SPARC_32 0 452 0
-check_range LINUX I386 0 452 0
-
-
-
-### System call errors ###
-
-for os in $(getnamelist OS); do
- osn=$(getnum OS $os)
- for arch in $(getnamelist ARCH); do
- archn=$(getnum ARCH $arch)
- get-syscall-errors.tu $osn $archn $os $arch > $a
- grep -v '^[0-9]\+ -' >/dev/null < $a
- grep -v '^-' < $a > $b
- grep '^\([0-9]\+\) \1 ' < $a | diff -u $a -
- if issupported $os $arch; then
- (! test "$(cat $a)" = x)
- if test "$os" = LINUX; then
- signed=1
- grep '^[0-9]\+ [0-9]\+ [A-Z0-9_]\+$' >/dev/null < $a
- test -z "$(grep -v '^[0-9]\+ [0-9]\+ [A-Z0-9_]\+$' < $a)"
- required="ERESTARTSYS ERESTARTNOINTR ERESTARTNOHAND ERESTART_RESTARTBLOCK EPERM ENOENT EDOM ELOOP"
- else
- continue;
- fi
- for req in $required; do
- grep '^-\?[0-9]\+ [0-9]\+ '"$req"\$ >/dev/null < $a
- done
- cut -d ' ' -f $(( 2 - signed )) < $a > $b && sort -n < $b | diff -u $b -
- if test -f testcases/errors-$os-$arch; then
- if ! diff -u testcases/errors-$os-$arch $a; then
- printf '\x1b[33m%s\x1b[m\n' "Maybe new errors have been added for $os on $arch"
- exit 1
- fi
- fi
- else
- # Can still be successful because it may be hardcorded to
- # use the same table as another architecture that is supported,
- # however it cannot be successful if the OS is not supported
- issupported $os
- fi
- test -z "$(cut -d ' ' -f 1 < $a | sort | uniq -d)"
- test -z "$(cut -d ' ' -f 2 < $a | sort | uniq -d)"
- test -z "$(cut -d ' ' -f 3 < $a | sort | uniq -d)"
- done
-done
-test -f testcases/errors-LINUX-AMD64
-test -f testcases/errors-LINUX-PARISC_32
-test -f testcases/errors-LINUX-PARISC_64
-(! diff -u testcases/errors-LINUX-AMD64 testcases/errors-LINUX-PARISC_32 >/dev/null)
-
-
-
-### Operating system signals ###
-
-for os in $(getnamelist OS); do
- osn=$(getnum OS $os)
- for arch in $(getnamelist ARCH); do
- archn=$(getnum ARCH $arch)
- get-signals.tu $osn $archn $os $arch > $a
- grep -v '^[0-9]\+ -' >/dev/null < $a
- grep -v '^-' < $a > $b
- grep '^\([0-9]\+\) \1 ' < $a | diff -u $a -
- if issupported $os $arch; then
- (! test "$(cat $a)" = x)
- if test "$os" = LINUX; then
- signed=1
- grep '^[0-9]\+ [0-9]\+ [A-Z0-9_+]\+$' >/dev/null < $a
- test -z "$(grep -v '^[0-9]\+ [0-9]\+ [A-Z0-9_+]\+$' < $a)"
- required="SIGKILL SIGTERM SIGCONT SIGSTOP SIGHUP _SIGRTMIN _SIGRTMIN+8"
- else
- continue;
- fi
- for req in $required; do
- grep '^-\?[0-9]\+ [0-9]\+ '"$req"\$ >/dev/null < $a
- done
- cut -d ' ' -f $(( 2 - signed )) < $a > $b && sort -n < $b | diff -u $b -
- if test -f testcases/signals-$os-$arch; then
- if ! diff -u testcases/signals-$os-$arch $a; then
- printf '\x1b[33m%s\x1b[m\n' "Maybe new signals have been added for $os on $arch"
- exit 1
- fi
- fi
- else
- # Can still be successful because it may be hardcorded to
- # use the same table as another architecture that is supported,
- # however it cannot be successful if the OS is not supported
- issupported $os
- fi
- test -z "$(cut -d ' ' -f 1 < $a | sort | uniq -d)"
- test -z "$(cut -d ' ' -f 2 < $a | sort | uniq -d)"
- test -z "$(cut -d ' ' -f 3 < $a | sort | uniq -d)"
- done
-done
-test -f testcases/signals-LINUX-AMD64
-
-
-
-### Split register classifications ###
-
-test $(getnamelist SECTION | grep '_HALF$' | wc -l) -ge 8
-for sec in $(getnamelist SECTION | grep '_HALF$'); do
- secn=$(getnum SECTION $sec)
- is-section-half.tu $secn
- (! is-section-quarter.tu $secn)
- test $(get-section-fraction.tu $secn) = 2
-done
-
-test $(getnamelist SECTION | grep '_QUARTER$' | wc -l) -ge 4
-for sec in $(getnamelist SECTION | grep '_QUARTER$'); do
- secn=$(getnum SECTION $sec)
- is-section-quarter.tu $secn
- (! is-section-half.tu $secn)
- test $(get-section-fraction.tu $secn) = 4
-done
-
-secn="$(getnum SECTION WHOLE)"
-test -n "$secn"
-test $(get-section-fraction.tu $secn) = 1
-
-
-
-### Data types ###
+(. tests/test-self-check;) >/dev/null 2>/dev/null
-#in this test, we are assuming that char is 8 bits
-intsizes="8 16 32 64"
-cat > $b <<.
-8Little 0
-16Little 0 8
-32Little 0 8 16 24
-64Little 0 8 16 24 32 40 48 56
-8Big 0
-16Big 8 0
-32Big 24 16 8 0
-64Big 56 48 40 32 24 16 8 0
-.
-byteorders="$(cat $b)"
-getbyteorder () {
- printf '%s\n' "$byteorders" | grep "^$1$2 " | cut -d ' ' -f 2-
-}
-sed '1,/LIST_ARCH_SPECS/d' < libsyscalls_get_datatype_description.c \
-| sed '/#include/q' \
-| sed 's/\(TO''DO\)\s*([^)]*)/\1/g' \
-| sed -n 's/^\s*[A-Z_]\+(LIBSYSCALLS_ARCH_\([^)]*\)).*$/\1/p' \
-| sed 's/,\s*/ /g' > $b
-grep '^AMD64 8 64 64 Little TWOS_COMPLEMENT' >/dev/null < $b
-grep '^AMD64_X32 8 32 32 Little TWOS_COMPLEMENT' >/dev/null < $b
-grep '^M68K 8 32 32 Big TWOS_COMPLEMENT' >/dev/null < $b
-grep '^PARISC_32 8 32 32 Big TWOS_COMPLEMENT' >/dev/null < $b
-grep '^PARISC_64 8 64 64 Big TWOS_COMPLEMENT' >/dev/null < $b
-grep '^SPARC_32 8 32 32 Big TWOS_COMPLEMENT' >/dev/null < $b
-grep '^I386 8 32 32 Little TWOS_COMPLEMENT' >/dev/null < $b
-archinfo="$(cat $b)"
-getbytesize () {
- printf '%s\n' "$archinfo" | grep "^$1 " | cut -d ' ' -f 2
-}
-getaddrsize () {
- printf '%s\n' "$archinfo" | grep "^$1 " | cut -d ' ' -f 3
-}
-getsizesize () {
- printf '%s\n' "$archinfo" | grep "^$1 " | cut -d ' ' -f 4
-}
-getendian () {
- printf '%s\n' "$archinfo" | grep "^$1 " | cut -d ' ' -f 5
-}
-getsign () {
- printf '%s\n' "$archinfo" | grep "^$1 " | cut -d ' ' -f 6
-}
-whole=$(getnum SECTION WHOLE)
-noannotation=$(getnum ANNOTATION NONE)
-for os in $(getnamelist OS); do
- osn=$(getnum OS $os)
- for arch in $(getnamelist ARCH); do
- archn=$(getnum ARCH $arch)
- if ! issupported $os $arch; then
- continue
- fi
+t tests/enums
+. tests/load-types
- endian=$(getendian $arch)
+t tests/errors
- sign_representation=$(getsign $arch)
- if test ${sign_representation} = TWOS_COMPLEMENT; then
- min_is_minus_max=0
- elif test ${sign_representation} = ONES_COMPLEMENT; then
- min_is_minus_max=1
- elif test ${sign_representation} = SIGN_MAGNITUDE; then
- min_is_minus_max=1
- elif test ${sign_representation} = EXCESS_HALF; then
- min_is_minus_max=0
- else
- false
- fi
- sign_representation=$(getnum SIGN ${sign_representation})
+t tests/syscall-ranges
- for n in $intsizes; do
- type=INT$n
- desc="$(get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type)"
- printf '%s\n' "$desc" | grep "^width_in_bits = ${n}"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^array_size = 1"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^relative_position_of_array_size = 0"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^absolute_position_of_array_size = -1"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^is_signed = 1"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^is_unsigned = 0"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^min_is_minus_max = ${min_is_minus_max}"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^sign_representation = ${sign_representation}"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^annotation = ${noannotation}"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^section = ${whole}"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^byteorder = $(getbyteorder $n $endian)"\$ >/dev/null
- done
- for n in $intsizes; do
- type=UINT$n
- desc="$(get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type)"
- printf '%s\n' "$desc" | grep "^width_in_bits = ${n}"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^array_size = 1"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^relative_position_of_array_size = 0"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^absolute_position_of_array_size = -1"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^is_signed = 0"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^is_unsigned = 1"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^annotation = ${noannotation}"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^section = ${whole}"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^byteorder = $(getbyteorder $n $endian)"\$ >/dev/null
- done
+t tests/syscall-errors
- type=VOID
- desc="$(get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type | tee $a)"
- printf '%s\n' "$desc" | grep "^width_in_bits = 0"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^array_size = 1"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^relative_position_of_array_size = 0"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^absolute_position_of_array_size = -1"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^is_signed = 0"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^is_unsigned = 0"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^annotation = ${noannotation}"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^section = ${whole}"\$ >/dev/null
- printf '%s\n' "$desc" | grep "^byteorder =\s*"\$ >/dev/null
- type=NO_RETURN
- get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type | diff -u $a -
+t tests/signals
- type=INT
- get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $a
- type=INT_SIGNAL
- get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $b
- sed 's/^\(annotation\) .*$/\1 = '"$(getnum ANNOTATION SIGNAL)"'/' < $a | diff -u - $b
- type=INT_FD
- get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $b
- sed 's/^\(annotation\) .*$/\1 = '"$(getnum ANNOTATION FD)"'/' < $a | diff -u - $b
- type=INT_ATFD
- get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $b
- sed 's/^\(annotation\) .*$/\1 = '"$(getnum ANNOTATION ATFD)"'/' < $a | diff -u - $b
+t tests/split-register-classes
- type=LONG
- get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $a
- type=LONG_FD
- get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $b
- sed 's/^\(annotation\) .*$/\1 = '"$(getnum ANNOTATION FD)"'/' < $a | diff -u - $b
- type=LONG_ATFD
- get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $b
- sed 's/^\(annotation\) .*$/\1 = '"$(getnum ANNOTATION ATFD)"'/' < $a | diff -u - $b
+. tests/load-archinfo
+t tests/archinfo
- for type in SCHAR SHORT INT LONG LLONG PTRDIFF INTPTR SSIZE; do
- if test $type = SCHAR; then
- utype=UCHAR
- elif test $type = SSIZE; then
- utype=SIZE
- else
- utype=U$type
- fi
+t tests/fundamental-primitives
- get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $a
- grep "^width_in_bits = ." < $a >/dev/null
- grep "^array_size = 1"\$ < $a >/dev/null
- grep "^relative_position_of_array_size = 0"\$ < $a >/dev/null
- grep "^absolute_position_of_array_size = -1"\$ < $a >/dev/null
- grep "^is_signed = 1"\$ < $a >/dev/null
- grep "^is_unsigned = 0"\$ < $a >/dev/null
- grep "^min_is_minus_max = ${min_is_minus_max}"\$ < $a >/dev/null
- grep "^sign_representation = ${sign_representation}"\$ < $a >/dev/null
- grep "^annotation = ${noannotation}"\$ < $a >/dev/null
- grep "^section = ${whole}"\$ < $a >/dev/null
- n="$(grep "^width_in_bits = ." < $a | cut -d ' ' -f 3)"
- grep "^byteorder = $(getbyteorder $n $endian)"\$ < $a >/dev/null
+t tests/is-struct
- sed -e 's/^\(is_signed =\) .$/\1 0/' -e 's/^\(is_unsigned =\) .$/\1 1/' < $a > $b
- ( ! diff -u $b $a > /dev/null)
- grep -v '^\(min_is_minus_max\|sign_representation\) = ' < $b > $a
- ( ! diff -u $a $b > /dev/null)
- get-datatype-description.tu $osn $archn $(lookupnum "$types" $utype) $os $arch $utype > $b
- grep -v '^\(min_is_minus_max\|sign_representation\) = ' < $b | diff -u $a -
+t tests/array-types
- if test $type = SCHAR; then
- xtypes=CHAR
- elif test $type = INTPTR; then
- xtypes="MEMORY_ADDRESS STRING STRINGS_THEN_NULL"
- else
- xtypes=
- fi
- for xtype in $xtypes; do
- get-datatype-description.tu $osn $archn $(lookupnum "$types" $xtype) $os $arch $xtype \
- | grep -v '^\(min_is_minus_max\|sign_representation\) = ' > $b
- sed 's/^\(is_\(un\)signed =\) .$/\1 0/' < $a | diff -u - $b
- done
- done
+t tests/fixed-array-types
- type=INTPTR
- get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $a
- type=PTRDIFF
- get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $b
- diff -u $a $b
+t tests/split-register-types
- type=DYNAMIC
- get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $a
- type=UNKNOWN
- get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $b
- diff -u $a $b
- done
-done
+t tests/os-dependent-primitives
-printf '%s\n' "$types" | grep STRUCT >/dev/null
-printf '%s\n' "$types" | grep UNION >/dev/null
-structs="$(printf '%s\n' "$types" | grep '\(STRUCT\|UNION\)' | cut -d ' ' -f 1)"
-int=$(lookupnum "$types" INT)
-for os in $(getnamelist OS); do
- osn=$(getnum OS $os)
- for arch in $(getnamelist ARCH); do
- archn=$(getnum ARCH $arch)
- if ! issupported $os $arch; then
- continue
- fi
- ( ! is-datatype-struct.tu $osn $archn $int $os $arch INT )
- for type in $structs; do
- is-datatype-struct.tu $osn $archn $type $os $arch 'some struct or union'
- done
- done
-done
+t tests/os-dependent-arrays