Make symtab.c better styled.

Note that print_msymbol_info does not (yet?) print data msymbol
using variable_name_style, as otherwise 'info variables'
would show the non debugging symbols in variable name style,
but 'real' variables would be not styled.

2019-02-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* symtab.h (struct minimal_symbol data_p): New const method.
	(struct minimal_symbol text_p): Likewise.
	* symtab.c (output_source_filename): Use file name style
	to print file name.
	(print_symbol_info): Likewise.
	(print_msymbol_info): Use address style to print addresses.
	Use function name style to print executable text symbols.
	(expand_symtab_containing_pc): Use data_p.
	(find_pc_sect_compunit_symtab): Likewise.
This commit is contained in:
Philippe Waroquiers
2019-01-10 22:34:23 +01:00
parent 2636d81d80
commit 1ed9f74e85
3 changed files with 59 additions and 16 deletions

View File

@@ -1,3 +1,15 @@
2019-02-12 Philippe Waroquiers <philippe.waroquiers@skynet.be>
* symtab.h (struct minimal_symbol data_p): New const method.
(struct minimal_symbol text_p): Likewise.
* symtab.c (output_source_filename): Use file name style
to print file name.
(print_symbol_info): Likewise.
(print_msymbol_info): Use address style to print addresses.
Use function name style to print executable text symbols.
(expand_symtab_containing_pc): Use data_p.
(find_pc_sect_compunit_symtab): Likewise.
2019-02-12 Philippe Waroquiers <philippe.waroquiers@skynet.be> 2019-02-12 Philippe Waroquiers <philippe.waroquiers@skynet.be>
* breakpoint.c (describe_other_breakpoints): Use address style * breakpoint.c (describe_other_breakpoints): Use address style

View File

@@ -41,6 +41,7 @@
#include "p-lang.h" #include "p-lang.h"
#include "addrmap.h" #include "addrmap.h"
#include "cli/cli-utils.h" #include "cli/cli-utils.h"
#include "cli/cli-style.h"
#include "fnmatch.h" #include "fnmatch.h"
#include "hashtab.h" #include "hashtab.h"
#include "typeprint.h" #include "typeprint.h"
@@ -311,6 +312,31 @@ compunit_language (const struct compunit_symtab *cust)
return SYMTAB_LANGUAGE (symtab); return SYMTAB_LANGUAGE (symtab);
} }
/* See symtab.h. */
bool
minimal_symbol::data_p () const
{
return type == mst_data
|| type == mst_bss
|| type == mst_abs
|| type == mst_file_data
|| type == mst_file_bss;
}
/* See symtab.h. */
bool
minimal_symbol::text_p () const
{
return type == mst_text
|| type == mst_text_gnu_ifunc
|| type == mst_data_gnu_ifunc
|| type == mst_slot_got_plt
|| type == mst_solib_trampoline
|| type == mst_file_text;
}
/* 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
@@ -1039,12 +1065,7 @@ expand_symtab_containing_pc (CORE_ADDR pc, struct obj_section *section)
necessary because we loop based on texthigh and textlow, which do necessary because we loop based on texthigh and textlow, which do
not include the data ranges. */ not include the data ranges. */
msymbol = lookup_minimal_symbol_by_pc_section (pc, section); msymbol = lookup_minimal_symbol_by_pc_section (pc, section);
if (msymbol.minsym if (msymbol.minsym && msymbol.minsym->data_p ())
&& (MSYMBOL_TYPE (msymbol.minsym) == mst_data
|| MSYMBOL_TYPE (msymbol.minsym) == mst_bss
|| MSYMBOL_TYPE (msymbol.minsym) == mst_abs
|| MSYMBOL_TYPE (msymbol.minsym) == mst_file_data
|| MSYMBOL_TYPE (msymbol.minsym) == mst_file_bss))
return; return;
for (objfile *objfile : current_program_space->objfiles ()) for (objfile *objfile : current_program_space->objfiles ())
@@ -2879,12 +2900,7 @@ find_pc_sect_compunit_symtab (CORE_ADDR pc, struct obj_section *section)
we call find_pc_sect_psymtab which has a similar restriction based we call find_pc_sect_psymtab which has a similar restriction based
on the partial_symtab's texthigh and textlow. */ on the partial_symtab's texthigh and textlow. */
msymbol = lookup_minimal_symbol_by_pc_section (pc, section); msymbol = lookup_minimal_symbol_by_pc_section (pc, section);
if (msymbol.minsym if (msymbol.minsym && msymbol.minsym->data_p ())
&& (MSYMBOL_TYPE (msymbol.minsym) == mst_data
|| MSYMBOL_TYPE (msymbol.minsym) == mst_bss
|| MSYMBOL_TYPE (msymbol.minsym) == mst_abs
|| MSYMBOL_TYPE (msymbol.minsym) == mst_file_data
|| MSYMBOL_TYPE (msymbol.minsym) == mst_file_bss))
return NULL; return NULL;
/* Search all symtabs for the one whose file contains our address, and which /* Search all symtabs for the one whose file contains our address, and which
@@ -4168,7 +4184,7 @@ output_source_filename (const char *name,
data->first = 0; data->first = 0;
wrap_here (""); wrap_here ("");
fputs_filtered (name, gdb_stdout); fputs_styled (name, file_name_style.style (), gdb_stdout);
} }
/* A callback for map_partial_symbol_filenames. */ /* A callback for map_partial_symbol_filenames. */
@@ -4620,7 +4636,7 @@ print_symbol_info (enum search_domain kind,
if (filename_cmp (last, s_filename) != 0) if (filename_cmp (last, s_filename) != 0)
{ {
fputs_filtered ("\nFile ", gdb_stdout); fputs_filtered ("\nFile ", gdb_stdout);
fputs_filtered (s_filename, gdb_stdout); fputs_styled (s_filename, file_name_style.style (), gdb_stdout);
fputs_filtered (":\n", gdb_stdout); fputs_filtered (":\n", gdb_stdout);
} }
@@ -4667,8 +4683,15 @@ print_msymbol_info (struct bound_minimal_symbol msymbol)
else else
tmp = hex_string_custom (BMSYMBOL_VALUE_ADDRESS (msymbol), tmp = hex_string_custom (BMSYMBOL_VALUE_ADDRESS (msymbol),
16); 16);
printf_filtered ("%s %s\n", fputs_styled (tmp, address_style.style (), gdb_stdout);
tmp, MSYMBOL_PRINT_NAME (msymbol.minsym)); fputs_filtered (" ", gdb_stdout);
if (msymbol.minsym->text_p ())
fputs_styled (MSYMBOL_PRINT_NAME (msymbol.minsym),
function_name_style.style (),
gdb_stdout);
else
fputs_filtered (MSYMBOL_PRINT_NAME (msymbol.minsym), gdb_stdout);
fputs_filtered ("\n", gdb_stdout);
} }
/* This is the guts of the commands "info functions", "info types", and /* This is the guts of the commands "info functions", "info types", and

View File

@@ -686,6 +686,14 @@ struct minimal_symbol
the `next' pointer for the demangled hash table. */ the `next' pointer for the demangled hash table. */
struct minimal_symbol *demangled_hash_next; struct minimal_symbol *demangled_hash_next;
/* True if this symbol is of some data type. */
bool data_p () const;
/* True if MSYMBOL is of some text type. */
bool text_p () const;
}; };
#define MSYMBOL_TARGET_FLAG_1(msymbol) (msymbol)->target_flag_1 #define MSYMBOL_TARGET_FLAG_1(msymbol) (msymbol)->target_flag_1