On Saturday, 16th December 2000, "Donald J . Maddox" wrote:

>The other day, on a whim, I decided to try running an old binary
>of SimCity (the same one found in the 'commerce' directory on
>many FBSD cds), and it failed in a odd way...

You and I may be the only people in the world that run old binaries.
This has been broken for new users for some time. :-(  Those of us
upgrading from source have been immune to this problem, because we
retain the old a.out ld.so binary.

>/usr/libexec/ld.so: Undefined symbol "___error" called from sim:/usr/X11R6/lib
>/aout/libX11.so.6.1 at 0x20160644

When errno became a function that returns a pointer (previously it was
a simple integer variable), recompiled libraries became incompatable with
old binaries.  So, I hacked the a.out loader (ld.so).  The fix was in 3.0.
Well, Nate called it a horrible hack, so maybe I should say "the hack was
in 3.0".

>Am I overlooking something obvious here, or is something actually
>broken with respect to running old aout binaries?

I found that rtld-aout won't compile.  That's kinda broken.
(It's probably something simple.  Looks like the a.out version of
a pic library just isn't around any more).  I'll try harder later.
What's certain is that it isn't compiled by default.

I poked about with my old FreeBSD CD collection and found that
version 3.0 through 3.2 have a fully functioning (fully hack enabled)
ld.so, but an older binary has been substituted in 3.3 and onward,
including 4.0 and 4.1, and most likely 4.2 also.

I can only guess that some anonymous release engineer (nobody we know :-)
picked the wrong CD at some point to get the master copy of ld.so once
it stopped compiling.  (Or at least stopped being easily compiled.)

Ideally, rtld-aout would be compiled fresh for every release.  Until then,
you can repair your system by retrieving ld.so from a 3.3 CD (in the
compat22 section), or from a 3.2 live filesystem CD.

Stephen.


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to