diff --git a/Makefile b/Makefile index 96a84b8..8193b2e 100644 --- a/Makefile +++ b/Makefile @@ -15,3 +15,6 @@ qemu-host: gdb-host: nix shell nixpkgs#gdb --command gdb ./examples/build-bochs/sum/system.elf -ex "set substitute-path build-bochs ./examples/build-bochs" -ex "target remote localhost:1234" -ex "break os_main" + +radare: + radare2 -AA -c "s dbg.os_main; pdf" ./examples/build-bochs/sum/system.elf diff --git a/examples/Makefile b/examples/Makefile index b5fdbb5..ac9fa9e 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -73,9 +73,6 @@ import-%: import-arch-% * $ make result-$(subst import-,,$@)\n \ ****************************************************************" -server-%: - ${FAIL_SERVER} -v ${ARCH}/$(subst server-,,$@) -b % - result-%: @echo "select variant, benchmark, resulttype, sum(t.time2 - t.time1 + 1) as faults\ FROM variant v \ diff --git a/examples/arch/bochs.mk b/examples/arch/bochs.mk index 0f68738..ee6806b 100644 --- a/examples/arch/bochs.mk +++ b/examples/arch/bochs.mk @@ -181,15 +181,25 @@ ${BUILD_DIR}/%/system-baremetal.elf: ${BUILD_DIR}/%/system-baremetal.o ${BUILD_D ################################################################ # Fail/Bochs -FAIL_BIN ?= /home/fail/bin +# FAIL_BIN ?= /home/fail/bin +# FAIL_SERVER ?= ${FAIL_BIN}/generic-experiment-server +# FAIL_TRACE ?= ${FAIL_BIN}/generic-tracing-client +# FAIL_INJECT ?= ${FAIL_BIN}/generic-experiment-client +# FAIL_DUMP ?= ${FAIL_BIN}/dump-trace +# FAIL_IMPORT ?= ${FAIL_BIN}/import-trace --enable-sanitychecks +# FAIL_PRUNE ?= ${FAIL_BIN}/prune-trace +# BOCHS_RUNNER ?= ${FAIL_BIN}/bochs-experiment-runner.py +# RESULT_BROWSER ?= ${FAIL_BIN}/resultbrowser.py + +FAIL_BIN ?= /home/fail/mars FAIL_SERVER ?= ${FAIL_BIN}/generic-experiment-server -FAIL_TRACE ?= ${FAIL_BIN}/generic-tracing-client +FAIL_TRACE ?= ${FAIL_BIN}/fail-x86-tracing FAIL_INJECT ?= ${FAIL_BIN}/generic-experiment-client FAIL_DUMP ?= ${FAIL_BIN}/dump-trace FAIL_IMPORT ?= ${FAIL_BIN}/import-trace --enable-sanitychecks FAIL_PRUNE ?= ${FAIL_BIN}/prune-trace BOCHS_RUNNER ?= ${FAIL_BIN}/bochs-experiment-runner.py -RESULT_BROWSER ?= ${FAIL_BIN}/resultbrowser.py +RESULT_BROWSER ?= ${FAIL_BIN}/resultbrowser ${BUILD_DIR}/%/system.iso: ${BUILD_DIR}/%/system.elf rm -rf $(shell dirname $<)/grub @@ -210,11 +220,16 @@ ${BUILD_DIR}/%/trace.pb: -e ${BUILD_DIR}/$*/system.elf \ -i ${BUILD_DIR}/$*/system.iso \ -- \ + -Wf,--start-symbol=start_trace \ + -Wf,--save-symbol=start_trace \ + -Wf,--end-symbol=stop_trace \ -Wf,--state-file=${BUILD_DIR}/$*/state \ -Wf,--trace-file=${BUILD_DIR}/$*/trace.pb \ - -Wf,--start-symbol=start_trace \ - -Wf,--end-symbol=stop_trace \ - -Wf,--check-bounds + -Wf,--elf-file=${BUILD_DIR}/$*/system.elf + # -Wf,--check-bounds + +server-%: + ${FAIL_SERVER} -v ${ARCH}/$(subst server-,,$@) -b % --inject-single-bit --inject-registers client-%: ${BOCHS_RUNNER} ${BOCHS_RUNNER_ARGS} \ @@ -225,13 +240,14 @@ client-%: -- \ -Wf,--state-dir=${BUILD_DIR}/$(subst client-,,$@)/state \ -Wf,--trap \ - -Wf,--timeout=10 \ + -Wf,--timeout=500000 \ -Wf,--ok-marker=ok_marker \ -Wf,--fail-marker=fail_marker \ - -Wf,--catch-write-textsegment \ - -Wf,--catch-outerspace \ 2>/dev/null | grep -B 2 -A 8 'INJECT' + # -Wf,--catch-write-textsegment \ + # -Wf,--catch-outerspace \ + inject-%: ${BOCHS_RUNNER} ${BOCHS_RUNNER_ARGS} -1 \ -f ${FAIL_INJECT} \ @@ -252,12 +268,23 @@ import-arch-%: ${BUILD_DIR}/%/trace.pb ${HOME}/.my.cnf # ${FAIL_IMPORT} -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b regs-trace -t $< -e $(shell dirname $<)/system.elf -i mem --memory-type register # ${FAIL_IMPORT} -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b regs -t $< -e $(shell dirname $<)/system.elf -i regs # ${FAIL_IMPORT} -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b ip -t $< -e $(shell dirname $<)/system.elf -i regs --no-gp --ip - # ${FAIL_PRUNE} -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b %% --overwrite - ${FAIL_IMPORT} -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b mem -t $< -e $(shell dirname $<)/system.elf -i MemoryImporter - ${FAIL_IMPORT} -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b regs-trace -t $< -e $(shell dirname $<)/system.elf -i MemoryImporter - ${FAIL_IMPORT} -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b regs -t $< -e $(shell dirname $<)/system.elf -i RegisterImporter - ${FAIL_IMPORT} -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b ip -t $< -e $(shell dirname $<)/system.elf -i RegisterImporter --no-gp --ip - ${FAIL_PRUNE} -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b %% --overwrite + + # ${FAIL_IMPORT} -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b mem -t $< -e $(shell dirname $<)/system.elf -i MemoryImporter + # ${FAIL_IMPORT} -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b regs-trace -t $< -e $(shell dirname $<)/system.elf -i MemoryImporter + # ${FAIL_IMPORT} -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b regs -t $< -e $(shell dirname $<)/system.elf -i RegisterImporter + # ${FAIL_IMPORT} -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b ip -t $< -e $(shell dirname $<)/system.elf -i RegisterImporter --no-gp --ip + + ${FAIL_IMPORT} -t $< -i MemoryImporter -e $(shell dirname $<)/system.elf -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b mem + ${FAIL_IMPORT} -t $< -i RegisterImporter -e $(shell dirname $<)/system.elf -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b regs --flags + ${FAIL_IMPORT} -t $< -i RegisterImporter -e $(shell dirname $<)/system.elf -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b ip --no-gp --ip + ${FAIL_IMPORT} -t $< -i ElfImporter --objdump /usr/bin/objdump -e $(shell dirname $<)/system.elf -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b ip + ${FAIL_IMPORT} -t $< -i ElfImporter --objdump /usr/bin/objdump -e $(shell dirname $<)/system.elf -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b mem + ${FAIL_IMPORT} -t $< -i ElfImporter --objdump /usr/bin/objdump -e $(shell dirname $<)/system.elf -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b regs + ${FAIL_IMPORT} -t $< -i ElfImporter --objdump /usr/bin/objdump -e $(shell dirname $<)/system.elf -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b ip --sources + ${FAIL_IMPORT} -t $< -i ElfImporter --objdump /usr/bin/objdump -e $(shell dirname $<)/system.elf -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b mem --sources + ${FAIL_IMPORT} -t $< -i ElfImporter --objdump /usr/bin/objdump -e $(shell dirname $<)/system.elf -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b regs --sources + + ${FAIL_PRUNE} -v ${ARCH}/$(patsubst import-arch-%,%,$@) -b %% --overwrite define arch-make-targets diff --git a/wasm-base.dockerfile b/wasm-base.dockerfile index e7eb06c..8d86e55 100644 --- a/wasm-base.dockerfile +++ b/wasm-base.dockerfile @@ -174,6 +174,8 @@ RUN mkdir build_libiwasm && cd build_libiwasm \ -DCMAKE_ASM_COMPILER=/opt/crosscompiler/bin/i386-elf-gcc \ -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \ -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_C_FLAGS_DEBUG="-O0 -ggdb" \ + -DCMAKE_C_FLAGS_RELEASE="-O2 -ggdb" \ -DCMAKE_VERBOSE_MAKEFILE=ON \ -DWAMR_BUILD_PLATFORM=baremetal \ -DWAMR_BUILD_TARGET=X86_32 \