LLVM-Tracer使用教程

    科技2024-06-16  75

    参考:https://github.com/harvard-acc/LLVM-Tracer

    0. 环境安装(用的docker)

    docker pull xyzsam/gem5-aladdin docker run -it --rm --mount source=gem5-aladdin-workspace,target=/workspace xyzsam/gem5-aladdin

    1.使用

    Go to /your/path/to/LLVM-Tracer/example/triad export WORKLOAD=triad export TRACER_HOME=/your/path/to/LLVM-Tracer # 第一个出错点:Clang路径是${LLVM_HOME}/lib/clang/6.0.0/include,教程里写的6.0 ${TRACER_HOME}/bin/get-labeled-stmts triad.c -- -I${LLVM_HOME}/lib/clang/6.0.0/include clang -g -O1 -S -fno-slp-vectorize -fno-vectorize -fno-unroll-loops -fno-inline -emit-llvm -o triad.llvm triad.c # 第二个出错点:full_trace.so在${TRACER_HOME}/build/full-trace下 # -trace-all-callees是可选项,我没有加,默认是false opt -S -load=${TRACER_HOME}/build/full-trace/full_trace.so -fulltrace -labelmapwriter triad.llvm -o triad-opt.llvm llc -filetype=asm -o full.s full.llvm # 第三个出错点:困了我蛮久,算是个小坑儿,最后很玄学的解决了…… g++ -fno-inline -o triad-instrumented full.s -lm -lz -no-pie ./triad-instrumented

    注:几乎每一步都会生成不同的文件,可以每执行一句后,ls查看triad文件夹里的变化

    Processed: 0.009, SQL: 8