From owner-freebsd-current Sun Dec 17 8:57:54 2000 From owner-freebsd-current@FreeBSD.ORG Sun Dec 17 08:57:51 2000 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from ns5.pacific.net.au (ns5.pacific.net.au [203.143.252.30]) by hub.freebsd.org (Postfix) with ESMTP id CA56E37B698 for ; Sun, 17 Dec 2000 08:57:49 -0800 (PST) Received: from dungeon.home (ppp220.dyn249.pacific.net.au [203.143.249.220]) by ns5.pacific.net.au (8.9.0/8.9.1) with ESMTP id DAA08045; Mon, 18 Dec 2000 03:57:44 +1100 (EST) Received: from dungeon.home (localhost [127.0.0.1]) by dungeon.home (8.11.1/8.9.3) with ESMTP id eBHGwGW24109; Mon, 18 Dec 2000 02:58:16 +1000 (EST) (envelope-from mckay) Message-Id: <200012171658.eBHGwGW24109@dungeon.home> To: "Donald J . Maddox" Cc: current@freebsd.org, mckay@thehub.com.au Subject: Re: Is compatibility for old aout binaries broken? References: <20001216161756.A6370@cae88-102-101.sc.rr.com> In-Reply-To: <20001216161756.A6370@cae88-102-101.sc.rr.com> from "Donald J . Maddox" at "Sat, 16 Dec 2000 21:17:57 +0000" Date: Mon, 18 Dec 2000 02:58:16 +1000 From: Stephen McKay Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG 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 majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message