Change "set debug symtab-create" to take a verbosity level.

* NEWS: Mention that "set debug symtab-create" now accepts a
	verbosity level.
	* buildsym.c (end_symtab_from_static_block): Call set_symtab_primary
	to set the symtab's primary flag.
	* jit.c (finalize_symtab): Ditto.
	* mdebugread.c (psymtab_to_symtab_1): Ditto.
	* symfile.c (allocate_symtab): Only print debugging messages for
	symtab_create_debug levels 2 and higher.
	* symtab.c (symtab_create_debug): Change type to unsigned int.
	(set_symtab_primary): New function.
	(_initialize_symtab): Change "set debug symtab-create" to a
	zuinteger option.
	* symtab.h (set_symtab_primary): Declare.
	(symtab_create_debug): Update decl.

	doc/
	* gdb.texinfo (Debugging Output): Update text for
	"set debug symtab-create".
This commit is contained in:
Doug Evans 2013-11-08 10:43:23 -08:00
parent e78e02e6d9
commit db0fec5c48
10 changed files with 66 additions and 16 deletions

View file

@ -1,3 +1,20 @@
2013-11-08 Doug Evans <dje@google.com>
* NEWS: Mention that "set debug symtab-create" now accepts a
verbosity level.
* buildsym.c (end_symtab_from_static_block): Call set_symtab_primary
to set the symtab's primary flag.
* jit.c (finalize_symtab): Ditto.
* mdebugread.c (psymtab_to_symtab_1): Ditto.
* symfile.c (allocate_symtab): Only print debugging messages for
symtab_create_debug levels 2 and higher.
* symtab.c (symtab_create_debug): Change type to unsigned int.
(set_symtab_primary): New function.
(_initialize_symtab): Change "set debug symtab-create" to a
zuinteger option.
* symtab.h (set_symtab_primary): Declare.
(symtab_create_debug): Update decl.
2013-11-08 Tom Tromey <tromey@redhat.com> 2013-11-08 Tom Tromey <tromey@redhat.com>
* aix-thread.c (aix_thread_detach): Update. * aix-thread.c (aix_thread_detach): Update.

View file

@ -116,6 +116,10 @@ show startup-with-shell
trace-buffer-size -1" and "set height unlimited" is now an alias for trace-buffer-size -1" and "set height unlimited" is now an alias for
"set height 0". "set height 0".
* The "set debug symtab-create" debugging option of GDB has been changed to
accept a verbosity level. 0 means "off", 1 provides basic debugging
output, and values of 2 or greater provides more verbose output.
* New command-line options * New command-line options
--configuration --configuration
Display the details of GDB configure-time options. Display the details of GDB configure-time options.

View file

