build: symtab: sanitize function name
Sanitize the function name and only store the valid part. Signed-off-by: Yong Cong Sin <ycsin@meta.com>
This commit is contained in:
parent
020109842f
commit
408d0be89f
1 changed files with 16 additions and 3 deletions
|
@ -7,6 +7,7 @@
|
||||||
import argparse
|
import argparse
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
|
|
||||||
from elftools.elf.elffile import ELFFile
|
from elftools.elf.elffile import ELFFile
|
||||||
from elftools.elf.descriptions import (
|
from elftools.elf.descriptions import (
|
||||||
|
@ -64,6 +65,17 @@ start_addr = 0
|
||||||
symtab_list = []
|
symtab_list = []
|
||||||
|
|
||||||
|
|
||||||
|
def sanitize_func_name(name):
|
||||||
|
pattern = r'(^[a-zA-Z_][a-zA-Z0-9_]*)'
|
||||||
|
match = re.match(pattern, name)
|
||||||
|
if match:
|
||||||
|
return match.group(0)
|
||||||
|
else:
|
||||||
|
log.error(f"Failed to sanitize function name: {name}")
|
||||||
|
|
||||||
|
return name
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
args = parse_args()
|
args = parse_args()
|
||||||
log.set_debug(args.debug)
|
log.set_debug(args.debug)
|
||||||
|
@ -75,17 +87,18 @@ def main():
|
||||||
symtab = elf.get_section_by_name('.symtab')
|
symtab = elf.get_section_by_name('.symtab')
|
||||||
|
|
||||||
i = 1
|
i = 1
|
||||||
for nsym, symbol in enumerate(symtab.iter_symbols()): # pylint: disable=unused-variable
|
for nsym, symbol in enumerate(symtab.iter_symbols()): # pylint: disable=unused-variable
|
||||||
symbol_type = describe_symbol_type(symbol['st_info']['type'])
|
symbol_type = describe_symbol_type(symbol['st_info']['type'])
|
||||||
symbol_addr = symbol['st_value']
|
symbol_addr = symbol['st_value']
|
||||||
|
|
||||||
if symbol_type == 'FUNC' and symbol_addr != 0:
|
if symbol_type == 'FUNC' and symbol_addr != 0:
|
||||||
|
symbol_name = sanitize_func_name(symbol.name)
|
||||||
symtab_list.append(symtab_entry(
|
symtab_list.append(symtab_entry(
|
||||||
symbol_addr, symbol_addr, symbol.name))
|
symbol_addr, symbol_addr, symbol_name))
|
||||||
log.debug('%6d: %s %.25s' % (
|
log.debug('%6d: %s %.25s' % (
|
||||||
i,
|
i,
|
||||||
hex(symbol_addr),
|
hex(symbol_addr),
|
||||||
symbol.name))
|
symbol_name))
|
||||||
i = i + 1
|
i = i + 1
|
||||||
|
|
||||||
symtab_list.sort(key=lambda x: x.addr, reverse=False)
|
symtab_list.sort(key=lambda x: x.addr, reverse=False)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue