
Sniperのビルドについていくつかうまくいかなかった部分があるので、 ビルドスクリプトを修正してく。
結論としては、riscv/build-riscv.shを以下のように修正した。また、自分はSPEC2006を持っていないので、Dhrystoneなので代用しないとしようがない。
commit 5c943662ef5390218305f9e05bc035150b107b85 (HEAD -> master, origin/master, origin/HEAD)
Author: msyksphinz-self <msyksphinz.dev@gmail.com>
Date: Sat Aug 20 23:35:49 2022 +0900
Fix for RISC-V environment
diff --git a/riscv/build-riscv.sh b/riscv/build-riscv.sh
index dd2c57e..f854c67 100755
--- a/riscv/build-riscv.sh
+++ b/riscv/build-riscv.sh
@@ -1,3 +1,5 @@
+#!/usr/bin/bash
+
ENV_SCR=$(readlink -f "${BASH_SOURCE}")
TOOLS_DIR=$(dirname $(dirname "${ENV_SCR}"))
LOCAL_ROOT="${TOOLS_DIR}/riscv"
@@ -30,12 +32,12 @@ if [ -z "$CPU2006_ROOT" ]; then
fi
export RISCV=$LOCAL_ROOT/riscv-tools/RV64G
-export PATH=$RISCV/bin:$PATH
+export PATH=$RISCV/bin:"${PATH}"
export RV8_HOME=$LOCAL_ROOT/rv8
export SPECKLE_ROOT=$LOCAL_ROOT/Speckle
export SPEC_DIR=$CPU2006_ROOT
-NPROC=(`nproc --all`)
+NPROC=`nproc --all`
updateGitRepo() {
URL=$1
BRANCH=$2
@@ -65,7 +67,28 @@ echo "Setting up riscv-tools..."
URL=https://github.com/nus-comparch/riscv-tools.git
BRANCH=sift
FOLDER=riscv-tools
-updateGitRepo "$URL" "$BRANCH" "$FOLDER"
+git clone https://github.com/nus-comparch/riscv-tools.git -b sift
+pushd riscv-tools
+git submodule update --init --recursive riscv-fesvr
+git submodule update --init riscv-gnu-toolchain
+
+pushd riscv-gnu-toolchain
+git submodule update --init --recursive riscv-binutils-gdb
+git submodule update --init --recursive riscv-dejagnu
+git submodule update --init --recursive riscv-gcc
+git submodule update --init --recursive riscv-glibc
+git submodule update --init --recursive riscv-newlib
+# git submodule update --init --recursive riscv-qemu
+popd
+
+git submodule update --init --recursive riscv-isa-sim
+git submodule update --init --recursive riscv-opcodes
+# git submodule update --init --recursive riscv-openocd
+git submodule update --init --recursive riscv-pk
+git submodule update --init --recursive riscv-tests
+popd
+
+# updateGitRepo "$URL" "$BRANCH" "$FOLDER"
すでにビルドされているDhrystone (RV64G、つまりCを使わないことがが重要らしい)を使ってSIFTファイルを生成してみた。
./riscv/riscv-tools/RV64G/build-isa-sim/spike --sift dhrystone.sift riscv/riscv-tools/RV64G/riscv64-unknown-elf/share/riscv-tests/benchmarks/dhrystone.riscv
なるほど、これはバイナリファイルらしい、よくわからない。次にこれをSniperのコマンドに渡してみる。
cd ${SPECKLE_ROOT} ../sniper/run-sniper -criscv --traces=../sniper/dhrystone.sift
sim.infoが出てきたが、これの意味はよくわからんな。どうとらえればいいんだ?
{'cmdline': ['../sniper/run-sniper',
'-criscv',
'--traces=../sniper/dhrystone.sift'],
'git_revision': '52e8d391ca96991d559e65ae91280977c0ae1e6e',
'host': 'ms-x1carbon',
'pin_version': 'unknown',
'rusage': (0.039094,
0.0069229999999999995,
8124,
0,
0,
0,
1975,
1,
0,
40,
0,
0,
0,
0,
271,
0),
'snipercmd': ['bash',
'-c',
'/home/msyksphinz/work/sniper/sniper/lib/sniper -c /home/msyksphinz/work/sniper/sniper/config/base.cfg --general/total_cores=1 --general/output_dir=/home/msyksphinz/work/sniper/Speckle -g --traceinput/mirror_output=true --config=/home/msyksphinz/work/sniper/Speckle/riscv.cfg -g --traceinput/stop_with_first_app=true -g --traceinput/restart_apps=false -g --traceinput/enabled=true -g --traceinput/emulate_syscalls=false -g --traceinput/num_apps=1 -g --traceinput/thread_0=/home/msyksphinz/work/sniper/sniper/dhrystone.sift'],
't_elapsed': 0.19097399711608887,
't_start': 1661007329.295105,
'tracecmds': [],
'user': 'msyksphinz',
'vmem': 7409664L}