Protocol Buffers - Google's data interchange format (grpc依赖)
https://developers.google.com/protocol-buffers/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
964 B
36 lines
964 B
#!/usr/bin/ruby |
|
|
|
puts "set width 0 |
|
set height 0 |
|
set verbose off\n\n" |
|
|
|
IO.popen("nm -S /tmp/upb-jit-code.so").each_line { |line| |
|
# Input lines look like this: |
|
# 000000000000575a T X.0x10.OP_CHECKDELIM |
|
# |
|
# For each one we want to emit a command that looks like: |
|
# b X.0x10.OP_CHECKDELIM |
|
# commands |
|
# silent |
|
# printf "buf_ofs=%d data_rem=%d delim_rem=%d X.0x10.OP_CHECKDELIM\n", $rbx - (long)((upb_pbdecoder*)($r15))->buf, $r12 - $rbx, $rbp - $rbx |
|
# continue |
|
# end |
|
|
|
parts = line.split |
|
next if parts[1] != "T" |
|
sym = parts[2] |
|
next if sym !~ /X\./; |
|
if sym =~ /OP_/ then |
|
printcmd = "printf \"buf_ofs=%d data_rem=%d delim_rem=%d #{sym}\\n\", $rbx - (long)((upb_pbdecoder*)($r15))->buf, $r12 - $rbx, $rbp - $rbx" |
|
elsif sym =~ /enterjit/ then |
|
printcmd = "printf \"#{sym} bytes=%d\\n\", $rcx" |
|
else |
|
printcmd = "printf \"#{sym}\\n\"" |
|
end |
|
puts "b #{sym} |
|
commands |
|
silent |
|
#{printcmd} |
|
continue |
|
end\n\n" |
|
}
|
|
|