From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2126) id 75CE33858034; Tue, 20 Sep 2022 18:40:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 75CE33858034 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1663699253; bh=bT06sMJPUPFuegYSWju2FUhmteBO/7dV6es6/agDHd8=; h=From:To:Subject:Date:From; b=hSkW+xsn/P7XuieOMFjk988K71Gc8/d52BRJh21IzwzDDaAVRNDxEZ6LDU5d12c3u beZIpcIZecVwaIYSmeyf9y++IMVEIHkut+7INNfvw3YrTgD25Zi4obyIPKz7k2XGNf 9+RdinrcavcSzl26yT7D3h2w9r4CrMkVFVfsexnM= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Tom Tromey To: gdb-cvs@sourceware.org Subject: [binutils-gdb] Constify some target_so_ops instances X-Act-Checkin: binutils-gdb X-Git-Author: Tom Tromey X-Git-Refname: refs/heads/master X-Git-Oldrev: 9e468e953cd2f605a3f51d6ef6532e46b8fdd7b4 X-Git-Newrev: 549dfc51b07c0c749ebde15a3fa855ab496ea18a Message-Id: <20220920184053.75CE33858034@sourceware.org> Date: Tue, 20 Sep 2022 18:40:53 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D549dfc51b07c= 0c749ebde15a3fa855ab496ea18a commit 549dfc51b07c0c749ebde15a3fa855ab496ea18a Author: Tom Tromey Date: Mon Aug 8 11:00:50 2022 -0600 Constify some target_so_ops instances =20 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. Diff: --- gdb/frv-tdep.h | 2 +- gdb/solib-aix.c | 26 ++++++++++++-------------- gdb/solib-aix.h | 2 +- gdb/solib-darwin.c | 26 ++++++++++++-------------- gdb/solib-darwin.h | 2 +- gdb/solib-dsbt.c | 23 +++++++++++++---------- gdb/solib-dsbt.h | 28 ++++++++++++++++++++++++++++ gdb/solib-frv.c | 22 ++++++++++++---------- gdb/solib-svr4.c | 34 ++++++++++++++++++---------------- gdb/solib-svr4.h | 2 +- gdb/solib-target.c | 29 +++++++++++------------------ gdb/solib-target.h | 2 +- gdb/tic6x-linux-tdep.c | 2 +- 13 files changed, 112 insertions(+), 88 deletions(-) diff --git a/gdb/frv-tdep.h b/gdb/frv-tdep.h index 64052b8e754..037d81a6ddd 100644 --- a/gdb/frv-tdep.h +++ b/gdb/frv-tdep.h @@ -119,6 +119,6 @@ CORE_ADDR frv_fdpic_find_canonical_descriptor (CORE_ADD= R entry_point); CORE_ADDR frv_fetch_objfile_link_map (struct objfile *objfile); =20 struct target_so_ops; -extern struct target_so_ops frv_so_ops; +extern const struct target_so_ops frv_so_ops; =20 #endif /* FRV_TDEP_H */ diff --git a/gdb/solib-aix.c b/gdb/solib-aix.c index 948bd0f2463..f483f54de13 100644 --- a/gdb/solib-aix.c +++ b/gdb/solib-aix.c @@ -718,25 +718,23 @@ show_solib_aix_debug (struct ui_file *file, int from_= tty, } =20 /* The target_so_ops for AIX targets. */ -struct target_so_ops solib_aix_so_ops; +const struct target_so_ops solib_aix_so_ops =3D +{ + 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, +}; =20 void _initialize_solib_aix (); void _initialize_solib_aix () { - solib_aix_so_ops.relocate_section_addresses - =3D solib_aix_relocate_section_addresses; - solib_aix_so_ops.free_so =3D solib_aix_free_so; - solib_aix_so_ops.clear_solib =3D solib_aix_clear_solib; - solib_aix_so_ops.solib_create_inferior_hook - =3D solib_aix_solib_create_inferior_hook; - solib_aix_so_ops.current_sos =3D solib_aix_current_sos; - solib_aix_so_ops.open_symbol_file_object - =3D solib_aix_open_symbol_file_object; - solib_aix_so_ops.in_dynsym_resolve_code - =3D solib_aix_in_dynsym_resolve_code; - solib_aix_so_ops.bfd_open =3D solib_aix_bfd_open; - gdb::observers::normal_stop.attach (solib_aix_normal_stop_observer, "solib-aix"); =20 diff --git a/gdb/solib-aix.h b/gdb/solib-aix.h index edb0b5ad142..24415f66234 100644 --- a/gdb/solib-aix.h +++ b/gdb/solib-aix.h @@ -19,7 +19,7 @@ #define SOLIB_AIX_H =20 struct target_so_ops; -extern struct target_so_ops solib_aix_so_ops; +extern const struct target_so_ops solib_aix_so_ops; =20 extern CORE_ADDR solib_aix_get_toc_value (CORE_ADDR pc); =20 diff --git a/gdb/solib-darwin.c b/gdb/solib-darwin.c index e61ec0d4bf3..4eca080618a 100644 --- a/gdb/solib-darwin.c +++ b/gdb/solib-darwin.c @@ -33,6 +33,7 @@ #include "solist.h" #include "solib.h" #include "solib-svr4.h" +#include "solib-darwin.h" =20 #include "bfd-target.h" #include "elf-bfd.h" @@ -674,18 +675,15 @@ darwin_bfd_open (const char *pathname) return res; } =20 -struct target_so_ops darwin_so_ops; - -void _initialize_darwin_solib (); -void -_initialize_darwin_solib () +const struct target_so_ops darwin_so_ops =3D { - darwin_so_ops.relocate_section_addresses =3D darwin_relocate_section_add= resses; - darwin_so_ops.free_so =3D darwin_free_so; - darwin_so_ops.clear_solib =3D darwin_clear_solib; - darwin_so_ops.solib_create_inferior_hook =3D darwin_solib_create_inferio= r_hook; - darwin_so_ops.current_sos =3D darwin_current_sos; - darwin_so_ops.open_symbol_file_object =3D open_symbol_file_object; - darwin_so_ops.in_dynsym_resolve_code =3D darwin_in_dynsym_resolve_code; - darwin_so_ops.bfd_open =3D 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, +}; diff --git a/gdb/solib-darwin.h b/gdb/solib-darwin.h index e920e7a913e..32e7c8d1517 100644 --- a/gdb/solib-darwin.h +++ b/gdb/solib-darwin.h @@ -23,6 +23,6 @@ struct objfile; struct target_so_ops; =20 -extern struct target_so_ops darwin_so_ops; +extern const struct target_so_ops darwin_so_ops; =20 #endif /* solib-darwin.h */ diff --git a/gdb/solib-dsbt.c b/gdb/solib-dsbt.c index b4cd16327a6..b866a0b4517 100644 --- a/gdb/solib-dsbt.c +++ b/gdb/solib-dsbt.c @@ -29,6 +29,7 @@ #include "gdbcmd.h" #include "elf-bfd.h" #include "gdb_bfd.h" +#include "solib-dsbt.h" =20 #define GOT_MODULE_OFFSET 4 =20 @@ -924,21 +925,23 @@ show_dsbt_debug (struct ui_file *file, int from_tty, gdb_printf (file, _("solib-dsbt debugging is %s.\n"), value); } =20 -struct target_so_ops dsbt_so_ops; +const struct target_so_ops dsbt_so_ops =3D +{ + 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, +}; =20 void _initialize_dsbt_solib (); void _initialize_dsbt_solib () { - dsbt_so_ops.relocate_section_addresses =3D dsbt_relocate_section_address= es; - dsbt_so_ops.free_so =3D dsbt_free_so; - dsbt_so_ops.clear_solib =3D dsbt_clear_solib; - dsbt_so_ops.solib_create_inferior_hook =3D dsbt_solib_create_inferior_ho= ok; - dsbt_so_ops.current_sos =3D dsbt_current_sos; - dsbt_so_ops.open_symbol_file_object =3D open_symbol_file_object; - dsbt_so_ops.in_dynsym_resolve_code =3D dsbt_in_dynsym_resolve_code; - dsbt_so_ops.bfd_open =3D solib_bfd_open; - /* Debug this file's internals. */ add_setshow_zuinteger_cmd ("solib-dsbt", class_maintenance, &solib_dsbt_debug, _("\ diff --git a/gdb/solib-dsbt.h b/gdb/solib-dsbt.h new file mode 100644 index 00000000000..98c0a31d68b --- /dev/null +++ b/gdb/solib-dsbt.h @@ -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 . = */ + +#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 */ diff --git a/gdb/solib-frv.c b/gdb/solib-frv.c index df86b147f47..6ca303c3566 100644 --- a/gdb/solib-frv.c +++ b/gdb/solib-frv.c @@ -1129,21 +1129,23 @@ frv_fetch_objfile_link_map (struct objfile *objfile) return 0; } =20 -struct target_so_ops frv_so_ops; +const struct target_so_ops frv_so_ops =3D +{ + 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, +}; =20 void _initialize_frv_solib (); void _initialize_frv_solib () { - frv_so_ops.relocate_section_addresses =3D frv_relocate_section_addresses; - frv_so_ops.free_so =3D frv_free_so; - frv_so_ops.clear_solib =3D frv_clear_solib; - frv_so_ops.solib_create_inferior_hook =3D frv_solib_create_inferior_hook; - frv_so_ops.current_sos =3D frv_current_sos; - frv_so_ops.open_symbol_file_object =3D open_symbol_file_object; - frv_so_ops.in_dynsym_resolve_code =3D frv_in_dynsym_resolve_code; - frv_so_ops.bfd_open =3D solib_bfd_open; - /* Debug this file's internals. */ add_setshow_zuinteger_cmd ("solib-frv", class_maintenance, &solib_frv_debug, _("\ diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c index 893da86e27e..bab76e25baf 100644 --- a/gdb/solib-svr4.c +++ b/gdb/solib-svr4.c @@ -3121,8 +3121,6 @@ svr4_lp64_fetch_link_map_offsets (void) } =0C =20 -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, n= ot in the main executable. */ @@ -3163,24 +3161,28 @@ svr4_iterate_over_objfiles_in_search_order } } =20 +const struct target_so_ops svr4_so_ops =3D +{ + 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 =3D svr4_relocate_section_address= es; - svr4_so_ops.free_so =3D svr4_free_so; - svr4_so_ops.clear_so =3D svr4_clear_so; - svr4_so_ops.clear_solib =3D svr4_clear_solib; - svr4_so_ops.solib_create_inferior_hook =3D svr4_solib_create_inferior_ho= ok; - svr4_so_ops.current_sos =3D svr4_current_sos; - svr4_so_ops.open_symbol_file_object =3D open_symbol_file_object; - svr4_so_ops.in_dynsym_resolve_code =3D svr4_in_dynsym_resolve_code; - svr4_so_ops.bfd_open =3D solib_bfd_open; - svr4_so_ops.same =3D svr4_same; - svr4_so_ops.keep_data_in_core =3D svr4_keep_data_in_core; - svr4_so_ops.update_breakpoints =3D svr4_update_solib_event_breakpoints; - svr4_so_ops.handle_event =3D svr4_handle_solib_event; - gdb::observers::free_objfile.attach (svr4_free_objfile_observer, "solib-svr4"); } diff --git a/gdb/solib-svr4.h b/gdb/solib-svr4.h index 8b4968509f2..4a6880225e2 100644 --- a/gdb/solib-svr4.h +++ b/gdb/solib-svr4.h @@ -25,7 +25,7 @@ struct objfile; struct target_so_ops; =20 -extern struct target_so_ops svr4_so_ops; +extern const struct target_so_ops svr4_so_ops; =20 /* Link map info to include in an allocated so_list entry. */ =20 diff --git a/gdb/solib-target.c b/gdb/solib-target.c index 8def640a1e7..6eb0d171147 100644 --- a/gdb/solib-target.c +++ b/gdb/solib-target.c @@ -435,22 +435,15 @@ solib_target_in_dynsym_resolve_code (CORE_ADDR pc) return in_plt_section (pc); } =20 -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 =3D { - solib_target_so_ops.relocate_section_addresses - =3D solib_target_relocate_section_addresses; - solib_target_so_ops.free_so =3D solib_target_free_so; - solib_target_so_ops.clear_solib =3D solib_target_clear_solib; - solib_target_so_ops.solib_create_inferior_hook - =3D solib_target_solib_create_inferior_hook; - solib_target_so_ops.current_sos =3D solib_target_current_sos; - solib_target_so_ops.open_symbol_file_object - =3D solib_target_open_symbol_file_object; - solib_target_so_ops.in_dynsym_resolve_code - =3D solib_target_in_dynsym_resolve_code; - solib_target_so_ops.bfd_open =3D 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, +}; diff --git a/gdb/solib-target.h b/gdb/solib-target.h index b2028447c71..016a5fe7c2d 100644 --- a/gdb/solib-target.h +++ b/gdb/solib-target.h @@ -21,6 +21,6 @@ #define SOLIB_TARGET_H =20 struct target_so_ops; -extern struct target_so_ops solib_target_so_ops; +extern const struct target_so_ops solib_target_so_ops; =20 #endif /* solib-target.h */ diff --git a/gdb/tic6x-linux-tdep.c b/gdb/tic6x-linux-tdep.c index b99cfc0d5e3..855eb303537 100644 --- a/gdb/tic6x-linux-tdep.c +++ b/gdb/tic6x-linux-tdep.c @@ -27,6 +27,7 @@ #include "elf-bfd.h" #include "elf/tic6x.h" #include "gdbarch.h" +#include "solib-dsbt.h" =20 /* 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) } =20 =20 -extern struct target_so_ops dsbt_so_ops; static void tic6x_uclinux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) {