Constify some target_so_ops instances

This changes some target_so_ops instances to be const.  This makes
their use a little more obvious (they can't be mutated) and also
allows for the removal of some initialization code.
This commit is contained in:
Tom Tromey
2022-08-08 11:00:50 -06:00
parent 9e468e953c
commit 549dfc51b0
13 changed files with 112 additions and 88 deletions

View File

@@ -119,6 +119,6 @@ CORE_ADDR frv_fdpic_find_canonical_descriptor (CORE_ADDR entry_point);
CORE_ADDR frv_fetch_objfile_link_map (struct objfile *objfile);
struct target_so_ops;
extern struct target_so_ops frv_so_ops;
extern const struct target_so_ops frv_so_ops;
#endif /* FRV_TDEP_H */

View File

@@ -718,25 +718,23 @@ show_solib_aix_debug (struct ui_file *file, int from_tty,
}
/* The target_so_ops for AIX targets. */
struct target_so_ops solib_aix_so_ops;
const struct target_so_ops solib_aix_so_ops =
{
solib_aix_relocate_section_addresses,
solib_aix_free_so,
nullptr,
solib_aix_clear_solib,
solib_aix_solib_create_inferior_hook,
solib_aix_current_sos,
solib_aix_open_symbol_file_object,
solib_aix_in_dynsym_resolve_code,
solib_aix_bfd_open,
};
void _initialize_solib_aix ();
void
_initialize_solib_aix ()
{
solib_aix_so_ops.relocate_section_addresses
= solib_aix_relocate_section_addresses;
solib_aix_so_ops.free_so = solib_aix_free_so;
solib_aix_so_ops.clear_solib = solib_aix_clear_solib;
solib_aix_so_ops.solib_create_inferior_hook
= solib_aix_solib_create_inferior_hook;
solib_aix_so_ops.current_sos = solib_aix_current_sos;
solib_aix_so_ops.open_symbol_file_object
= solib_aix_open_symbol_file_object;
solib_aix_so_ops.in_dynsym_resolve_code
= solib_aix_in_dynsym_resolve_code;
solib_aix_so_ops.bfd_open = solib_aix_bfd_open;
gdb::observers::normal_stop.attach (solib_aix_normal_stop_observer,
"solib-aix");

View File

@@ -19,7 +19,7 @@
#define SOLIB_AIX_H
struct target_so_ops;
extern struct target_so_ops solib_aix_so_ops;
extern const struct target_so_ops solib_aix_so_ops;
extern CORE_ADDR solib_aix_get_toc_value (CORE_ADDR pc);

View File

@@ -33,6 +33,7 @@
#include "solist.h"
#include "solib.h"
#include "solib-svr4.h"
#include "solib-darwin.h"
#include "bfd-target.h"
#include "elf-bfd.h"
@@ -674,18 +675,15 @@ darwin_bfd_open (const char *pathname)
return res;
}
struct target_so_ops darwin_so_ops;
void _initialize_darwin_solib ();
void
_initialize_darwin_solib ()
const struct target_so_ops darwin_so_ops =
{
darwin_so_ops.relocate_section_addresses = darwin_relocate_section_addresses;
darwin_so_ops.free_so = darwin_free_so;
darwin_so_ops.clear_solib = darwin_clear_solib;
darwin_so_ops.solib_create_inferior_hook = darwin_solib_create_inferior_hook;
darwin_so_ops.current_sos = darwin_current_sos;
darwin_so_ops.open_symbol_file_object = open_symbol_file_object;
darwin_so_ops.in_dynsym_resolve_code = darwin_in_dynsym_resolve_code;
darwin_so_ops.bfd_open = darwin_bfd_open;
}
darwin_relocate_section_addresses,
darwin_free_so,
nullptr,
darwin_clear_solib,
darwin_solib_create_inferior_hook,
darwin_current_sos,
open_symbol_file_object,
darwin_in_dynsym_resolve_code,
darwin_bfd_open,
};

View File

