get vmlinux path from https://syzkaller.appspot.com/upstream/manager/ci2-upstream-kcsan-gce then run https://github.com/torvalds/linux/blob/master/scripts/extract-vmlinux then use r2 to generate a global callgraph https://reverseengineering.stackexchange.com/questions/16081/how-to-generate-the-call-graph-of-a-binary-file
grep ' \[label="' output.dot | sort -u | sed 's/ URL=.*//g' | sed 's/ .label=/,/g' > ../symbols.csv
grep ' -> ' output.dot | grep -v 'sym.__' | sed 's/ .color.*//g' | sed 's/ -> /,/g' > callgraph.csv
cat ../symbols.csv | sed s/,.*//g | grep 0xffff | xargs addr2line -f -e ../vmlinux.bin | paste -d "," - - > ../sym2file.csv
dwarfdump -d -i vmlinux.bin | grep DW_AT_name | grep DW_TAG_member | sed 's/.*DW_TAG_member>//g' | sed 's/<<*/":"/g' | sed 's/>>*/",/g' | sed 's/ DW_AT_/"/g' | awk '{print("{" $0 " \"\":0}")}' | grep '{' | jq -c --slurp 'unique_by(.name)[]' > dwarf.json