From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: VIRT_ADDR_VARIES Date: Thu, 10 Nov 2011 06:06:28 -0500 Message-ID: References: <4EB73983.1060000@cs.ucla.edu> <4EB86864.5080709@cs.ucla.edu> <4EB96841.7020701@cs.ucla.edu> <4EB99C7D.8000407@cs.ucla.edu> <4EBABBF5.5030602@cs.ucla.edu> <4EBB8882.6080504@cs.ucla.edu> Reply-To: Eli Zaretskii NNTP-Posting-Host: lo.gmane.org X-Trace: dough.gmane.org 1320923205 31763 80.91.229.12 (10 Nov 2011 11:06:45 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Thu, 10 Nov 2011 11:06:45 +0000 (UTC) Cc: schwab@linux-m68k.org, emacs-devel@gnu.org To: Paul Eggert Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Nov 10 12:06:40 2011 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1ROSSu-0007Om-26 for ged-emacs-devel@m.gmane.org; Thu, 10 Nov 2011 12:06:40 +0100 Original-Received: from localhost ([::1]:58954 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ROSSt-0008Ko-C4 for ged-emacs-devel@m.gmane.org; Thu, 10 Nov 2011 06:06:39 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:33833) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ROSSn-0008Kb-OI for emacs-devel@gnu.org; Thu, 10 Nov 2011 06:06:37 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ROSSl-0005oK-6r for emacs-devel@gnu.org; Thu, 10 Nov 2011 06:06:33 -0500 Original-Received: from fencepost.gnu.org ([140.186.70.10]:42148) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ROSSl-0005oG-0P for emacs-devel@gnu.org; Thu, 10 Nov 2011 06:06:31 -0500 Original-Received: from eliz by fencepost.gnu.org with local (Exim 4.71) (envelope-from ) id 1ROSSi-0003lj-V4; Thu, 10 Nov 2011 06:06:28 -0500 In-reply-to: <4EBB8882.6080504@cs.ucla.edu> (message from Paul Eggert on Thu, 10 Nov 2011 00:17:06 -0800) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.10 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:145966 Archived-At: > Date: Thu, 10 Nov 2011 00:17:06 -0800 > From: Paul Eggert > Cc: emacs-devel@gnu.org > > --- src/puresize.h 2011-06-09 19:08:29 +0000 > +++ src/puresize.h 2011-11-10 08:14:27 +0000 > @@ -75,21 +75,7 @@ > > /* Define PURE_P. */ > > -#ifdef VIRT_ADDR_VARIES > -/* For machines where text and data can go anywhere > - in virtual memory. */ > - > extern EMACS_INT pure[]; > > #define PURE_P(obj) \ > - ((PNTR_COMPARISON_TYPE) XPNTR (obj) < (PNTR_COMPARISON_TYPE) ((char *) pure + PURESIZE) \ > - && (PNTR_COMPARISON_TYPE) XPNTR (obj) >= (PNTR_COMPARISON_TYPE) pure) > - > -#else /* not VIRT_ADDR_VARIES */ > - > -extern char my_edata[]; > - > -#define PURE_P(obj) \ > - ((PNTR_COMPARISON_TYPE) XPNTR (obj) < (PNTR_COMPARISON_TYPE) my_edata) > - > -#endif /* VIRT_ADDRESS_VARIES */ > + ((uintptr_t) XPNTR (obj) - (uintptr_t) pure <= PURESIZE) What is the exact definition of "a pure object"? Your changes assume that it is something allocated off pure[], but the original macro, viz. extern char my_edata[]; #define PURE_P(obj) \ ((PNTR_COMPARISON_TYPE) XPNTR (obj) < (PNTR_COMPARISON_TYPE) my_edata) tests something different. It could, for example, return non-zero for an object that was not dynamically allocated at all. It could be that a test against my_edata was just a means, but we should be sure it was, before we effectively define VIRT_ADDRESS_VARIES on all platforms. Also, isn't it dangerous to have an externally visible symbol with a name such as `pure'? What if some system library somewhere also has such a symbol?