gdb/python: smarter symbol lookup for gdb.lookup_static_symbol
authorAndrew Burgess <andrew.burgess@embecosm.com>
Mon, 23 Sep 2019 15:59:08 +0000 (16:59 +0100)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Sun, 10 Nov 2019 21:35:28 +0000 (21:35 +0000)
commit09ff83af3c8558594bd31bfaf4ed7daadf4f707d
treeeebca5a0d285af21ced0622302c626e35373ffff
parenteb2dd8df7662c3827656e44d2a463d918d473c41
gdb/python: smarter symbol lookup for gdb.lookup_static_symbol

When using gdb.lookup_static_symbol I think that GDB should find
static symbols (global symbol with static linkage) from the current
object file ahead of static symbols from other object files.

This means that if we have two source files f1.c and f2.c, and both
files contains 'static int foo;', then when we are stopped in f1.c a
call to 'gdb.lookup_static_symbol ("foo")' will find f1.c::foo, and if
we are stopped in f2.c we would find 'f2.c::foo'.

Given that gdb.lookup_static_symbol always returns a single symbol,
but there can be multiple static symbols with the same name GDB is
always making a choice about which symbols to return.  I think that it
makes sense for the choice GDB makes in this case to match what a user
would get on the command line if they asked to 'print foo'.

gdb/testsuite/ChangeLog:

* gdb.python/py-symbol.c: Declare and call function from new
py-symbol-2.c file.
* gdb.python/py-symbol.exp: Compile both source files, and add new
tests for gdb.lookup_static_symbol.
* gdb.python/py-symbol-2.c: New file.

gdb/doc/ChangeLog:

* python.texi (Symbols In Python): Extend documentation for
gdb.lookup_static_symbol.

gdb/ChangeLog:

* python/py-symbol.c (gdbpy_lookup_static_symbol): Lookup in
static block of current object file first.  Also fix typo in
header comment.

Change-Id: Ie55dbeb8806f35577b46015deecde27a0ca2ab64
gdb/ChangeLog
gdb/doc/ChangeLog
gdb/doc/python.texi
gdb/python/py-symbol.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.python/py-symbol-2.c [new file with mode: 0644]
gdb/testsuite/gdb.python/py-symbol.c
gdb/testsuite/gdb.python/py-symbol.exp