| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | 
							- #!/usr/bin/env python3
 
- #
 
- # Copyright (c) 2018 Intel Corporation
 
- #
 
- # SPDX-License-Identifier: Apache-2.0
 
- """This script will parse the serial console log file and create the required
 
- gcda files.
 
- """
 
- import argparse
 
- import os
 
- import re
 
- def retrieve_data(input_file):
 
-     extracted_coverage_info = {}
 
-     capture_data = False
 
-     reached_end = False
 
-     with open(input_file, 'r') as fp:
 
-         for line in fp.readlines():
 
-             if re.search("GCOV_COVERAGE_DUMP_START", line):
 
-                 capture_data = True
 
-                 continue
 
-             if re.search("GCOV_COVERAGE_DUMP_END", line):
 
-                 reached_end = True
 
-                 break
 
-             # Loop until the coverage data is found.
 
-             if not capture_data:
 
-                 continue
 
-             # Remove the leading delimiter "*"
 
-             file_name = line.split("<")[0][1:]
 
-             # Remove the trailing new line char
 
-             hex_dump = line.split("<")[1][:-1]
 
-             extracted_coverage_info.update({file_name: hex_dump})
 
-     if not reached_end:
 
-         print("incomplete data captured from %s" % input_file)
 
-     return extracted_coverage_info
 
- def create_gcda_files(extracted_coverage_info):
 
-     if args.verbose:
 
-         print("Generating gcda files")
 
-     for filename, hexdump_val in extracted_coverage_info.items():
 
-         if args.verbose:
 
-             print(filename)
 
-         # if kobject_hash is given for coverage gcovr fails
 
-         # hence skipping it problem only in gcovr v4.1
 
-         if "kobject_hash" in filename:
 
-             filename = filename[:-4] + "gcno"
 
-             try:
 
-                 os.remove(filename)
 
-             except Exception:
 
-                 pass
 
-             continue
 
-         with open(filename, 'wb') as fp:
 
-             fp.write(bytes.fromhex(hexdump_val))
 
- def parse_args():
 
-     global args
 
-     parser = argparse.ArgumentParser(
 
-         description=__doc__,
 
-         formatter_class=argparse.RawDescriptionHelpFormatter)
 
-     parser.add_argument("-i", "--input", required=True,
 
-                         help="Input dump data")
 
-     parser.add_argument("-v", "--verbose", action="count", default=0,
 
-                         help="Verbose Output")
 
-     args = parser.parse_args()
 
- def main():
 
-     parse_args()
 
-     input_file = args.input
 
-     extracted_coverage_info = retrieve_data(input_file)
 
-     create_gcda_files(extracted_coverage_info)
 
- if __name__ == '__main__':
 
-     main()
 
 
  |