Files
clang-p2996/lldb/test/API/functionalities/postmortem/FreeBSDKernel/tools/copy-sparse.py
Michał Górny 9b1d27b2fa [lldb] [Process/FreeBSDKernel] Support finding all processes
Include the complete list of threads of all running processes
in the FreeBSDKernel plugin.  This makes it possible to inspect
the states (including partial register dumps from PCB) of all kernel
and userspace threads at the time of crash, or at the time of reading
/dev/mem first.

Differential Revision: https://reviews.llvm.org/D116255
2022-01-06 21:53:28 +01:00

37 lines
894 B
Python

#!/usr/bin/env python
import argparse
import re
import sys
def main():
argp = argparse.ArgumentParser()
argp.add_argument('infile', type=argparse.FileType('rb'),
help='Input vmcore file')
argp.add_argument('outfile', type=argparse.FileType('wb'),
help='Output vmcore file')
args = argp.parse_args()
inf = args.infile
outf = args.outfile
line_re = re.compile(r"^% RD: (\d+) (\d+)")
# copy the first chunk that usually includes ELF headers
# (not output by patched libfbsdvmcore since libelf reads this)
outf.write(inf.read(1024))
for l in sys.stdin:
m = line_re.match(l)
if m is None:
continue
offset, size = [int(x) for x in m.groups()]
inf.seek(offset)
outf.seek(offset)
outf.write(inf.read(size))
if __name__ == "__main__":
main()