diff options
author | Mattias Andrée <maandree@kth.se> | 2023-12-05 20:10:48 +0100 |
---|---|---|
committer | Mattias Andrée <maandree@kth.se> | 2023-12-05 20:10:48 +0100 |
commit | 6d77b155bcd4725e09837604e6ea86f5f124ba9c (patch) | |
tree | 7cfdf466bb94bbbe3e7929432bc048da5eaa2349 /tests/split-register-types | |
parent | Second commit (diff) | |
download | libsyscalls-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 'tests/split-register-types')
-rw-r--r-- | tests/split-register-types | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/tests/split-register-types b/tests/split-register-types new file mode 100644 index 0000000..3b3070b --- /dev/null +++ b/tests/split-register-types @@ -0,0 +1,70 @@ +# -*- sh -*- +# See LICENSE file for copyright and license details. + +upper_half=$(getnum SECTION UPPER_HALF) +lower_half=$(getnum SECTION LOWER_HALF) +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 + + for stype in INT64_HIGH_32 INT64_LOW_32 INT64_FRONT_32 INT64_BACK_32; do + utype=U$stype + rtype="$(printf '%s\n' "$stype" | sed 's/^\(INT\)[0-9]\+_[A-Z]\+_\([0-9]\+\)$/\1\2/')" + test ! "$rtype" = "$stype" + rtypen=$(lookupnum "$types" $rtype) + stypen=$(lookupnum "$types" $stype) + utypen=$(lookupnum "$types" $utype) + test -n "$rtypen" + test -n "$stypen" + test -n "$utypen" + + get-datatype-description.tu $osn $archn $rtypen $os $arch $rtype \ + | grep -v "^section = " > $a + get-datatype-description.tu $osn $archn $stypen $os $arch $stype \ + | grep -v "^section = " > $b + diff -u $a $b + + get-datatype-description.tu $osn $archn $stypen $os $arch $stype \ + | sed -e 's/^\(is_signed =\) .$/\1 0/' -e 's/^\(is_unsigned =\) .$/\1 1/' > $a + get-datatype-description.tu $osn $archn $utypen $os $arch $utype > $b + diff -u $a $b + done + + type=INT64_HIGH_32 + get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type \ + | grep "^section = ${upper_half}"\$ >/dev/null + + type=INT64_LOW_32 + get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type \ + | grep "^section = ${lower_half}"\$ >/dev/null + + endian=$(getendian $arch) + if test $endian = Little; then + + type=INT64_FRONT_32 + get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type \ + | grep "^section = ${lower_half}"\$ >/dev/null + + type=INT64_BACK_32 + get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type \ + | grep "^section = ${upper_half}"\$ >/dev/null + + elif test $endian = Big; then + + type=INT64_FRONT_32 + get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type \ + | grep "^section = ${upper_half}"\$ >/dev/null + + type=INT64_BACK_32 + get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type \ + | grep "^section = ${lower_half}"\$ >/dev/null + + else + false # that's all we have for now + fi + done +done |