Date: Tue, 7 Nov 1995 07:02:17 +0000 () From: Michael Smith <msmith@atrad.adelaide.edu.au> To: hackers@freebsd.org Subject: Linux emul, QMAGIC libs Message-ID: <199511070702.HAA03407@genesis.atrad.adelaide.edu.au>
next in thread | raw e-mail | index | archive | help
Just wasting my time 8) pottering through the Linux emulator, wondering about
why QMAGIC format libraries don't work.
I find some interesting discrepancies 8(
Linux emulation uses the standard kernel execve, but its own code for shared
libraries :
/*
* Set file/virtual offset based on a.out variant.
*/
switch ((int)(a_out->a_magic & 0xffff)) {
case 0413: /* ZMAGIC */
virtual_offset = 0;
file_offset = 1024;
break;
case 0314: /* QMAGIC */
virtual_offset = 4096;
file_offset = 0;
break;
default:
return ENOEXEC;
}
This conflicts with /sys/kern/imgact_aout.c : (NBPG = 1<<12) - pruned
/*
* Set file/virtual offset based on a.out variant.
*/
switch ((int)(a_out->a_magic & 0xffff)) {
case ZMAGIC:
virtual_offset = 0;
if (a_out->a_text) {
file_offset = NBPG;
} else {
/* Bill's "screwball mode" */
file_offset = 0;
}
break;
case QMAGIC:
virtual_offset = NBPG;
file_offset = 0;
break;
However, if this was all there was to it, QMAGIC would work, but ZMAGIC
wouldn't.
Any ideas? Obviously, the kernel gets it right (most of the time; this
doesn't explain the failure of a QMAGIC ld.so 8), but how linux_misc
manages... I'm puzzled.
--
]] Mike Smith, Software Engineer msmith@atrad.adelaide.edu.au [[
]] Genesis Software genesis@atrad.adelaide.edu.au [[
]] High-speed data acquisition and [[
]] realtime instrument control (ph/fax) +61-8-267-3039 [[
]] My car has "demand start" -Terry Lambert UNIX: live FreeBSD or die! [[
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199511070702.HAA03407>
