This adds dictionary based logging support. Dictionary based logging is binary based where one big difference is that static strings are stored as pointers instead of the whole string. This results in reduced space requirements for storing log messages in certain scenairos. Signed-off-by: Daniel Leung <daniel.leung@intel.com>
44 lines
930 B
Python
44 lines
930 B
Python
#!/usr/bin/env python3
|
|
#
|
|
# Copyright (c) 2021 Intel Corporation
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
"""
|
|
Utilities for Dictionary-based Logingg Parser
|
|
"""
|
|
|
|
import binascii
|
|
|
|
|
|
def convert_hex_file_to_bin(hexfile):
|
|
"""This converts a file in hexadecimal to binary"""
|
|
bin_data = b''
|
|
|
|
with open(hexfile, "r") as hfile:
|
|
for line in hfile.readlines():
|
|
hex_str = line.strip()
|
|
|
|
bin_str = binascii.unhexlify(hex_str)
|
|
bin_data += bin_str
|
|
|
|
return bin_data
|
|
|
|
|
|
def extract_string_from_section(section, str_ptr):
|
|
"""Extract all the strings in an ELF section"""
|
|
data = section['data']
|
|
max_offset = section['size']
|
|
offset = str_ptr - section['start']
|
|
|
|
if offset < 0 or offset >= max_offset:
|
|
return None
|
|
|
|
ret_str = ""
|
|
|
|
while (data[offset] != 0) and (offset < max_offset):
|
|
ret_str += chr(data[offset])
|
|
offset += 1
|
|
|
|
return ret_str
|