run-pass.sh 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #!/usr/bin/env sh
  2. set -ex
  3. ARCH="$1"
  4. . test/env.inc.sh
  5. TMPDIR="test/run-pass/tmp/${ARCH}"
  6. mkdir -p "${TMPDIR}"
  7. for file in ./test/run-pass/*.c; do
  8. base_name="$(basename ${file})"
  9. # Build the test
  10. bin/M2-Planet \
  11. --architecture "${ARCH}" \
  12. --debug \
  13. "${file}" \
  14. -o "${TMPDIR}/${base_name}.M1" \
  15. || exit 1
  16. # Build debug footer
  17. blood-elf \
  18. ${BLOOD_ELF_WORD_SIZE_FLAG} \
  19. -f "${TMPDIR}/${base_name}.M1" \
  20. ${ENDIANNESS_FLAG} \
  21. --entry _start \
  22. -o "${TMPDIR}/${base_name}-footer.M1" \
  23. || exit 2
  24. # Macro assemble with libc written in M1-Macro
  25. M1 \
  26. -f M2libc/${ARCH}/${ARCH}_defs.M1 \
  27. -f M2libc/${ARCH}/libc-core.M1 \
  28. -f "${TMPDIR}/${base_name}.M1" \
  29. -f "${TMPDIR}/${base_name}-footer.M1" \
  30. ${ENDIANNESS_FLAG} \
  31. --architecture ${ARCH} \
  32. -o "${TMPDIR}/${base_name}.hex2" \
  33. || exit 2
  34. # Resolve all linkages
  35. hex2 \
  36. -f M2libc/${ARCH}/ELF-${ARCH}-debug.hex2 \
  37. -f "${TMPDIR}/${base_name}.hex2" \
  38. ${ENDIANNESS_FLAG} \
  39. --architecture ${ARCH} \
  40. --base-address ${BASE_ADDRESS} \
  41. -o test/results/${base_name}-${ARCH}-binary \
  42. || exit 3
  43. # Ensure binary works if host machine supports test
  44. if [ "$(get_machine ${GET_MACHINE_FLAGS})" = "${ARCH}" ] || [ -n "${GET_MACHINE_OVERRIDE_ALWAYS_RUN+x}" ]
  45. then
  46. . ./sha256.sh
  47. # Verify that the resulting file works
  48. ./test/results/${base_name}-${ARCH}-binary || exit $?
  49. fi
  50. done