Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Jan 2001 09:42:22 -0800 (PST)
From:      John Polstra <jdp@polstra.com>
To:        hackers@freebsd.org
Cc:        zzhang@cs.binghamton.edu
Subject:   Re: Process virtual memory question
Message-ID:  <200101111742.f0BHgMt10004@vashon.polstra.com>
In-Reply-To: <Pine.SOL.4.21.0101111008490.22923-100000@jade>
References:  <Pine.SOL.4.21.0101111008490.22923-100000@jade>

next in thread | previous in thread | raw e-mail | index | archive | help
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.

John
-- 
  John Polstra                                               jdp@polstra.com
  John D. Polstra & Co., Inc.                        Seattle, Washington USA
  "Disappointment is a good sign of basic intelligence."  -- Chögyam Trungpa



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?200101111742.f0BHgMt10004>