Date: Wed, 29 Nov 1995 11:04:35 +0100 (MET) From: grog@lemis.de (Greg Lehey) To: sos@freebsd.org Cc: hackers@freebsd.org (FreeBSD Hackers) Subject: Re: Enough already! (Was: Where is the documentation for ibcs2?) Message-ID: <199511291004.LAA16724@allegro.lemis.de> In-Reply-To: <199511290837.JAA01196@ra.dkuug.dk> from "sos@freebsd.org" at Nov 29, 95 09:37:44 am
next in thread | previous in thread | raw e-mail | index | archive | help
sos@freebsd.org writes:
>
> In reply to Greg Lehey who wrote:
>>
>>> You need a COFF debugger, preferably compile FreeBSD native...
>>
>> You don't understand. Watch my fingers: "it doesn't get as far as
>> being executed." I have a gdb compiled under SCO 3.2.2 (by chance),
>> though it still doesn't like the "user area" of the emulator: ptrace()
>> bombs out looking for the eip value.
>
> Hmm, I'm not sure who it is that don't understand here...
Here's the gdb code to fetch registers from the u area, somewhat
simplified (BTW, Terry suggested that this should be done with /proc,
not with ptrace(). This won't work, because this is a COFF
executable, and I shudder at the consequences of trying to tell an
SVR3 executable about FreeBSD):
fetch_register (regno)
int regno;
{
/* This isn't really an address. But ptrace thinks of it as one. */
CORE_ADDR regaddr;
char buf[MAX_REGISTER_RAW_SIZE];
char mess[128]; /* For messages */
register int i;
/* Offset of registers within the u area. */
unsigned int offset;
offset = U_REGS_OFFSET;
regaddr = register_addr (regno, offset);
*(PTRACE_XFER_TYPE *) &buf[i] = ptrace (PT_READ_U, inferior_pid,
(PTRACE_ARG3_TYPE) regaddr, 0);
supply_register (regno, buf);
}
I don't have an SCO machine up and running at the moment, but I've
seen this problem before: register_addr itself calls ptrace() to find
the address of the saved register block, and it's wrong (typically
contains 0). If you *really*, *really* find this important, I'll drag
out the disk and fire her up.
>> To be more specific, you can't debug the vi problem because it bombs
>> out of execve (look at the end of the function source: if things go
>> wrong, it sends a SIGABRT). This is reasonable, since COFF
>> effectively specifies multiple text segments in the header, and the
>> file for one of them was missing. Possibly, though, we should
>> consider a message stating the name of the missing file if it wasn't
>> the executable itself.
>
> Look at how our execution classes works, and you will now why this is
> so. If you miss a shared lib it should say so though (at least in
> the old iBCS2 code).
Hmmm. Certainly in this case we're not getting a message, though we
are missing a shared library. And we are getting a SIGABRT, and
that's what execve does if it can't get the process to run. Possibly
the causes are more complex than that, but I can't be bothered to go
through the code. Your turn now :-)
> I'll repeat again :
> The kernel part of the iBCS2 emulation is only say 10% of what is
> needed to run iBCS2/SCO apps, we must have a compatibel shell, ed
> sed, echo, awk, and and and, or its just going to break one
> way or another. We must have our own legal shared libs (plus an
> environment to make these in case things change). Then we also
> must have a "custom" util to install the stuff, plus whatever
> config files, setups, filestructure etc etc etc that the SCO
> apps expects from the system.
Well, I think I have to disagree about the value of 10%, but I agree
that there's still a lot to be done. As I said in a previous message,
I have a number of pieces there for the taking, including the complete
GNU C library for SCO (and it works!). It's not in shared library
format at the moment, but it shouldn't be that much of a problem if
somebody's interested.
>> So when are we going for SVR4.2 emulation?
>
> Ha!, I've had my system run NCR svr4 binaries for almost a year
> now, but there are even more things to make SVR4 run that
> running iBCS2 (and besides my code for this doesn't work
> with the iBCS2 stuff we now have from NetBSD, it is nicely
> integrated into the "original" iBCS2 emulator).
Well, it's a start. What was wrong with the "original" emulator?
Greg
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199511291004.LAA16724>
