On Sunday, February 14, 2021, 09:30:48 PM GMT+2, Danny Milosavljevic <dannym@scratchpost.org> wrote:
---
tests/arm-asm-testsuite.sh | 78 ++++++++++++++++++++++++--------------
1 file changed, 50 insertions(+), 28 deletions(-)
diff --git a/tests/arm-asm-testsuite.sh b/tests/arm-asm-testsuite.sh
index 61c5dad..ae36eb1 100755
--- a/tests/arm-asm-testsuite.sh
+++ b/tests/arm-asm-testsuite.sh
@@ -2,6 +2,53 @@
set -e
+# Parameter 1: source file name
+# Parameter 2: unique test id
+# Return value: Whether instruction worked in GNU as
+# Side effect: Files in ${state}: "expected-"*, "got-"*, maybe "ok-"*
+run_test() {
+ local s
+ local err
+ local as_object
+ local tcc_object
+ local expected
+ local got
+ local source_file
+ source_file="$1"
+ s="$2"
+ #echo ".syntax unified" > a.s
+ err="`mktemp --suffix=-stderr.log`"
+ as_object="${state}/as-$s.o"
+ tcc_object="${state}/tcc-$s.o"
+ expected="${state}/expected-$s"
+ got="${state}/got-$s"
+ if "${CROSS_COMPILE}as" -mlittle-endian ${as_opts} -o "${as_object}" "${source_file}" 2>"${err}"
+ then
+ cat "${err}"
+ rm -f "${err}"
+ "${CROSS_COMPILE}objdump" -S "${as_object}" |grep "^[ ]*0:" >"${expected}"
+ if ${TCC} -o "${tcc_object}" -c "${source_file}"
+ then
+ "${CROSS_COMPILE}objdump" -S "${tcc_object}" |grep "^[ ]*0:" >"${got}"
+ if diff -u "${got}" "${expected}"
+ then
+ touch "${state}/ok-$s"
+ else
+ echo "warning: '$s' did not work in tcc (see above)">&2
+ fi
+ else
+ rm -f "${tcc_object}"
+ echo "warning: '$s' did not work in tcc">&2
+ fi
+ rm -f "${err}"
+ return 0
+ else # GNU as can't do it either--so we don't care
+ rm -f "${as_object}"
+ fi
+ rm -f "${err}"
+ return 1
+}
+
# Note: "{r3}" is definitely different--but would complicate the assembler.
state="`mktemp -d`"
@@ -166,38 +213,13 @@ do
"d4, s3" \
""
do
- #echo ".syntax unified" > a.s
- err="`mktemp --suffix=-stderr.log`"
- as_object="${state}/as-$s $args.o"
- tcc_object="${state}/tcc-$s $args.o"
- expected="${state}/expected-$s $args"
- got="${state}/got-$s $args"
- if echo "$s $args" | "${CROSS_COMPILE}as" -mlittle-endian ${as_opts} -o "${as_object}" - 2>"${err}"
+ src=""
+ echo "${s} ${args}" > "${src}"
+ if run_test "${src}" "${s} ${args}"
then
- cat "${err}"
- rm -f "${err}"
total_count=`expr $total_count + 1`
- "${CROSS_COMPILE}objdump" -S "${as_object}" |grep "^[ ]*0:" >"${expected}"
-
- #echo '__asm__("'"$s ${args}"'");' > "${csource}"
- if echo '__asm__("'"$s ${args}"'");'| ${TCC} -o "${tcc_object}" -c -
- then
- "${CROSS_COMPILE}objdump" -S "${tcc_object}" |grep "^[ ]*0:" >"${got}"
- if diff -u "${got}" "${expected}"
- then
- touch "${state}/ok-$s $args"
- else
- echo "warning: '$s $args' did not work in tcc (see above)">&2
- fi
- else
- rm -f "${tcc_object}"
- echo "warning: '$s $args' did not work in tcc">&2
- fi
ok=1
- else # GNU as can't do it either--so we don't care
- rm -f "${as_object}"
fi
- rm -f "${err}"
done
if [ "${ok}" -eq "0" ]
then
_______________________________________________
Tinycc-devel mailing list