projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
gdb: remove current_top_target function
[deliverable/binutils-gdb.git]
/
gdb
/
symfile.c
diff --git
a/gdb/symfile.c
b/gdb/symfile.c
index 434ecb9a667c49f4544d0572b8bb65b0e8ab8d95..e417878031db8b7bb8cc52463475ed83b0632408 100644
(file)
--- a/
gdb/symfile.c
+++ b/
gdb/symfile.c
@@
-1,6
+1,6
@@
/* Generic symbol file reading for the GNU debugger, GDB.
/* Generic symbol file reading for the GNU debugger, GDB.
- Copyright (C) 1990-202
0
Free Software Foundation, Inc.
+ Copyright (C) 1990-202
1
Free Software Foundation, Inc.
Contributed by Cygnus Support, using pieces from other GDB modules.
Contributed by Cygnus Support, using pieces from other GDB modules.
@@
-69,8
+69,6
@@
#include <chrono>
#include <algorithm>
#include <chrono>
#include <algorithm>
-#include "psymtab.h"
-
int (*deprecated_ui_load_progress_hook) (const char *section,
unsigned long num);
void (*deprecated_show_load_progress) (const char *section,
int (*deprecated_ui_load_progress_hook) (const char *section,
unsigned long num);
void (*deprecated_show_load_progress) (const char *section,
@@
-85,8
+83,14
@@
using clear_symtab_users_cleanup
= FORWARD_SCOPE_EXIT (clear_symtab_users);
/* Global variables owned by this file. */
= FORWARD_SCOPE_EXIT (clear_symtab_users);
/* Global variables owned by this file. */
-int readnow_symbol_files; /* Read full symbols immediately. */
-int readnever_symbol_files; /* Never read full symbols. */
+
+/* See symfile.h. */
+
+int readnow_symbol_files;
+
+/* See symfile.h. */
+
+int readnever_symbol_files;
/* Functions this file defines. */
/* Functions this file defines. */
@@
-415,7
+419,7
@@
relative_addr_info_to_section_offsets (section_offsets §ion_offsets,
/* Record all sections in offsets. */
/* The section_offsets in the objfile are here filled in using
/* Record all sections in offsets. */
/* The section_offsets in the objfile are here filled in using
-
the BFD index. */
+ the BFD index. */
section_offsets[osp->sectindex] = osp->addr;
}
}
section_offsets[osp->sectindex] = osp->addr;
}
}
@@
-769,7
+773,7
@@
read_symbols (struct objfile *objfile, symfile_add_flags add_flags)
/* find_separate_debug_file_in_section should be called only if there is
single binary with no existing separate debug info file. */
/* find_separate_debug_file_in_section should be called only if there is
single binary with no existing separate debug info file. */
- if (!objfile
_has_partial_symbols (objfile
)
+ if (!objfile
->has_partial_symbols (
)
&& objfile->separate_debug_objfile == NULL
&& objfile->separate_debug_objfile_backlink == NULL)
{
&& objfile->separate_debug_objfile == NULL
&& objfile->separate_debug_objfile_backlink == NULL)
{
@@
-787,7
+791,7
@@
read_symbols (struct objfile *objfile, symfile_add_flags add_flags)
}
}
if ((add_flags & SYMFILE_NO_READ) == 0)
}
}
if ((add_flags & SYMFILE_NO_READ) == 0)
-
require_partial_symbols (objfile,
false);
+
objfile->require_partial_symbols (
false);
}
/* Initialize entry point information for this objfile. */
}
/* Initialize entry point information for this objfile. */
@@
-807,7
+811,7
@@
init_entry_point_info (struct objfile *objfile)
if (bfd_get_file_flags (objfile->obfd) & EXEC_P)
{
/* Executable file -- record its entry point so we'll recognize
if (bfd_get_file_flags (objfile->obfd) & EXEC_P)
{
/* Executable file -- record its entry point so we'll recognize
-
the startup file because it contains the entry point. */
+ the startup file because it contains the entry point. */
ei->entry_point = bfd_get_start_address (objfile->obfd);
ei->entry_point_p = 1;
}
ei->entry_point = bfd_get_start_address (objfile->obfd);
ei->entry_point_p = 1;
}
@@
-834,10
+838,8
@@
init_entry_point_info (struct objfile *objfile)
/* Make certain that the address points at real code, and not a
function descriptor. */
/* Make certain that the address points at real code, and not a
function descriptor. */
- entry_point
- = gdbarch_convert_from_func_ptr_addr (objfile->arch (),
- entry_point,
- current_top_target ());
+ entry_point = gdbarch_convert_from_func_ptr_addr
+ (objfile->arch (), entry_point, current_inferior ()->top_target ());
/* Remove any ISA markers, so that this matches entries in the
symbol table. */
/* Remove any ISA markers, so that this matches entries in the
symbol table. */
@@
-898,6
+900,7
@@
syms_from_objfile_1 (struct objfile *objfile,
const int mainline = add_flags & SYMFILE_MAINLINE;
objfile_set_sym_fns (objfile, find_sym_fns (objfile->obfd));
const int mainline = add_flags & SYMFILE_MAINLINE;
objfile_set_sym_fns (objfile, find_sym_fns (objfile->obfd));
+ objfile->qf.clear ();
if (objfile->sf == NULL)
{
if (objfile->sf == NULL)
{
@@
-924,21
+927,21
@@
syms_from_objfile_1 (struct objfile *objfile,
if (mainline)
{
/* We will modify the main symbol table, make sure that all its users
if (mainline)
{
/* We will modify the main symbol table, make sure that all its users
-
will be cleaned up if an error occurs during symbol reading. */
+ will be cleaned up if an error occurs during symbol reading. */
defer_clear_users.emplace ((symfile_add_flag) 0);
/* Since no error yet, throw away the old symbol table. */
defer_clear_users.emplace ((symfile_add_flag) 0);
/* Since no error yet, throw away the old symbol table. */
- if (
symfile_obj
file != NULL)
+ if (
current_program_space->symfile_object_
file != NULL)
{
{
-
symfile_obj
file->unlink ();
- gdb_assert (
symfile_obj
file == NULL);
+
current_program_space->symfile_object_
file->unlink ();
+ gdb_assert (
current_program_space->symfile_object_
file == NULL);
}
/* Currently we keep symbols from the add-symbol-file command.
}
/* Currently we keep symbols from the add-symbol-file command.
-
If the user wants to get rid of them, they should do "symbol-file"
-
without arguments first. Not sure this is the best behavior
-
(PR 2207). */
+ If the user wants to get rid of them, they should do "symbol-file"
+ without arguments first. Not sure this is the best behavior
+ (PR 2207). */
(*objfile->sf->sym_new_init) (objfile);
}
(*objfile->sf->sym_new_init) (objfile);
}
@@
-995,7
+998,7
@@
finish_new_objfile (struct objfile *objfile, symfile_add_flags add_flags)
if (add_flags & SYMFILE_MAINLINE)
{
/* OK, make it the "real" symbol file. */
if (add_flags & SYMFILE_MAINLINE)
{
/* OK, make it the "real" symbol file. */
-
symfile_obj
file = objfile;
+
current_program_space->symfile_object_
file = objfile;
clear_symtab_users (add_flags);
}
clear_symtab_users (add_flags);
}
@@
-1094,8
+1097,7
@@
symbol_file_add_with_addrs (bfd *abfd, const char *name,
printf_filtered (_("Expanding full symbols from %ps...\n"),
styled_string (file_name_style.style (), name));
printf_filtered (_("Expanding full symbols from %ps...\n"),
styled_string (file_name_style.style (), name));
- if (objfile->sf)
- objfile->sf->qf->expand_all_symtabs (objfile);
+ objfile->expand_all_symtabs ();
}
/* Note that we only print a message if we have no symbols and have
}
/* Note that we only print a message if we have no symbols and have
@@
-1160,7
+1162,7
@@
struct objfile *
symbol_file_add_from_bfd (bfd *abfd, const char *name,
symfile_add_flags add_flags,
section_addr_info *addrs,
symbol_file_add_from_bfd (bfd *abfd, const char *name,
symfile_add_flags add_flags,
section_addr_info *addrs,
-
objfile_flags flags, struct objfile *parent)
+ objfile_flags flags, struct objfile *parent)
{
return symbol_file_add_with_addrs (abfd, name, add_flags, addrs, flags,
parent);
{
return symbol_file_add_with_addrs (abfd, name, add_flags, addrs, flags,
parent);
@@
-1216,9
+1218,9
@@
symbol_file_clear (int from_tty)
{
if ((have_full_symbols () || have_partial_symbols ())
&& from_tty
{
if ((have_full_symbols () || have_partial_symbols ())
&& from_tty
- && (
symfile_obj
file
+ && (
current_program_space->symfile_object_
file
? !query (_("Discard symbol table from `%s'? "),
? !query (_("Discard symbol table from `%s'? "),
- objfile_name (
symfile_obj
file))
+ objfile_name (
current_program_space->symfile_object_
file))
: !query (_("Discard symbol table? "))))
error (_("Not confirmed."));
: !query (_("Discard symbol table? "))))
error (_("Not confirmed."));
@@
-1230,7
+1232,7
@@
symbol_file_clear (int from_tty)
clear_symtab_users (0);
clear_symtab_users (0);
- gdb_assert (
symfile_obj
file == NULL);
+ gdb_assert (
current_program_space->symfile_object_
file == NULL);
if (from_tty)
printf_filtered (_("No symbol file now.\n"));
}
if (from_tty)
printf_filtered (_("No symbol file now.\n"));
}
@@
-1983,7
+1985,7
@@
load_one_section (bfd *abfd, asection *asec,
static void print_transfer_performance (struct ui_file *stream,
unsigned long data_count,
unsigned long write_count,
static void print_transfer_performance (struct ui_file *stream,
unsigned long data_count,
unsigned long write_count,
- std::chrono::steady_clock::duration d);
+ std::chrono::steady_clock::duration d);
/* See symfile.h. */
/* See symfile.h. */
@@
-2008,9
+2010,9
@@
generic_load (const char *args, int from_tty)
cbdata.load_offset = strtoulst (argv[1], &endptr, 0);
/* If the last word was not a valid number then
cbdata.load_offset = strtoulst (argv[1], &endptr, 0);
/* If the last word was not a valid number then
-
treat it as a file name with spaces in. */
+ treat it as a file name with spaces in. */
if (argv[1] == endptr)
if (argv[1] == endptr)
-
error (_("Invalid download offset:%s."), argv[1]);
+ error (_("Invalid download offset:%s."), argv[1]);
if (argv[2] != NULL)
error (_("Too many parameters."));
if (argv[2] != NULL)
error (_("Too many parameters."));
@@
-2287,10
+2289,10
@@
add_symbol_file_command (const char *args, int from_tty)
addr = parse_and_eval_address (val);
/* Here we store the section offsets in the order they were
addr = parse_and_eval_address (val);
/* Here we store the section offsets in the order they were
-
entered on the command line. Every array element is
-
assigned an ascending section index to preserve the above
-
order over an unstable sorting algorithm. This dummy
-
index is not used for any other purpose.
+ entered on the command line. Every array element is
+ assigned an ascending section index to preserve the above
+ order over an unstable sorting algorithm. This dummy
+ index is not used for any other purpose.
*/
section_addrs.emplace_back (addr, sec, section_addrs.size ());
printf_filtered ("\t%s_addr = %s\n", sec,
*/
section_addrs.emplace_back (addr, sec, section_addrs.size ());
printf_filtered ("\t%s_addr = %s\n", sec,
@@
-2323,7
+2325,7
@@
add_symbol_file_command (const char *args, int from_tty)
if (seen_offset)
set_objfile_default_section_offset (objf, section_addrs, offset);
if (seen_offset)
set_objfile_default_section_offset (objf, section_addrs, offset);
-
add_target_sections_of_objfile
(objf);
+
current_program_space->add_target_sections
(objf);
/* Getting new symbols may change our opinion about what is
frameless. */
/* Getting new symbols may change our opinion about what is
frameless. */
@@
-2516,8
+2518,6
@@
reread_symbols (void)
error (_("Can't read symbols from %s: %s."), objfile_name (objfile),
bfd_errmsg (bfd_get_error ()));
error (_("Can't read symbols from %s: %s."), objfile_name (objfile),
bfd_errmsg (bfd_get_error ()));
- objfile->reset_psymtabs ();
-
/* NB: after this call to obstack_free, objfiles_changed
will need to be called (see discussion below). */
obstack_free (&objfile->objfile_obstack, 0);
/* NB: after this call to obstack_free, objfiles_changed
will need to be called (see discussion below). */
obstack_free (&objfile->objfile_obstack, 0);
@@
-2549,13
+2549,14
@@
reread_symbols (void)
based on whether .gdb_index is present, and we need it to
start over. PR symtab/15885 */
objfile_set_sym_fns (objfile, find_sym_fns (objfile->obfd));
based on whether .gdb_index is present, and we need it to
start over. PR symtab/15885 */
objfile_set_sym_fns (objfile, find_sym_fns (objfile->obfd));
+ objfile->qf.clear ();
build_objfile_section_table (objfile);
/* What the hell is sym_new_init for, anyway? The concept of
distinguishing between the main file and additional files
in this way seems rather dubious. */
build_objfile_section_table (objfile);
/* What the hell is sym_new_init for, anyway? The concept of
distinguishing between the main file and additional files
in this way seems rather dubious. */
- if (objfile ==
symfile_obj
file)
+ if (objfile ==
current_program_space->symfile_object_
file)
{
(*objfile->sf->sym_new_init) (objfile);
}
{
(*objfile->sf->sym_new_init) (objfile);
}
@@
-2626,7
+2627,7
@@
reread_symbols (void)
gdb::observers::new_objfile.notify (iter);
/* At least one objfile has changed, so we can consider that
gdb::observers::new_objfile.notify (iter);
/* At least one objfile has changed, so we can consider that
-
the executable we're debugging has changed too. */
+ the executable we're debugging has changed too. */
gdb::observers::executable_changed.notify ();
}
}
gdb::observers::executable_changed.notify ();
}
}
@@
-2982,7
+2983,7
@@
section_is_mapped (struct obj_section *osect)
return 0; /* overlay debugging off */
case ovly_auto: /* overlay debugging automatic */
/* Unles there is a gdbarch_overlay_update function,
return 0; /* overlay debugging off */
case ovly_auto: /* overlay debugging automatic */
/* Unles there is a gdbarch_overlay_update function,
-
there's really nothing useful to do here (can't really go auto). */
+ there's really nothing useful to do here (can't really go auto). */
gdbarch = osect->objfile->arch ();
if (gdbarch_overlay_update_p (gdbarch))
{
gdbarch = osect->objfile->arch ();
if (gdbarch_overlay_update_p (gdbarch))
{
@@
-3423,8
+3424,8
@@
simple_read_overlay_table (void)
if (! novlys_msym.minsym)
{
error (_("Error reading inferior's overlay table: "
if (! novlys_msym.minsym)
{
error (_("Error reading inferior's overlay table: "
-
"couldn't find `_novlys' variable\n"
-
"in inferior. Use `overlay manual' mode."));
+ "couldn't find `_novlys' variable\n"
+ "in inferior. Use `overlay manual' mode."));
return 0;
}
return 0;
}
@@
-3432,8
+3433,8
@@
simple_read_overlay_table (void)
if (! ovly_table_msym.minsym)
{
error (_("Error reading inferior's overlay table: couldn't find "
if (! ovly_table_msym.minsym)
{
error (_("Error reading inferior's overlay table: couldn't find "
-
"`_ovly_table' array\n"
-
"in inferior. Use `overlay manual' mode."));
+ "`_ovly_table' array\n"
+ "in inferior. Use `overlay manual' mode."));
return 0;
}
return 0;
}
@@
-3447,8
+3448,8
@@
simple_read_overlay_table (void)
= (unsigned int (*)[4]) xmalloc (cache_novlys * sizeof (*cache_ovly_table));
cache_ovly_table_base = BMSYMBOL_VALUE_ADDRESS (ovly_table_msym);
read_target_long_array (cache_ovly_table_base,
= (unsigned int (*)[4]) xmalloc (cache_novlys * sizeof (*cache_ovly_table));
cache_ovly_table_base = BMSYMBOL_VALUE_ADDRESS (ovly_table_msym);
read_target_long_array (cache_ovly_table_base,
-
(unsigned int *) cache_ovly_table,
-
cache_novlys * 4, word_size, byte_order);
+ (unsigned int *) cache_ovly_table,
+ cache_novlys * 4, word_size, byte_order);
return 1; /* SUCCESS */
}
return 1; /* SUCCESS */
}
@@
-3552,7
+3553,7
@@
simple_overlay_update (struct obj_section *osect)
bfd_byte *
default_symfile_relocate (struct objfile *objfile, asection *sectp,
bfd_byte *
default_symfile_relocate (struct objfile *objfile, asection *sectp,
-
bfd_byte *buf)
+ bfd_byte *buf)
{
/* Use sectp->owner instead of objfile->obfd. sectp may point to a
DWO file. */
{
/* Use sectp->owner instead of objfile->obfd. sectp may point to a
DWO file. */
@@
-3590,7
+3591,7
@@
default_symfile_relocate (struct objfile *objfile, asection *sectp,
bfd_byte *
symfile_relocate_debug_section (struct objfile *objfile,
bfd_byte *
symfile_relocate_debug_section (struct objfile *objfile,
-
asection *sectp, bfd_byte *buf)
+ asection *sectp, bfd_byte *buf)
{
gdb_assert (objfile->sf->sym_relocate);
{
gdb_assert (objfile->sf->sym_relocate);
@@
-3649,14
+3650,14
@@
symfile_map_offsets_to_segments (bfd *abfd,
gdb_assert (0 <= which && which <= data->segments.size ());
/* Don't bother computing offsets for sections that aren't
gdb_assert (0 <= which && which <= data->segments.size ());
/* Don't bother computing offsets for sections that aren't
-
loaded as part of any segment. */
+ loaded as part of any segment. */
if (! which)
if (! which)
-
continue;
+ continue;
/* Use the last SEGMENT_BASES entry as the address of any extra
/* Use the last SEGMENT_BASES entry as the address of any extra
-
segments mentioned in DATA->segment_info. */
+ segments mentioned in DATA->segment_info. */
if (which > num_segment_bases)
if (which > num_segment_bases)
-
which = num_segment_bases;
+ which = num_segment_bases;
offsets[i] = segment_bases[which - 1] - data->segments[which - 1].base;
}
offsets[i] = segment_bases[which - 1] - data->segments[which - 1].base;
}
@@
-3709,7
+3710,7
@@
symfile_free_objfile (struct objfile *objfile)
{
/* Remove the target sections owned by this objfile. */
if (objfile != NULL)
{
/* Remove the target sections owned by this objfile. */
if (objfile != NULL)
- remove_target_sections ((void *) objfile);
+
current_program_space->
remove_target_sections ((void *) objfile);
}
/* Wrapper around the quick_symbol_functions expand_symtabs_matching "method".
}
/* Wrapper around the quick_symbol_functions expand_symtabs_matching "method".
@@
-3725,13
+3726,10
@@
expand_symtabs_matching
enum search_domain kind)
{
for (objfile *objfile : current_program_space->objfiles ())
enum search_domain kind)
{
for (objfile *objfile : current_program_space->objfiles ())
- {
- if (objfile->sf)
- objfile->sf->qf->expand_symtabs_matching (objfile, file_matcher,
- &lookup_name,
- symbol_matcher,
- expansion_notify, kind);
- }
+ objfile->expand_symtabs_matching (file_matcher,
+ &lookup_name,
+ symbol_matcher,
+ expansion_notify, kind);
}
/* Wrapper around the quick_symbol_functions map_symbol_filenames "method".
}
/* Wrapper around the quick_symbol_functions map_symbol_filenames "method".
@@
-3743,11
+3741,7
@@
map_symbol_filenames (symbol_filename_ftype *fun, void *data,
int need_fullname)
{
for (objfile *objfile : current_program_space->objfiles ())
int need_fullname)
{
for (objfile *objfile : current_program_space->objfiles ())
- {
- if (objfile->sf)
- objfile->sf->qf->map_symbol_filenames (objfile, fun, data,
- need_fullname);
- }
+ objfile->map_symbol_filenames (fun, data, need_fullname);
}
#if GDB_SELF_TEST
}
#if GDB_SELF_TEST
@@
-3921,9
+3915,9
@@
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\
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\
+ and brief messages for shared libraries\n\
full == print messages for the executable,\n\
full == print messages for the executable,\n\
-
and messages for each shared library."),
+ and messages for each shared library."),
NULL,
NULL,
&setprintlist, &showprintlist);
NULL,
NULL,
&setprintlist, &showprintlist);
This page took
0.029962 seconds
and
4
git commands to generate.