This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Reason for cygwin GCC 2.97 non-bootstrap found
- To: Richard Henderson <rth at redhat dot com>
- Subject: Re: Reason for cygwin GCC 2.97 non-bootstrap found
- From: "Zack Weinberg" <zackw at Stanford dot EDU>
- Date: Mon, 20 Nov 2000 19:34:49 -0800
- Cc: Kelley Cook <Kelley dot Cook at home dot com>, Cygwin mailing list <Cygwin at sources dot redhat dot com>, GCC Bugs <gcc-bugs at gcc dot gnu dot org>, GCC Patches <gcc-patches at gcc dot gnu dot org>
- References: <200011202245.eAKMjjN27680@plmlir3.mail.eds.com> <20001120154222.O17712@wolery.stanford.edu> <20001120192414.D17317@redhat.com>
On Mon, Nov 20, 2000 at 07:24:14PM -0800, Richard Henderson wrote:
> On Mon, Nov 20, 2000 at 03:42:23PM -0800, Zack Weinberg wrote:
> > +#if use_malloc
> > + return (char *) malloc (size);
> > +#endif
> [...]
> > + return res + offset;
>
> I refuse to believe that there exists any magic size/roundup/offset
> combination that *always* returns a full page of aligned memory.
Laurnyas' version of this patch went through extreme contortions to
figure out where in a N-page chunk of memory an N-1-page chunk of
aligned memory was located, assuming that this would be different each
time. I thought just the opposite you do, so I took it out - it would
be relatively easy to put it back.
> The only semi-decent solution I can think of is to get N*pagesize+C
> bytes from malloc, which can then be delivered as N' aligned data pages,
> plus a control block of size C to determine when the entire block may
> be freed. N' will normally be N-1, but could accidentally be N.
In fact I plan to do this after I figure out just where the labor
split between libiberty and ggc-page.c should be. I wanted to get the
basic patch out there so it could be tested by people without mmap, or
malloc that page-aligns all page-sized memory requests.
> Moreover, I think the ggc-page mmap optimizations are useful enough
> that I do not want to defer everything to an xvalloc or the like.
They should come back as a side effect of doing the N*pagesize+C thing
you suggest.
zw