1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
#!/bin/sh
awk '
BEGIN {
next_pid = 0
next_edge = 0
}
{ sub("cdt:[^ ]* ", "", $0); }
# ins_point 41.9099999999999966 10.7949999999999999 0x5600efd1e6e0
(($1 == "ins_point") || ($1 == "init_point")) {
idx = $4
pid = PID[idx];
if (pid == "") {
pid = next_pid
next_pid++
PID[idx] = pid
}
print "ins_point p" pid, $2, $3
next
}
# ins_cedge 0x5600efd1f7e0 0x5600efd1fab0 0x5600efd1de50
($1 == "ins_cedge") {
p1 = PID[$2]
p2 = PID[$3]
if (p1 == "") {
print "invalid cedge point 1 ptr in " NR ": " $2 > "/dev/stderr"
exit(1)
}
if (p2 == "") {
print "invalid cedge point 2 ptr in " NR ": " $3 > "/dev/stderr"
exit(1)
}
idx = $4
eid = EID[idx];
if (eid == "") {
eid = next_eid
next_eid++
EID[idx] = eid
}
print "ins_cedge p" p1 " p" p2
next
}
{ print $0 }
' < CDT
|