Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Jan 2001 14:03:27 -0500 (EST)
From:      Zhiui Zhang <zzhang@cs.binghamton.edu>
To:        John Polstra <jdp@polstra.com>
Cc:        hackers@freebsd.org
Subject:   Re: Process virtual memory question
Message-ID:  <Pine.SOL.4.21.0101111352290.24593-100000@jade>
In-Reply-To: <200101111742.f0BHgMt10004@vashon.polstra.com>

next in thread | previous in thread | raw e-mail | index | archive | help

Thanks.  It just occurs to me that Linux kernel used to have something
like this in routine BUG():

 * ((char *) 0) = 0;

It is called when there is a kernel bug.  So address 0 should not be
mapped writable, otherwise all C statements " char * p = NULL; * p =
value; " would be legal.

The book "Unix Internals - A Practical Approach" by S.D. Pate has a figure
showing in ELF format, the stack lies BELOW the code segment and grows
downwards.  This might have something to do with code starting from
0x8048000.

-Zhihui


On Thu, 11 Jan 2001, John Polstra wrote:

> In article <Pine.SOL.4.21.0101111008490.22923-100000@jade>, Zhiui
> Zhang <zzhang@cs.binghamton.edu> wrote:
> 
> > Although the 4.4 BSD design and implementation book says the text
> > part of a process starts from 0x0000,0000, it actually starts from
> > some place around 0x800,0000 (or 0x8048000 to be exact). What's in
> > the area between 0 - 0x800,0000? Why do we not use it if it is left
> > empty as shown by /proc/pid/map?  How is the magic number 0x8048000
> > determined? Thanks.
> 
> Processes used to be mapped at address 0 when we used the a.out object
> file format.  We changed the starting address to 0x8048000 when we
> switched to the ELF format.  That magic address came from SVR4, the
> first system to use ELF.
> 
> I am not 100% sure why the SVR4 developers chose that address.  I
> think it may have been so that they could map libc and the dynamic
> linker at the fixed address 0, thereby avoiding the need to do any
> run-time relocations on them.
> 
> In any case, all ELF-based systems on the x86 architecture seem to
> use this same address.  On other architecutures such as the Alpha
> it is entirely different, of course.
> 



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.SOL.4.21.0101111352290.24593-100000>