From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 33380 invoked by alias); 27 Oct 2015 16:55:52 -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 33369 invoked by uid 89); 27 Oct 2015 16:55:51 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-qg0-f45.google.com Received: from mail-qg0-f45.google.com (HELO mail-qg0-f45.google.com) (209.85.192.45) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Tue, 27 Oct 2015 16:55:37 +0000 Received: by qgad10 with SMTP id d10so149915692qga.3 for ; Tue, 27 Oct 2015 09:55:35 -0700 (PDT) X-Received: by 10.140.101.73 with SMTP id t67mr52866110qge.71.1445964935159; Tue, 27 Oct 2015 09:55:35 -0700 (PDT) MIME-Version: 1.0 Received: by 10.55.75.66 with HTTP; Tue, 27 Oct 2015 09:55:05 -0700 (PDT) In-Reply-To: <1445961713-28986-1-git-send-email-palves@redhat.com> References: <1445961713-28986-1-git-send-email-palves@redhat.com> From: Simon Marchi Date: Tue, 27 Oct 2015 21:30:00 -0000 Message-ID: Subject: Re: [PATCH] Make host_address_to_string/gdb_print_host_address cast parameter to 'void *' To: Pedro Alves Cc: gdb-patches@sourceware.org Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-SW-Source: 2015-10/txt/msg00633.txt.bz2 On 27 October 2015 at 12:01, Pedro Alves wrote: > Fixes a set of errors like: > > ../../src/gdb/symfile-debug.c: In function =E2=80=98int debug_qf_map_sym= tabs_matching_filename(objfile*, const char*, const char*, int (*)(symtab*,= void*), void*)=E2=80=99: > ../../src/gdb/symfile-debug.c:137:39: error: invalid conversion from =E2= =80=98int (*)(symtab*, void*)=E2=80=99 to =E2=80=98const void*=E2=80=99 [-f= permissive] > host_address_to_string (callback), > ^ > > Note this has to work with data and function pointers. In C++11 we > may perhaps do something a bit safer, but we're not there yet, and I > don't think it really matters. For now just always do a simple > C-style cast in host_address_to_string itself. No point in adding a > void * cast to each and every caller. > > gdb/ChangeLog: > 2015-10-27 Pedro Alves > > * common/print-utils.c (host_address_to_string): Undef. > * common/print-utils.h (host_address_to_string): Add a wrapper > macro around the host_address_to_string function. > * utils.c (): You can drop this last line. > * utils.c (gdb_print_host_address): Undef. > * utils.h (gdb_print_host_address): Add a wrapper macro around the > host_address_to_string function. > --- > gdb/common/print-utils.c | 2 ++ > gdb/common/print-utils.h | 4 ++++ > gdb/utils.c | 2 ++ > gdb/utils.h | 4 ++++ > 4 files changed, 12 insertions(+) > > diff --git a/gdb/common/print-utils.c b/gdb/common/print-utils.c > index 1c1a5c1..bd62503 100644 > --- a/gdb/common/print-utils.c > +++ b/gdb/common/print-utils.c > @@ -315,6 +315,8 @@ core_addr_to_string_nz (const CORE_ADDR addr) > > /* See print-utils.h. */ > > +#undef host_address_to_string > + > const char * > host_address_to_string (const void *addr) > { > diff --git a/gdb/common/print-utils.h b/gdb/common/print-utils.h > index 8d16966..abeb003 100644 > --- a/gdb/common/print-utils.h > +++ b/gdb/common/print-utils.h > @@ -67,4 +67,8 @@ extern const char *core_addr_to_string_nz (const CORE_A= DDR addr); > > extern const char *host_address_to_string (const void *addr); > > +/* Wrapper that avoids adding a pointless cast to all callers. */ > +#define host_address_to_string(ADDR) \ > + host_address_to_string ((const void *) (ADDR)) > + > #endif /* COMMON_CELLS_H */ > diff --git a/gdb/utils.c b/gdb/utils.c > index afeff12..101e438 100644 > --- a/gdb/utils.c > +++ b/gdb/utils.c > @@ -1103,6 +1103,8 @@ print_spaces (int n, struct ui_file *file) > > /* Print a host address. */ > > +#undef gdb_print_host_address > + > void > gdb_print_host_address (const void *addr, struct ui_file *stream) > { > diff --git a/gdb/utils.h b/gdb/utils.h > index 995a1cf..a226744 100644 > --- a/gdb/utils.h > +++ b/gdb/utils.h > @@ -248,6 +248,10 @@ extern int filtered_printing_initialized (void); > /* Display the host ADDR on STREAM formatted as ``0x%x''. */ > extern void gdb_print_host_address (const void *addr, struct ui_file *st= ream); > > +/* Wrapper that avoids adding a pointless cast to all callers. */ > +#define gdb_print_host_address(ADDR, STREAM) \ > + gdb_print_host_address ((const void *) ADDR, STREAM) > + > /* Convert CORE_ADDR to string in platform-specific manner. > This is usually formatted similar to 0x%lx. */ > extern const char *paddress (struct gdbarch *gdbarch, CORE_ADDR addr); > -- > 1.9.3 I'm not a fan of the #undef, it makes it harder to follow what's happening. Why not just rename the existing function to host_address_to_string_1? Same for gdb_print_host_address.