# HG changeset patch # User Richard M. Stallman <rms@gnu.org> # Date 804390297 0 # Node ID 0c728a1b2bed1f9ca4e91303aa8b5f795e50ebe2 # Parent 818d7bcf63b05e4f9fd7289415db8b7a345a4530 [MACH]: Include a.out.h. [MACH] (STYP_INIT, _RDATA, STYP_RDATA, _SDATA, STYP_SDATA): Defined. [MACH] (_SBSS, STYP_SBSS, HDRR, pHDRR): New definitions. (unexec): Add MACH conditionals. diff -r 818d7bcf63b0 -r 0c728a1b2bed src/unexmips.c --- a/src/unexmips.c Thu Jun 29 01:40:18 1995 +0000 +++ b/src/unexmips.c Thu Jun 29 01:44:57 1995 +0000 @@ -31,11 +31,52 @@ #include <sys/stat.h> #include <stdio.h> #include <varargs.h> + +#ifdef MACH + +#include <a.out.h> + +/* I don't know why this isn't defined. */ +#ifndef STYP_INIT +#define STYP_INIT 0x80000000 +#endif + +/* I don't know why this isn't defined. */ +#ifndef _RDATA +#define _RDATA ".rdata" +#define STYP_RDATA 0x00000100 +#endif + +/* Small ("near") data section. */ +#ifndef _SDATA +#define _SDATA ".sdata" +#define STYP_SDATA 0x00000200 +#endif + +/* Small ("near") bss section. */ +#ifndef _SBSS +#define _SBSS ".sbss" +#define STYP_SBSS 0x00000400 +#endif + +/* We don't seem to have a sym.h or syms.h anywhere, so we'll do it the + hard way. This stinks. */ +typedef struct { + short magic; + short vstamp; + long ilineMax; + struct { long foo, offset; } offsets[11]; +} HDRR, *pHDRR; + +#else /* not MACH */ + #include <filehdr.h> #include <aouthdr.h> #include <scnhdr.h> #include <sym.h> +#endif /* not MACH */ + #if defined (IRIS_4D) || defined (sony) #include "getpagesize.h" #include <fcntl.h> @@ -244,10 +285,14 @@ errno = EEOF; nread = read (old, buffer, BUFSIZE); if (nread < sizeof (HDRR)) fatal_unexec ("reading symbols from %s", a_name); -#define symhdr ((pHDRR)buffer) newsyms = hdr.aout.tsize + hdr.aout.dsize; symrel = newsyms - hdr.fhdr.f_symptr; hdr.fhdr.f_symptr = newsyms; +#define symhdr ((pHDRR)buffer) +#ifdef MACH + for (i = 0; i < 11; i++) + symhdr->offsets[i].offset += symrel; +#else symhdr->cbLineOffset += symrel; symhdr->cbDnOffset += symrel; symhdr->cbPdOffset += symrel; @@ -259,6 +304,7 @@ symhdr->cbFdOffset += symrel; symhdr->cbRfdOffset += symrel; symhdr->cbExtOffset += symrel; +#endif #undef symhdr do {