Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 Sep 2003 19:26:55 +0200
From:      Simon 'corecode' Schubert <corecode@fs.ei.tum.de>
To:        "Matthew N. Dodd" <winter@jurai.net>
Cc:        kernel@lists.dragonflybsd.org
Subject:   Re: Prebinding for DragonFly/FreeBSD-4
Message-ID:  <20030914192655.51deb3a4.corecode@fs.ei.tum.de>
In-Reply-To: <20030913012449.Y27896@sasami.jurai.net>
References:  <20030913045444.407b1cd6.corecode@fs.ei.tum.de> <20030913012449.Y27896@sasami.jurai.net>

next in thread | previous in thread | raw e-mail | index | archive | help
--=.s2C6?ZlJKlwc.g
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

Lately Matthew N. Dodd told:

> Prebinding on a per executable basis rather than a per "object" (ELF
> executable or library) means that when you go to prebind KDE (for
> example) you run /var out of diskspace :/

Yes, that might be true. How about this approach:
(doesn't cope with cyclic ``needs'' yet)

- assign every .so a base address so that no collisions happen for every
  binary considered

Then, for every binary:
- start with resolving the last object (often libc), as if only this
  object was loaded
- proceed to the next object (might be another .so or the binary)
- there again, resolve stuff. if this changes resolved data in
  objects resolved before (global references...), save this data too,
  like deltas to the data of the object before.
- loop

This means: Every object has the data assigned which it ultimatively
requests. If globals etc exists they will overridden by the next object
which requested previous object.

On load, just run the same way. First, load data of the last object
(i.e. libc), then running the object list back to the binary, load data.
Globals that get resolved another way than without object X will be
overwriten by the patchup data for object X.

Uhg, I hope I made myself (at least partly) clear enough to follow.

cheers
  simon

-- 
/"\   http://corecode.ath.cx/#donate
\ /
 \     ASCII Ribbon Campaign
/ \  Against HTML Mail and News

--=.s2C6?ZlJKlwc.g
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (GNU/Linux)

iD8DBQE/ZKTmr5S+dk6z85oRAs+ZAJ4nDXU1IABA5Sstg/E/TcUrfwofZQCaAwLM
BSK681FZblROSdSQO1aCplk=
=msZJ
-----END PGP SIGNATURE-----

--=.s2C6?ZlJKlwc.g--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030914192655.51deb3a4.corecode>