From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16447 invoked by alias); 15 Mar 2006 22:34:12 -0000 Received: (qmail 16439 invoked by uid 22791); 15 Mar 2006 22:34:12 -0000 X-Spam-Check-By: sourceware.org Received: from sibelius.xs4all.nl (HELO sibelius.xs4all.nl) (82.92.89.47) by sourceware.org (qpsmtpd/0.31) with ESMTP; Wed, 15 Mar 2006 22:34:11 +0000 Received: from elgar.sibelius.xs4all.nl (root@elgar.sibelius.xs4all.nl [192.168.0.2]) by sibelius.xs4all.nl (8.13.4/8.13.4) with ESMTP id k2FMY7YD031781 for ; Wed, 15 Mar 2006 23:34:07 +0100 (CET) Received: from elgar.sibelius.xs4all.nl (kettenis@localhost.sibelius.xs4all.nl [127.0.0.1]) by elgar.sibelius.xs4all.nl (8.13.4/8.13.3) with ESMTP id k2FMY7R7032556 for ; Wed, 15 Mar 2006 23:34:07 +0100 (CET) Received: (from kettenis@localhost) by elgar.sibelius.xs4all.nl (8.13.4/8.13.4/Submit) id k2FMY7kd008466; Wed, 15 Mar 2006 23:34:07 +0100 (CET) Date: Wed, 15 Mar 2006 22:44:00 -0000 Message-Id: <200603152234.k2FMY7kd008466@elgar.sibelius.xs4all.nl> From: Mark Kettenis To: gdb-patches@sourceware.org In-reply-to: <20060315163650.GA16226@nevyn.them.org> (message from Daniel Jacobowitz on Wed, 15 Mar 2006 11:36:50 -0500) Subject: Re: RFC: Correct "paddr_t" in gdb_proc_service.h References: <20060315163650.GA16226@nevyn.them.org> Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2006-03/txt/msg00204.txt.bz2 > Date: Wed, 15 Mar 2006 11:36:50 -0500 > From: Daniel Jacobowitz > > If there is no , GDB will typedef unsigned long to paddr_t, > which is then used in various libthread_db interfaces. Even when this code > was designed to work on Solaris systems in addition to GNU/Linux, this > wasn't right; Solaris doesn't provide a paddr_t that has anything to do with > libthread_db, only an unrelated one that deals with physical addressing. Yes indeed. On BSD paddr_t is an usnigned integer type used to store physical memory addresses > The type that glibc's libthread_db uses is psaddr_t, which is a pointer > type. > > When I wrote this patch (last year) I went through the original changelog > entries for this file from 2000; they suggest that this change is correct > and there should be no paddr_t references in GDB. I think that's right, and therefore I don't understand your change at all :(. > 2006-03-15 Daniel Jacobowitz > > * gdb_proc_service.h (paddr_t): Use psaddr_t if available. > * proc-service.c (ps_xfer_memory): Cast paddr_t to unsigned > long. > (ps_pglobal_lookup): Cast CORE_ADDR to paddr_t. > > Index: src/gdb/gdb_proc_service.h > =================================================================== > --- src.orig/gdb/gdb_proc_service.h 2006-03-15 10:21:32.000000000 -0500 > +++ src/gdb/gdb_proc_service.h 2006-03-15 10:21:36.000000000 -0500 > @@ -1,5 +1,5 @@ > /* replacement for systems that don't have it. > - Copyright (C) 2000 Free Software Foundation, Inc. > + Copyright (C) 2000, 2006 Free Software Foundation, Inc. > > This file is part of GDB. > > @@ -48,10 +48,11 @@ typedef enum > typedef unsigned int lwpid_t; > #endif > > -typedef unsigned long paddr_t; > - > #ifndef HAVE_PSADDR_T > typedef unsigned long psaddr_t; > +typedef unsigned long paddr_t; > +#else > +typedef psaddr_t paddr_t; > #endif > > #ifndef HAVE_PRGREGSET_T > Index: src/gdb/proc-service.c > =================================================================== > --- src.orig/gdb/proc-service.c 2006-03-15 10:21:32.000000000 -0500 > +++ src/gdb/proc-service.c 2006-03-15 10:22:49.000000000 -0500 > @@ -75,9 +75,9 @@ ps_xfer_memory (const struct ps_prochand > inferior_ptid = pid_to_ptid (ph->pid); > > if (write) > - ret = target_write_memory (addr, buf, len); > + ret = target_write_memory ((unsigned long) addr, buf, len); > else > - ret = target_read_memory (addr, buf, len); > + ret = target_read_memory ((unsigned long) addr, buf, len); > > do_cleanups (old_chain); > > @@ -181,7 +181,7 @@ ps_pglobal_lookup (gdb_ps_prochandle_t p > if (ms == NULL) > return PS_NOSYM; > > - *sym_addr = SYMBOL_VALUE_ADDRESS (ms); > + *sym_addr = (paddr_t) (unsigned long) SYMBOL_VALUE_ADDRESS (ms); > return PS_OK; > } > >