[Bug python/23669] gdb.execute("show commands") doesn't work

cvs-commit at gcc dot gnu.org sourceware-bugzilla@sourceware.org
Mon Sep 17 18:18:00 GMT 2018


https://sourceware.org/bugzilla/show_bug.cgi?id=23669

--- Comment #3 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
The gdb-8.2-branch branch has been updated by Simon Marchi
<simark@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=b13ab533d38674e6273eb78eeef261d5b0655bbf

commit b13ab533d38674e6273eb78eeef261d5b0655bbf
Author: Simon Marchi <simon.marchi@polymtl.ca>
Date:   Mon Sep 17 08:26:24 2018 -0400

    python: Make gdb.execute("show commands") work (PR 23669)

    Since commit

      56bcdbea2bed ("Let gdb.execute handle multi-line commands")

    trying to use a command like gdb.execute("show commands") in Python
    fails.  GDB ends up trying to run the "commands" command.

    The reason is that GDB gets confused with the special "commands"
    command.  In process_next_line, the lookup_cmd_1 function returns the
    cmd_list_element representing the "commands" sub-command of "show".
    Lower, we check the cmd_list_element to see if it matches various
    control commands by name, including the "commands" command.  This is
    where we wrongfully conclude that the executed command must be
    "commands", when in reality it was "show commands".

    The fix proposed in this patch removes the comparisons by name, instead
    comparing the cmd_list_element object by pointer with the objects
    created at initialization time.

    Tested on the buildbot, though on a single builder (Fedora-x86_64-m64).

    gdb/ChangeLog:

        PR python/23669
        * breakpoint.c (commands_cmd_element): New.
        (_initialize_breakpoint): Assign commands_cmd_element.
        * breakpoint.h (commands_cmd_element): New.
        * cli/cli-script.c (while_cmd_element, if_command,
        define_cmd_element): New.
        (command_name_equals): Remove.
        (process_next_line): Compare commands by pointer, not by name.
        (_initialize_cli_script): Assign the various cmd_list_element
        variables.
        * compile/compile.c (compile_cmd_element): New.
        (_initialize_compile): Assign compile_cmd_element.
        * compile/compile.h (compile_cmd_element): New.
        * guile/guile.c (guile_cmd_element): New.
        (install_gdb_commands): Assign guile_cmd_element.
        * guile/guile.h (guile_cmd_element): New.
        * python/python.c (python_cmd_element): New.
        (_initialize_python): Assign python_cmd_element.
        * python/python.h (python_cmd_element): New.
        * tracepoint.c (while_stepping_cmd_element): New.
        (_initialize_tracepoint): Assign while_stepping_cmd_element.
        * tracepoint.h (while_stepping_cmd_element): New.

    gdb/testsuite/ChangeLog:

        PR python/23669
        * gdb.python/python.exp: Test gdb.execute("show commands").

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Gdb-prs mailing list