forked from Imagelibrary/binutils-gdb
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:
@@ -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
|
||||||
|
|||||||
55
gdb/symtab.c
55
gdb/symtab.c
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user