From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 111379 invoked by alias); 20 Dec 2016 17:19:11 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 111241 invoked by uid 89); 20 Dec 2016 17:19:10 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-4.0 required=5.0 tests=BAYES_00,KAM_LAZY_DOMAIN_SECURITY,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=submission, *abfd X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 20 Dec 2016 17:19:00 +0000 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 5B9D9C0567B5; Tue, 20 Dec 2016 17:18:59 +0000 (UTC) Received: from [127.0.0.1] (ovpn04.gateway.prod.ext.phx2.redhat.com [10.5.9.4]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id uBKHIwi2023711; Tue, 20 Dec 2016 12:18:58 -0500 Subject: [pushed] gdb: Constify solib_find (Re: [RFA 2/8] Use class to manage BFD reference counts) To: Tom Tromey References: <1480395946-10924-1-git-send-email-tom@tromey.com> <1480395946-10924-3-git-send-email-tom@tromey.com> <87fulseza9.fsf@tromey.com> Cc: gdb-patches@sourceware.org From: Pedro Alves Message-ID: Date: Tue, 20 Dec 2016 17:19:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <87fulseza9.fsf@tromey.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-SW-Source: 2016-12/txt/msg00358.txt.bz2 On 12/13/2016 01:25 PM, Tom Tromey wrote: >>>>>> "Pedro" == Pedro Alves writes: > >>> - return NULL; >>> + return gdb_bfd_ref_ptr (); > > Pedro> This provides a good reason to have an implicit construction from > Pedro> nullptr_t. You had it in the original gdbpy_reference > Pedro> submission, but I had asked to remove it. If we add it back, > Pedro> these cases could be more clearly written as "return > Pedro> NULL/nullptr". Could you do that, and then drop all the hunks > Pedro> like: > >>> - return NULL; >>> + return gdb_bfd_ref_ptr (); > > Pedro> ? > > I did this. Thanks! > Pedro> I think these could be: > Pedro> std::string filename > Pedro> = string_printf ("%.*s", filename_len, pathname); > Pedro> std::string member_name > Pedro> = string_printf ("%.*s", path_len - filename_len - 2, sep + 1)); > > I did this, but it's a bit ugly as solib_find isn't const-correct. That doesn't look hard to fix. I've pushed in the patch below. What uglification does this allow removing? >From 992f1ddc3be1f5195f18beaa801ac50f284b10c5 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Tue, 20 Dec 2016 17:07:19 +0000 Subject: [PATCH] gdb: Constify solib_find gdb/ChangeLog: 2016-12-20 Pedro Alves * nto-tdep.c (nto_find_and_open_solib): Constify 'solib' parameter. * nto-tdep.h (nto_find_and_open_solib): Constify 'solib' parameter. * solib.c (solib_find_1, exec_file_find, solib_find): Constify in_pathname' parameter. * solist.h (struct target_so_ops) : Constify 'soname' parameter. (exec_file_find, solib_find): Constify 'in_pathname' parameter. --- gdb/ChangeLog | 12 ++++++++++++ gdb/nto-tdep.c | 3 ++- gdb/nto-tdep.h | 2 +- gdb/solib.c | 8 ++++---- gdb/solist.h | 6 +++--- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5f0e6fe..2041dd5 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,4 +1,16 @@ 2016-12-20 Pedro Alves + + * nto-tdep.c (nto_find_and_open_solib): Constify 'solib' + parameter. + * nto-tdep.h (nto_find_and_open_solib): Constify 'solib' + parameter. + * solib.c (solib_find_1, exec_file_find, solib_find): Constify + in_pathname' parameter. + * solist.h (struct target_so_ops) : Constify + 'soname' parameter. + (exec_file_find, solib_find): Constify 'in_pathname' parameter. + +2016-12-20 Pedro Alves Yao Qi PR gdb/20977 diff --git a/gdb/nto-tdep.c b/gdb/nto-tdep.c index 47d8a2b..1b18de1 100644 --- a/gdb/nto-tdep.c +++ b/gdb/nto-tdep.c @@ -87,7 +87,8 @@ nto_map_arch_to_cputype (const char *arch) } int -nto_find_and_open_solib (char *solib, unsigned o_flags, char **temp_pathname) +nto_find_and_open_solib (const char *solib, unsigned o_flags, + char **temp_pathname) { char *buf, *arch_path, *nto_root; const char *endian; diff --git a/gdb/nto-tdep.h b/gdb/nto-tdep.h index 81ed50c..06a1f9a 100644 --- a/gdb/nto-tdep.h +++ b/gdb/nto-tdep.h @@ -164,7 +164,7 @@ void nto_relocate_section_addresses (struct so_list *, int nto_map_arch_to_cputype (const char *); -int nto_find_and_open_solib (char *, unsigned, char **); +int nto_find_and_open_solib (const char *, unsigned, char **); enum gdb_osabi nto_elf_osabi_sniffer (bfd *abfd); diff --git a/gdb/solib.c b/gdb/solib.c index c4b2cdc..82214d0 100644 --- a/gdb/solib.c +++ b/gdb/solib.c @@ -152,7 +152,7 @@ show_solib_search_path (struct ui_file *file, int from_tty, */ static char * -solib_find_1 (char *in_pathname, int *fd, int is_solib) +solib_find_1 (const char *in_pathname, int *fd, int is_solib) { const struct target_so_ops *ops = solib_ops (target_gdbarch ()); int found_file = -1; @@ -383,7 +383,7 @@ solib_find_1 (char *in_pathname, int *fd, int is_solib) file handle for the main executable. */ char * -exec_file_find (char *in_pathname, int *fd) +exec_file_find (const char *in_pathname, int *fd) { char *result; const char *fskind = effective_target_file_system_kind (); @@ -434,7 +434,7 @@ exec_file_find (char *in_pathname, int *fd) above. */ char * -solib_find (char *in_pathname, int *fd) +solib_find (const char *in_pathname, int *fd) { const char *solib_symbols_extension = gdbarch_solib_symbols_extension (target_gdbarch ()); @@ -443,7 +443,7 @@ solib_find (char *in_pathname, int *fd) extension. */ if (solib_symbols_extension != NULL) { - char *p = in_pathname + strlen (in_pathname); + const char *p = in_pathname + strlen (in_pathname); while (p > in_pathname && *p != '.') p--; diff --git a/gdb/solist.h b/gdb/solist.h index f709483..948ad31 100644 --- a/gdb/solist.h +++ b/gdb/solist.h @@ -127,7 +127,7 @@ struct target_so_ops If TEMP_PATHNAME is non-NULL: If the file is successfully opened a pointer to a malloc'd and realpath'd copy of SONAME is stored there, otherwise NULL is stored there. */ - int (*find_and_open_solib) (char *soname, + int (*find_and_open_solib) (const char *soname, unsigned o_flags, char **temp_pathname); /* Hook for looking up global symbols in a library-specific way. */ @@ -172,10 +172,10 @@ void free_so (struct so_list *so); struct so_list *master_so_list (void); /* Find main executable binary file. */ -extern char *exec_file_find (char *in_pathname, int *fd); +extern char *exec_file_find (const char *in_pathname, int *fd); /* Find shared library binary file. */ -extern char *solib_find (char *in_pathname, int *fd); +extern char *solib_find (const char *in_pathname, int *fd); /* Open BFD for shared library file. */ extern bfd *solib_bfd_fopen (char *pathname, int fd); -- 2.5.5