@@ -23,6 +23,6 @@
struct objfile;
struct target_so_ops;
extern struct target_so_ops darwin_so_ops;
extern const struct target_so_ops darwin_so_ops;
#endif /* solib-darwin.h */

View File

@@ -29,6 +29,7 @@
#include "gdbcmd.h"
#include "elf-bfd.h"
#include "gdb_bfd.h"
#include "solib-dsbt.h"
#define GOT_MODULE_OFFSET 4
@@ -924,21 +925,23 @@ show_dsbt_debug (struct ui_file *file, int from_tty,
gdb_printf (file, _("solib-dsbt debugging is %s.\n"), value);
}
struct target_so_ops dsbt_so_ops;
const struct target_so_ops dsbt_so_ops =
{
dsbt_relocate_section_addresses,
dsbt_free_so,
nullptr,
dsbt_clear_solib,
dsbt_solib_create_inferior_hook,
dsbt_current_sos,
open_symbol_file_object,
dsbt_in_dynsym_resolve_code,
solib_bfd_open,
};
void _initialize_dsbt_solib ();
void
_initialize_dsbt_solib ()
{
dsbt_so_ops.relocate_section_addresses = dsbt_relocate_section_addresses;
dsbt_so_ops.free_so = dsbt_free_so;
dsbt_so_ops.clear_solib = dsbt_clear_solib;
dsbt_so_ops.solib_create_inferior_hook = dsbt_solib_create_inferior_hook;
dsbt_so_ops.current_sos = dsbt_current_sos;
dsbt_so_ops.open_symbol_file_object = open_symbol_file_object;
dsbt_so_ops.in_dynsym_resolve_code = dsbt_in_dynsym_resolve_code;
dsbt_so_ops.bfd_open = solib_bfd_open;
/* Debug this file's internals. */
add_setshow_zuinteger_cmd ("solib-dsbt", class_maintenance,
&solib_dsbt_debug, _("\

28
gdb/solib-dsbt.h Normal file
View File

@@ -0,0 +1,28 @@
/* Handle shared libraries for GDB, the GNU Debugger.
Copyright (C) 2022 Free Software Foundation, Inc.
This file is part of GDB.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#ifndef SOLIB_DSBT_H
#define SOLIB_DSBT_H
struct objfile;
struct target_so_ops;
extern const struct target_so_ops dsbt_so_ops;
#endif /* solib-dsbt.h */

View File

@@ -1129,21 +1129,23 @@ frv_fetch_objfile_link_map (struct objfile *objfile)
return 0;
}
struct target_so_ops frv_so_ops;
const struct target_so_ops frv_so_ops =
{
frv_relocate_section_addresses,
frv_free_so,
nullptr,
frv_clear_solib,
frv_solib_create_inferior_hook,
frv_current_sos,
open_symbol_file_object,
frv_in_dynsym_resolve_code,
solib_bfd_open,
};
void _initialize_frv_solib ();
void
_initialize_frv_solib ()
{
frv_so_ops.relocate_section_addresses = frv_relocate_section_addresses;
frv_so_ops.free_so = frv_free_so;
frv_so_ops.clear_solib = frv_clear_solib;
frv_so_ops.solib_create_inferior_hook = frv_solib_create_inferior_hook;
frv_so_ops.current_sos = frv_current_sos;
frv_so_ops.open_symbol_file_object = open_symbol_file_object;
frv_so_ops.in_dynsym_resolve_code = frv_in_dynsym_resolve_code;
frv_so_ops.bfd_open = solib_bfd_open;
/* Debug this file's internals. */
add_setshow_zuinteger_cmd ("solib-frv", class_maintenance,
&solib_frv_debug, _("\

View File

@@ -3121,8 +3121,6 @@ svr4_lp64_fetch_link_map_offsets (void)
}
struct target_so_ops svr4_so_ops;
/* Search order for ELF DSOs linked with -Bsymbolic. Those DSOs have a
different rule for symbol lookup. The lookup begins here in the DSO, not in
the main executable. */
@@ -3163,24 +3161,28 @@ svr4_iterate_over_objfiles_in_search_order
}
}
const struct target_so_ops svr4_so_ops =
{
svr4_relocate_section_addresses,
svr4_free_so,
svr4_clear_so,
svr4_clear_solib,
svr4_solib_create_inferior_hook,
svr4_current_sos,
open_symbol_file_object,
svr4_in_dynsym_resolve_code,
solib_bfd_open,
nullptr,
svr4_same,
svr4_keep_data_in_core,
svr4_update_solib_event_breakpoints,
svr4_handle_solib_event,
};
void _initialize_svr4_solib ();
void
_initialize_svr4_solib ()
{
svr4_so_ops.relocate_section_addresses = svr4_relocate_section_addresses;
svr4_so_ops.free_so = svr4_free_so;
svr4_so_ops.clear_so = svr4_clear_so;
svr4_so_ops.clear_solib = svr4_clear_solib;
svr4_so_ops.solib_create_inferior_hook = svr4_solib_create_inferior_hook;
svr4_so_ops.current_sos = svr4_current_sos;
svr4_so_ops.open_symbol_file_object = open_symbol_file_object;
svr4_so_ops.in_dynsym_resolve_code = svr4_in_dynsym_resolve_code;
svr4_so_ops.bfd_open = solib_bfd_open;
svr4_so_ops.same = svr4_same;
svr4_so_ops.keep_data_in_core = svr4_keep_data_in_core;
svr4_so_ops.update_breakpoints = svr4_update_solib_event_breakpoints;
svr4_so_ops.handle_event = svr4_handle_solib_event;
gdb::observers::free_objfile.attach (svr4_free_objfile_observer,
"solib-svr4");
}

View File

@@ -25,7 +25,7 @@
struct objfile;
struct target_so_ops;
extern struct target_so_ops svr4_so_ops;
extern const struct target_so_ops svr4_so_ops;
/* Link map info to include in an allocated so_list entry. */

View File

@@ -435,22 +435,15 @@ solib_target_in_dynsym_resolve_code (CORE_ADDR pc)
return in_plt_section (pc);
}
struct target_so_ops solib_target_so_ops;
void _initialize_solib_target ();
void
_initialize_solib_target ()
const struct target_so_ops solib_target_so_ops =
{
solib_target_so_ops.relocate_section_addresses
= solib_target_relocate_section_addresses;
solib_target_so_ops.free_so = solib_target_free_so;
solib_target_so_ops.clear_solib = solib_target_clear_solib;
solib_target_so_ops.solib_create_inferior_hook
= solib_target_solib_create_inferior_hook;
solib_target_so_ops.current_sos = solib_target_current_sos;
solib_target_so_ops.open_symbol_file_object
= solib_target_open_symbol_file_object;
solib_target_so_ops.in_dynsym_resolve_code
= solib_target_in_dynsym_resolve_code;
solib_target_so_ops.bfd_open = solib_bfd_open;
}
solib_target_relocate_section_addresses,
solib_target_free_so,
nullptr,
solib_target_clear_solib,
solib_target_solib_create_inferior_hook,
solib_target_current_sos,
solib_target_open_symbol_file_object,
solib_target_in_dynsym_resolve_code,
solib_bfd_open,
};

View File

@@ -21,6 +21,6 @@
#define SOLIB_TARGET_H
struct target_so_ops;
extern struct target_so_ops solib_target_so_ops;
extern const struct target_so_ops solib_target_so_ops;
#endif /* solib-target.h */

View File

@@ -27,6 +27,7 @@
#include "elf-bfd.h"
#include "elf/tic6x.h"
#include "gdbarch.h"
#include "solib-dsbt.h"
/* The offset from rt_sigframe pointer to SP register. */
#define TIC6X_SP_RT_SIGFRAME 8
@@ -161,7 +162,6 @@ tic6x_linux_syscall_next_pc (struct frame_info *frame)
}
extern struct target_so_ops dsbt_so_ops;
static void
tic6x_uclinux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
{