1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
#!/bin/bash
set -e
if [ ! -n "${srcdir}" ]; then
srcdir="."
fi
orig=${srcdir}/ia32_test_insn.S
obj=$(mktemp -t obj-XXXXXX)
src=$(mktemp -t src-XXXXXX)
trap "rm -f $obj $src" EXIT ERR
cat "$orig" > "$src"
if [ "x$1" = "x--try-xfail" ]; then
shift || true
perl -pi -e 's/^([^#]+)#.*XFAIL.*$/$1/;' "$src"
fi
XFAIL=$(grep XFAIL "$src" || true)
INPUT=$(grep -v '^#' $src | perl -pe 's/^[^#]+#\s*([^#]*).*$/$1/;' | tr A-Z a-z | sed -e 's/ $//g')
OUTPUT=$(${srcdir}/asmdisasm.pl "$src" "$obj" | cut -d'#' -f1 | sed -e 's/ $//g')
OKAY=$(echo "$INPUT" | wc -l)
XFAILED=$(echo "$XFAIL" | wc -l)
DIFF=$(diff -u <(echo "$INPUT") <(echo "$OUTPUT") || true)
REPORT=$(echo "$DIFF" | grep '^-[^-]' | cut -c2-)
BAD=$(echo "$REPORT" | wc -l)
OKAY=$(( OKAY - BAD - XFAILED ))
if [ "x$1" = "x--diff" ]; then
echo "$DIFF"
if [ -n "$REPORT" ]; then
exit 1
else
exit 0
fi
fi
echo "== Start Instruction Assemble/Disassemble Report =="
if [ -n "$XFAIL" ]; then
echo "=== Expected Failures ==="
echo "$XFAIL"
fi
if [ -n "$REPORT" ]; then
echo "=== Failures ==="
echo "$DIFF"
fi
echo "=== Test Summary ==="
if [ -n "$XFAIL" ]; then
echo "XFAIL: $XFAILED"
fi
echo "ok: $OKAY"
if [ -n "$REPORT" ]; then
echo "FAILED: $BAD"
exit 1
fi
echo "== End Instruction Assemble/Disassemble Test =="
|