| Since COFF-encapsulation is obsolete, this may not be needed anymore. |
| |
| Return-Path: <jkp@sauna.hut.fi> |
| Date: Mon, 10 Apr 89 10:13:45 +0300 |
| From: Jyrki Kuoppala <jkp@sauna.hut.fi> |
| Sender: jkp@sauna.hut.fi |
| To: info-gcc@prep.ai.mit.edu |
| Subject: Kernel fix needed for Altos 3068 to get coff-encapsulation working right |
| Organization: Helsinki University of Technology, Finland. |
| |
| Here's a description how to fix a kernel bug in Altos 3068 and get |
| gcc-compiled programs working. |
| |
| Author: Jyrki Kuoppala (jkp@cs.hut.fi) |
| Last modified: Mon Apr 10 09:28:40 1989 |
| |
| There's a bug in the Altos 3068 kernel that causes gcc-compiled |
| programs to fail in certain situations when the machine has a heavy |
| load and also in some other situations. The bug exists at least in |
| SVR 2.2 1.0gT1 and SVR 2.2 1.0e. |
| |
| If you have source code to your system, apply the following change to |
| os/exec.c (function gethead): |
| |
| Change the lines containing |
| |
| u.u_exdata.ux_tstart = sizeof(struct naout) + |
| sizeof(struct filhd) + (ep->ef.nscns * sizeof(struct scnhdr)); |
| |
| to |
| |
| u.u_exdata.ux_tstart = u.u_exdata.ux_txtorg; |
| |
| If you only have binary, use sdb to find out the address of the |
| previous lines (on our system it's gethead+0x140) and use your |
| favourite binary editor to change the bytes '3036 0162 fffc 0002 0280 |
| 0000' to '23f9 01fb f4ca 01fb f4c2 6016'. This may or may not work in |
| your case, depending on the version of the operating system and the |
| phase of the moon. |
| |
| Here's what is just before gethead+0x140 to ease finding out the right place: |
| |
| 0x9224 (gethead+0x122): 23f9 01fb f4ca 01fb f4ce mov.l &0x1fbf4ca.L,&0 |
| x1fbf4ce.L [] |
| 0x922e (gethead+0x12c): 23f9 01fb f4c6 01fb f4ca mov.l &0x1fbf4c6.L,&0 |
| x1fbf4ca.L [] |
| 0x9238 (gethead+0x136): 23f9 01fb f4c2 01fb f4c6 mov.l &0x1fbf4c2.L,&0 |
| x1fbf4c6.L [] |
| |
| Good luck ! |
| |
| //Jyrki |
| |
| jkp@cs.hut.fi |
| |