From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-il1-x132.google.com (mail-il1-x132.google.com [IPv6:2607:f8b0:4864:20::132]) by sourceware.org (Postfix) with ESMTPS id EDBD5385702E for ; Mon, 8 Aug 2022 19:28:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org EDBD5385702E Received: by mail-il1-x132.google.com with SMTP id d4so5397092ilc.8 for ; Mon, 08 Aug 2022 12:28:07 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc; bh=qsx5hkPWcbmlQxXVU7dK7xj+XKRidEsGFUwMSTWrcbc=; b=MeY8ZuSkVLafznw2lMNEgLl06mpDLdmOd4KNf7v29Mq29HteA4IEvlzes2AwvhB/Qg tbBfwlSdF+cw24gwitYGHomXM6PFEXRICj4D0K+DXSwZms1U8u9foWWKpBz7aXYkO6i0 67FkwgaDpn/lhn/OiMSwuQzt9achoQNf8NamGhpt9t+k4+FFkbjY0F6q0ODGb7cLPES3 +KiRL+yyqo0R48ZAkQQvIAoBdk/M+DV0IEWl3K7yF2MHekntJuAFb46xCMuD8PTpwEON Y9hcLo5HZ8vaDdzBfadCQK2ueY/Z89iha5lYQw1hXbNltuRiuPzMEqOm53cbofIaLobw w6Kw== X-Gm-Message-State: ACgBeo3L7xQCiAfVfx8+hUDM4iRSjSKCq1ERFildmjgo+Zhd/G+ff9HZ wd6N0b+xlgu57oIVSTFlhZX+8HjtM+ibSg== X-Google-Smtp-Source: AA6agR677pWurjfaPO2g1hwzGY1zyW+VaRVYKKX7MyP6g8aZm/tfc8zIvov5UOZGUTnShnemJXThBg== X-Received: by 2002:a05:6e02:1d16:b0:2de:c48e:d2e2 with SMTP id i22-20020a056e021d1600b002dec48ed2e2mr8882667ila.164.1659986887190; Mon, 08 Aug 2022 12:28:07 -0700 (PDT) Received: from murgatroyd.Home (71-211-185-228.hlrn.qwest.net. [71.211.185.228]) by smtp.gmail.com with ESMTPSA id z11-20020a027a4b000000b003423f7b779csm5438380jad.41.2022.08.08.12.28.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Aug 2022 12:28:06 -0700 (PDT) From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH 3/3] Constify some target_so_ops instances Date: Mon, 8 Aug 2022 13:28:01 -0600 Message-Id: <20220808192801.260256-4-tromey@adacore.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220808192801.260256-1-tromey@adacore.com> References: <20220808192801.260256-1-tromey@adacore.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Aug 2022 19:28:10 -0000 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. --- 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(-) create mode 100644 gdb/solib-dsbt.h 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_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 */ 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, } /* 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"); 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 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); 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" #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, +}; 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; -extern struct target_so_ops darwin_so_ops; +extern const struct target_so_ops darwin_so_ops; #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" #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, _("\ 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; } -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, _("\ 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) } -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"); } 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; -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. */ 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); } -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, +}; 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 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 */ 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" /* 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) { -- 2.34.1