This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 0/3] remove-symbol-file
- From: Nicolas Blanc <nicolas dot blanc at intel dot com>
- To: gdb-patches at sourceware dot org
- Cc: Nicolas Blanc <nicolas dot blanc at intel dot com>
- Date: Tue, 16 Apr 2013 09:51:57 +0200
- Subject: [PATCH 0/3] remove-symbol-file
This patch adds a command for removing individual symbol files.
The symbol-file command without parameter can be used to clear
all symbol-file information. This command is not practical if
the user needs to remove just one file, however.
Apple provides its own remove-symbol-file command but the code
was not upstreamed [1]. I provide here my own implementation.
There are two main differences between the command from Apple and
mine:
1) The remove-symbol-file command from Apple takes as parameter
the file to remove whereas this implementation requires the load
address of the file. Hence, this command is able to unload
symbol for files that have been loaded multiple times.
2) This implementation sends a notification when an object file is
deleted. The notification mechanism simplifies the implementation of
the command because it is then the responsibility of the observers
to clean dangling references. GDB removes shared libraries in this
way already.
I would appreciate feedback from the maintainers of GDB at Apple to
help upstream a command that satisfies the community at large.
GDB can currently interface with one shared-library loader and one
JIT loader at runtime. Combined with Python, add-symbol-file and
remove-symbol-file can be used for supporting additional custom library
loaders with greater flexibility. This is the motivation for this work.
Regards,
Nicolas Blanc
[1]: http://www.opensource.apple.com/source/gdb/gdb-1822/
Nicolas Blanc (3):
Command remove-symbol-file.
Test adding and removing a symbol file at runtime.
Documentation for the remove-symbol-file command.
gdb/breakpoint.c | 65 ++++++-
gdb/doc/gdb.texinfo | 15 ++-
gdb/doc/observer.texi | 4 +
gdb/objfiles.c | 3 +
gdb/printcmd.c | 11 +-
gdb/solib.c | 26 +++
gdb/symfile.c | 63 ++++++-
gdb/testsuite/gdb.base/sym-file-lib.c | 21 ++
gdb/testsuite/gdb.base/sym-file-main.c | 369 ++++++++++++++++++++++++++++++++
gdb/testsuite/gdb.base/sym-file.exp | 155 +++++++++++++
10 files changed, 721 insertions(+), 11 deletions(-)
create mode 100644 gdb/testsuite/gdb.base/sym-file-lib.c
create mode 100644 gdb/testsuite/gdb.base/sym-file-main.c
create mode 100644 gdb/testsuite/gdb.base/sym-file.exp
--
1.7.6.5