Subject: Re: What changed in fpsp.o?
To: Olaf Seibert <rhialto@mbfys.kun.nl>
From: Michael L. Hitch <osymh@gemini.oscs.montana.edu>
List: amiga-dev
Date: 06/07/1994 09:40:04
On Jun 7, 10:57am, Olaf Seibert wrote:
> The update listing reports:
> > Modified Files:
> > fpsp.U
> > Log Message:
> > Fresh compilation, with a few bugs fixed.
>
> but now the magic number has changed from "NetBSD/m68k object file not
> stripped" to "NetBSD/m68k4k object file not stripped" and ld refuses to
> touch it (muttering about it not being a native object file).
Hmm, it linked fine for me. I'll have to check the MID code on my file.
> What is a "m68k4k"? A typo of "m68k40" (68040) or something like that?
I think m68k4k is an m68k arch with 4K pages, but that should only be
in reference to an executable binary (the binaries can have a 4k page size
or an 8k page size - the Amiga is using 8k pages).
> I edited the magic number to conform to that of all of the other object
> files I had, and then linking proceeded fine (well, with the exception
> of those retina files included by config.new). The resulting kernel
> however ran some binaries, and not others. The changed mmap call is not
> what seems to be the problem (my binaries are too old for that and use
> what now probably is called ommap), but perhaps floating point is.
>
> Some that worked: init, ls, bash, cat, mount, ldd.
> Some that didn't: more, vi, od. (These didn't produce any output at all
> and just terminated)
> Trying ktrace and kdump to find which system call (if any) would be
> the problem didn't help; perhaps the log file format changed, in any case
> kdump complained about the log file.
>
> The relevant kernel source was supped 6 june; the binaries are very old
> (shared lib rev 4)
I am assuming you are running on a 68040. It's a problem with changes to
the cachectl() routine not being reflected in ld.so (anyone remember way back
to when shared libraries were first introduced - they didn't work on the
68040?).
A quick fix is to change amiga/sys_machdep.c to not compile the new
cachectl stuff. There's an #ifdef M68040 in the cachectl routine. I just
changed it to #ifdef notyet /*M68040*/ to get things working.
The correct fix is to fix the cachectl call in ld.so
(gnu/usr.bin/ld/m68k/mdprologue.S) to set up the arguments correctly.
[When I first added the cachectl calls, the cachectl routine in sys_machdep
didn't use the address/length arguments, and there wasn't any documentation
on the call, so I didn't bother setting those up.]
Michael
--
Michael L. Hitch INTERNET: osymh@montana.edu
Computer Consultant BITNET: OSYMH@MTSUNIX1.BITNET
Office of Systems and Computing Services
Montana State University Bozeman, MT USA
------------------------------------------------------------------------------