From 6ae0c43cf5a13a7ef7e4214687a058ea1ff6f32d Mon Sep 17 00:00:00 2001 From: Ciro Santilli Date: Tue, 4 Sep 2018 07:39:27 +0100 Subject: [PATCH] bak --- rungdb | 29 ++++++++++++++++++++++++++--- rungdb-user | 7 ++++--- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/rungdb b/rungdb index e5da5c3..02786fb 100755 --- a/rungdb +++ b/rungdb @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +import copy import os import shlex import sys @@ -8,7 +9,29 @@ import subprocess import common -def main(args): +defaults = { + 'after': '', + 'before': '', + 'no_continue': False, + 'kgdb': False, + 'no_lxsymbols': False, + 'break_at': None, +} + +def main(args, extra_args=None): + """ + :param args: argparse parse_argument() output. Must contain all the common options, + but does not need GDB specific ones. + :type args: argparse.Namespace + + :param extra_args: extra arguments to be added to args + :type extra_args: Dict[str,Any] + """ + global defaults + if extra_args is None: + extra_args = {} + args = copy.copy(args) + args.__dict__ = dict(list(defaults.items()) + list(args.__dict__.items()) + list(extra_args.items())) after = shlex.split(args.after) before = shlex.split(args.before) if args.no_lxsymbols: @@ -61,11 +84,11 @@ def main(args): if __name__ == '__main__': parser = common.get_argparse(argparse_args={'description':'Connect with GDB to an emulator to debug Linux itself'}) parser.add_argument( - '-A', '--after', default='', + '-A', '--after', default=defaults['after'], help='Pass extra arguments to GDB, to be appended after all other arguments' ) parser.add_argument( - '-b', '--before', default='', + '-b', '--before', default=defaults['before'], help='Pass extra arguments to GDB to be prepended before any of the arguments passed by this script' ) parser.add_argument( diff --git a/rungdb-user b/rungdb-user index 3a93df4..d230fb9 100755 --- a/rungdb-user +++ b/rungdb-user @@ -36,10 +36,11 @@ for line in readelf_header.decode().split('\n'): addr = line.split()[-1] break print(addr) -args.before = '-ex \"add-symbol-file {} {}\"'.format(args.executable, addr) +extra_args = {} +extra_args['before'] = '-ex \"add-symbol-file {} {}\"'.format(args.executable, addr) # Or else lx-symbols throws for arm: # gdb.MemoryError: Cannot access memory at address 0xbf0040cc # TODO understand better. # Also, lx-symbols overrides the add-symbol-file commands. -args.no_lxsymbols = True -rungdb.main(args) +extra_args['no_lxsymbols'] = True +rungdb.main(args, extra_args)