@ -1231,8 +1231,7 @@ end_symtab_from_static_block (struct block *static_block,
/* All symtabs for the main file and the subfiles share a /* All symtabs for the main file and the subfiles share a
blockvector, so we need to clear primary for everything blockvector, so we need to clear primary for everything
but the main file. */ but the main file. */
set_symtab_primary (symtab, 0);
symtab->primary = 0;
} }
else else
{ {
@ -1280,7 +1279,7 @@ end_symtab_from_static_block (struct block *static_block,
/* Set this for the main source file. */ /* Set this for the main source file. */
if (symtab) if (symtab)
{ {
symtab->primary = 1; set_symtab_primary (symtab, 1);
if (symtab->blockvector) if (symtab->blockvector)
{ {

View file

@ -1,3 +1,8 @@
2013-11-08 Doug Evans <dje@google.com>
* gdb.texinfo (Debugging Output): Update text for
"set debug symtab-create".
2013-11-07 Phil Muldoon <pmuldoon@redhat.com> 2013-11-07 Phil Muldoon <pmuldoon@redhat.com>
* gdb.texinfo (Commands In Python): Document COMPLETE_EXPRESSION * gdb.texinfo (Commands In Python): Document COMPLETE_EXPRESSION

View file

@ -22731,7 +22731,9 @@ Show the current state of symbol file debugging messages.
@item set debug symtab-create @item set debug symtab-create
@cindex symbol table creation @cindex symbol table creation
Turns on or off display of debugging messages related to symbol table creation. Turns on or off display of debugging messages related to symbol table creation.
The default is off. The default is 0 (off).
A value of 1 provides basic information.
A value greater than 1 provides more verbose information.
@item show debug symtab-create @item show debug symtab-create
Show the current state of symbol table creation debugging. Show the current state of symbol table creation debugging.
@item set debug target @item set debug target

View file

@ -665,7 +665,7 @@ finalize_symtab (struct gdb_symtab *stab, struct objfile *objfile)
/* (begin, end) will contain the PC range this entire blockvector /* (begin, end) will contain the PC range this entire blockvector
spans. */ spans. */
symtab->primary = 1; set_symtab_primary (symtab, 1);
BLOCKVECTOR_MAP (symtab->blockvector) = NULL; BLOCKVECTOR_MAP (symtab->blockvector) = NULL;
begin = stab->blocks->begin; begin = stab->blocks->begin;
end = stab->blocks->end; end = stab->blocks->end;

View file

@ -4334,7 +4334,7 @@ psymtab_to_symtab_1 (struct objfile *objfile,
} }
pop_parse_stack (); pop_parse_stack ();
st->primary = 1; set_symtab_primary (st, 1);
sort_blocks (st); sort_blocks (st);
} }

View file

@ -2891,7 +2891,9 @@ allocate_symtab (const char *filename, struct objfile *objfile)
symtab->next = objfile->symtabs; symtab->next = objfile->symtabs;
objfile->symtabs = symtab; objfile->symtabs = symtab;
if (symtab_create_debug) /* This can be very verbose with lots of headers.
Only print at higher debug levels. */
if (symtab_create_debug >= 2)
{ {
/* Be a bit clever with debugging messages, and don't print objfile /* Be a bit clever with debugging messages, and don't print objfile
every time, only when it changes. */ every time, only when it changes. */

View file

@ -106,7 +106,7 @@ void _initialize_symtab (void);
/* */ /* */
/* When non-zero, print debugging messages related to symtab creation. */ /* When non-zero, print debugging messages related to symtab creation. */
int symtab_create_debug = 0; unsigned int symtab_create_debug = 0;
/* Non-zero if a file may be known by two different basenames. /* Non-zero if a file may be known by two different basenames.
This is the uncommon case, and significantly slows down gdb. This is the uncommon case, and significantly slows down gdb.
@ -174,6 +174,22 @@ search_domain_name (enum search_domain e)
} }
} }
/* Set the primary field in SYMTAB. */
void
set_symtab_primary (struct symtab *symtab, int primary)
{
symtab->primary = primary;
if (symtab_create_debug && primary)
{
fprintf_unfiltered (gdb_stdlog,
"Created primary symtab %s for %s.\n",
host_address_to_string (symtab),
symtab_to_filename_for_display (symtab));
}
}
/* See whether FILENAME matches SEARCH_NAME using the rule that we /* See whether FILENAME matches SEARCH_NAME using the rule that we
advertise to the user. (The manual's description of linespecs advertise to the user. (The manual's description of linespecs
describes what we advertise). Returns true if they match, false describes what we advertise). Returns true if they match, false
@ -5273,13 +5289,15 @@ one base name, and gdb will do file name comparisons more efficiently."),
NULL, NULL, NULL, NULL,
&setlist, &showlist); &setlist, &showlist);
add_setshow_boolean_cmd ("symtab-create", no_class, &symtab_create_debug, add_setshow_zuinteger_cmd ("symtab-create", no_class, &symtab_create_debug,
_("Set debugging of symbol table creation."), _("Set debugging of symbol table creation."),
_("Show debugging of symbol table creation."), _("\ _("Show debugging of symbol table creation."), _("\
When enabled, debugging messages are printed when building symbol tables."), When enabled (non-zero), debugging messages are printed when building\n\
NULL, symbol tables. A value of 1 (one) normally provides enough information.\n\
NULL, A value greater than 1 provides more verbose information."),
&setdebuglist, &showdebuglist); NULL,
NULL,
&setdebuglist, &showdebuglist);
observer_attach_executable_changed (symtab_observer_executable_changed); observer_attach_executable_changed (symtab_observer_executable_changed);
} }

View file

@ -941,6 +941,9 @@ struct symtab
#define LINETABLE(symtab) (symtab)->linetable #define LINETABLE(symtab) (symtab)->linetable
#define SYMTAB_PSPACE(symtab) (symtab)->objfile->pspace #define SYMTAB_PSPACE(symtab) (symtab)->objfile->pspace
/* Call this to set the "primary" field in struct symtab. */
extern void set_symtab_primary (struct symtab *, int primary);
typedef struct symtab *symtab_ptr; typedef struct symtab *symtab_ptr;
DEF_VEC_P (symtab_ptr); DEF_VEC_P (symtab_ptr);
@ -1335,7 +1338,7 @@ void fixup_section (struct general_symbol_info *ginfo,
struct objfile *lookup_objfile_from_block (const struct block *block); struct objfile *lookup_objfile_from_block (const struct block *block);
extern int symtab_create_debug; extern unsigned int symtab_create_debug;
extern int basenames_may_differ; extern int basenames_may_differ;