forked from Imagelibrary/binutils-gdb
New option "set print symbol-loading".
* NEWS: Mention it. * solib.c (solib_read_symbols): Only print symbol loading messages if requested. (solib_add): If symbol loading is in "brief" mode, notify user symbols are being loaded. (reload_shared_libraries_1): Ditto. * symfile.c (print_symbol_loading_off): New static global. (print_symbol_loading_brief): New static global. (print_symbol_loading_full): New static global. (print_symbol_loading_enums): New static global. (print_symbol_loading): New static global. (print_symbol_loading_p): New function. (symbol_file_add_with_addrs): Only print symbol loading messages if requested. (_initialize_symfile): Register "print symbol-loading" set/show command. * symfile.h (print_symbol_loading_p): Declare. doc/ * gdb.texinfo (Symbols): Document set/show print symbol-loading. testsuite/ * gdb.base/print-symbol-loading-lib.c: New file. * gdb.base/print-symbol-loading-main.c: New file. * gdb.base/print-symbol-loading.exp: New file.
This commit is contained in:
@@ -143,6 +143,20 @@ DEF_VEC_O (registered_sym_fns);
|
||||
|
||||
static VEC (registered_sym_fns) *symtab_fns = NULL;
|
||||
|
||||
/* Values for "set print symbol-loading". */
|
||||
|
||||
const char print_symbol_loading_off[] = "off";
|
||||
const char print_symbol_loading_brief[] = "brief";
|
||||
const char print_symbol_loading_full[] = "full";
|
||||
static const char *print_symbol_loading_enums[] =
|
||||
{
|
||||
print_symbol_loading_off,
|
||||
print_symbol_loading_brief,
|
||||
print_symbol_loading_full,
|
||||
NULL
|
||||
};
|
||||
static const char *print_symbol_loading = print_symbol_loading_full;
|
||||
|
||||
/* If non-zero, shared library symbols will be added automatically
|
||||
when the inferior is created, new libraries are loaded, or when
|
||||
attaching to the inferior. This is almost always what users will
|
||||
@@ -156,6 +170,31 @@ static VEC (registered_sym_fns) *symtab_fns = NULL;
|
||||
int auto_solib_add = 1;
|
||||
|
||||
|
||||
/* Return non-zero if symbol-loading messages should be printed.
|
||||
FROM_TTY is the standard from_tty argument to gdb commands.
|
||||
If EXEC is non-zero the messages are for the executable.
|
||||
Otherwise, messages are for shared libraries.
|
||||
If FULL is non-zero then the caller is printing a detailed message.
|
||||
E.g., the message includes the shared library name.
|
||||
Otherwise, the caller is printing a brief "summary" message. */
|
||||
|
||||
int
|
||||
print_symbol_loading_p (int from_tty, int exec, int full)
|
||||
{
|
||||
if (!from_tty && !info_verbose)
|
||||
return 0;
|
||||
|
||||
if (exec)
|
||||
{
|
||||
/* We don't check FULL for executables, there are few such
|
||||
messages, therefore brief == full. */
|
||||
return print_symbol_loading != print_symbol_loading_off;
|
||||
}
|
||||
if (full)
|
||||
return print_symbol_loading == print_symbol_loading_full;
|
||||
return print_symbol_loading == print_symbol_loading_brief;
|
||||
}
|
||||
|
||||
/* True if we are reading a symbol table. */
|
||||
|
||||
int currently_reading_symtab = 0;
|
||||
@@ -1112,7 +1151,7 @@ symbol_file_add_with_addrs (bfd *abfd, const char *name, int add_flags,
|
||||
struct objfile *objfile;
|
||||
const int from_tty = add_flags & SYMFILE_VERBOSE;
|
||||
const int mainline = add_flags & SYMFILE_MAINLINE;
|
||||
const int should_print = ((from_tty || info_verbose)
|
||||
const int should_print = (print_symbol_loading_p (from_tty, mainline, 1)
|
||||
&& (readnow_symbol_files
|
||||
|| (add_flags & SYMFILE_NO_READ) == 0));
|
||||
|
||||
@@ -3985,4 +4024,18 @@ each global debug-file-directory component prepended."),
|
||||
NULL,
|
||||
show_debug_file_directory,
|
||||
&setlist, &showlist);
|
||||
|
||||
add_setshow_enum_cmd ("symbol-loading", no_class,
|
||||
print_symbol_loading_enums, &print_symbol_loading,
|
||||
_("\
|
||||
Set printing of symbol loading messages."), _("\
|
||||
Show printing of symbol loading messages."), _("\
|
||||
off == turn all messages off\n\
|
||||
brief == print messages for the executable,\n\
|
||||
and brief messages for shared libraries\n\
|
||||
full == print messages for the executable,\n\
|
||||
and messages for each shared library."),
|
||||
NULL,
|
||||
NULL,
|
||||
&setprintlist, &showprintlist);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user