parlib: Fix fake parlib detection for dlopen() (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 18 Aug 2017 19:53:37 +0000 (15:53 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 22 Aug 2017 20:13:50 +0000 (16:13 -0400)
commitc77d5ade84b7e09fec2a2f4f1e339385238b4c28
treef05ea7242da71d5d60137158e00b01da9ba27bb4
parent336778acc2841670ff439ac07c47bedd1902af1f
parlib: Fix fake parlib detection for dlopen() (XCC)

This goes back to commit 2d0747b5a1f4 ("parlib: Don't run ctors in "fake
parlib"").

That commit worked if the library was loaded first, as is the case with
e.g. libelf.so.  However, if the library was loaded after the binary, it
might see the program binary's _start, and rightly notice it differs from
__fake_start.  To make matters worse, whether or not the library's _start
was overloaded depended on whether or not the binary accessed it.  It's a
mess that I never fully tracked down.

The current version does the trick, at least as long as we keep the binary
mapped below our anonymous mmaps.

If you're paranoid, rebuild the world, though that's probably unnecessary.
At least do this:

$ make install-libs
$ make apps-install

And then build any other shared libs.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
user/parlib/vcore.c