<a.out.h>, MINIX style: remove as obsolete
Change-Id: Icc8b7210d60a93ac9cc4610d676dcba270756410
This commit is contained in:
parent
14f89a8efe
commit
da82f9b2e8
22 changed files with 6 additions and 261 deletions
|
@ -54,7 +54,6 @@
|
||||||
#include <minix/fslib.h>
|
#include <minix/fslib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <a.out.h>
|
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
|
|
||||||
#include "exitvalues.h"
|
#include "exitvalues.h"
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <a.out.h>
|
|
||||||
#include <machine/partition.h>
|
#include <machine/partition.h>
|
||||||
|
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
@ -164,7 +163,6 @@ int n_reserved_pathtableentries = 0, n_used_pathtableentries = 0;
|
||||||
int bootmedia = BOOTMEDIA_UNSPECIFIED;
|
int bootmedia = BOOTMEDIA_UNSPECIFIED;
|
||||||
unsigned long bootseg = 0;
|
unsigned long bootseg = 0;
|
||||||
int system_type = 0;
|
int system_type = 0;
|
||||||
int bootimage_is_aout = 0;
|
|
||||||
|
|
||||||
int get_system_type(int fd);
|
int get_system_type(int fd);
|
||||||
|
|
||||||
|
@ -779,7 +777,6 @@ writebootimage(char *bootimage, int bootfd, int fd, int *currentsector,
|
||||||
static unsigned char buf[1024*64], *addr;
|
static unsigned char buf[1024*64], *addr;
|
||||||
ssize_t written = 0, rest;
|
ssize_t written = 0, rest;
|
||||||
int virtuals, rem;
|
int virtuals, rem;
|
||||||
struct exec hdr;
|
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
struct bap {
|
struct bap {
|
||||||
off_t sector;
|
off_t sector;
|
||||||
|
@ -794,26 +791,7 @@ writebootimage(char *bootimage, int bootfd, int fd, int *currentsector,
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bootimage_is_aout) {
|
rem = sb.st_size;
|
||||||
Read(bootfd, &hdr, A_MINHDR);
|
|
||||||
|
|
||||||
if(hdr.a_magic[0] != A_MAGIC0) {
|
|
||||||
fprintf(stderr, "bad magic in a.out of boot image.\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(hdr.a_hdrlen > sizeof(hdr)) {
|
|
||||||
fprintf(stderr, "surprisingly large header in boot image.\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* read rest of a.out header. */
|
|
||||||
Read(bootfd, (char *) &hdr + A_MINHDR, hdr.a_hdrlen - A_MINHDR);
|
|
||||||
|
|
||||||
/* copy text+data */
|
|
||||||
rem = hdr.a_text + hdr.a_data;
|
|
||||||
} else
|
|
||||||
rem = sb.st_size;
|
|
||||||
|
|
||||||
while(rem > 0) {
|
while(rem > 0) {
|
||||||
int want;
|
int want;
|
||||||
|
@ -821,7 +799,7 @@ writebootimage(char *bootimage, int bootfd, int fd, int *currentsector,
|
||||||
Read(bootfd, buf, want);
|
Read(bootfd, buf, want);
|
||||||
if (written == 0) {
|
if (written == 0) {
|
||||||
/* check some properties at beginning. */
|
/* check some properties at beginning. */
|
||||||
if (!bootimage_is_aout && buf[0] == 1 && buf[1] == 3) {
|
if (buf[0] == 1 && buf[1] == 3) {
|
||||||
fprintf(stderr, "boot image %s is an a.out executable\n",
|
fprintf(stderr, "boot image %s is an a.out executable\n",
|
||||||
bootimage);
|
bootimage);
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@ -981,9 +959,6 @@ main(int argc, char *argv[])
|
||||||
case 'R':
|
case 'R':
|
||||||
remove_after = 1;
|
remove_after = 1;
|
||||||
break;
|
break;
|
||||||
case 'b':
|
|
||||||
bootimage_is_aout= 1;
|
|
||||||
/*FALLTHROUGH*/
|
|
||||||
case 'B':
|
case 'B':
|
||||||
bootimage = optarg;
|
bootimage = optarg;
|
||||||
if((bootfd = open(bootimage, O_RDONLY)) < 0) {
|
if((bootfd = open(bootimage, O_RDONLY)) < 0) {
|
||||||
|
|
|
@ -581,9 +581,9 @@
|
||||||
./usr/include/bzlib.h minix-sys
|
./usr/include/bzlib.h minix-sys
|
||||||
./usr/include/cdbr.h minix-sys
|
./usr/include/cdbr.h minix-sys
|
||||||
./usr/include/cdbw.h minix-sys
|
./usr/include/cdbw.h minix-sys
|
||||||
./usr/include/compat minix-sys
|
./usr/include/compat/a.out.h minix-sys obsolete
|
||||||
./usr/include/compat/a.out.h minix-sys
|
|
||||||
./usr/include/compat/machine minix-sys
|
./usr/include/compat/machine minix-sys
|
||||||
|
./usr/include/compat minix-sys
|
||||||
./usr/include/complex.h minix-sys
|
./usr/include/complex.h minix-sys
|
||||||
./usr/include/configfile.h minix-sys
|
./usr/include/configfile.h minix-sys
|
||||||
./usr/include/cpio.h minix-sys
|
./usr/include/cpio.h minix-sys
|
||||||
|
|
|
@ -59,10 +59,7 @@
|
||||||
|
|
||||||
#ifndef _AOUT_H_
|
#ifndef _AOUT_H_
|
||||||
#define _AOUT_H_
|
#define _AOUT_H_
|
||||||
|
#ifndef __minix
|
||||||
#ifdef __minix
|
|
||||||
#include <compat/a.out.h>
|
|
||||||
#else /* !__minix */
|
|
||||||
|
|
||||||
#include <sys/exec_aout.h>
|
#include <sys/exec_aout.h>
|
||||||
|
|
||||||
|
|
|
@ -1,20 +1,8 @@
|
||||||
|
|
||||||
#include "kernel/kernel.h"
|
#include "kernel/kernel.h"
|
||||||
#include <minix/minlib.h>
|
|
||||||
#include <minix/const.h>
|
|
||||||
#include <minix/cpufeature.h>
|
|
||||||
#include <minix/type.h>
|
|
||||||
#include <minix/com.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/param.h>
|
|
||||||
#include <libexec.h>
|
|
||||||
#include "string.h"
|
|
||||||
#include "arch_proto.h"
|
|
||||||
#include "libexec.h"
|
|
||||||
#include "direct_utils.h"
|
#include "direct_utils.h"
|
||||||
#include "serial.h"
|
#include "serial.h"
|
||||||
#include "glo.h"
|
#include "glo.h"
|
||||||
#include <machine/multiboot.h>
|
|
||||||
|
|
||||||
void direct_cls(void)
|
void direct_cls(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -2,14 +2,12 @@
|
||||||
#include <minix/cpufeature.h>
|
#include <minix/cpufeature.h>
|
||||||
|
|
||||||
#include <minix/type.h>
|
#include <minix/type.h>
|
||||||
#include <libexec.h>
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include "kernel/kernel.h"
|
#include "kernel/kernel.h"
|
||||||
#include "arch_proto.h"
|
#include "arch_proto.h"
|
||||||
#include <machine/cpu.h>
|
#include <machine/cpu.h>
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <libexec.h>
|
|
||||||
#include <minix/type.h>
|
#include <minix/type.h>
|
||||||
|
|
||||||
/* These are set/computed in kernel.lds. */
|
/* These are set/computed in kernel.lds. */
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
#include <minix/reboot.h>
|
#include <minix/reboot.h>
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
#include "arch_proto.h"
|
#include "arch_proto.h"
|
||||||
#include "libexec.h"
|
|
||||||
#include "direct_utils.h"
|
#include "direct_utils.h"
|
||||||
#include "serial.h"
|
#include "serial.h"
|
||||||
#include "glo.h"
|
#include "glo.h"
|
||||||
|
|
|
@ -20,7 +20,6 @@
|
||||||
#include "arch_proto.h"
|
#include "arch_proto.h"
|
||||||
#include "serial.h"
|
#include "serial.h"
|
||||||
#include "oxpcie.h"
|
#include "oxpcie.h"
|
||||||
#include "direct_utils.h"
|
|
||||||
#include <machine/multiboot.h>
|
#include <machine/multiboot.h>
|
||||||
|
|
||||||
#include "glo.h"
|
#include "glo.h"
|
||||||
|
|
|
@ -8,10 +8,8 @@
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <machine/partition.h>
|
#include <machine/partition.h>
|
||||||
#include <libexec.h>
|
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
#include "arch_proto.h"
|
#include "arch_proto.h"
|
||||||
#include "libexec.h"
|
|
||||||
#include "direct_utils.h"
|
#include "direct_utils.h"
|
||||||
#include "serial.h"
|
#include "serial.h"
|
||||||
#include "glo.h"
|
#include "glo.h"
|
||||||
|
|
|
@ -3,11 +3,9 @@
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include "kernel/kernel.h"
|
#include "kernel/kernel.h"
|
||||||
#include <libexec.h>
|
|
||||||
#include "arch_proto.h"
|
#include "arch_proto.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <libexec.h>
|
|
||||||
|
|
||||||
/* These are set/computed in kernel.lds. */
|
/* These are set/computed in kernel.lds. */
|
||||||
extern char _kern_vir_base, _kern_phys_base, _kern_size;
|
extern char _kern_vir_base, _kern_phys_base, _kern_size;
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
#include <machine/partition.h>
|
#include <machine/partition.h>
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
#include "arch_proto.h"
|
#include "arch_proto.h"
|
||||||
#include "libexec.h"
|
|
||||||
#include "direct_utils.h"
|
#include "direct_utils.h"
|
||||||
#include "serial.h"
|
#include "serial.h"
|
||||||
#include "glo.h"
|
#include "glo.h"
|
||||||
|
|
|
@ -12,8 +12,6 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <libexec.h>
|
|
||||||
#include <a.out.h>
|
|
||||||
#include <minix/com.h>
|
#include <minix/com.h>
|
||||||
#include <minix/endpoint.h>
|
#include <minix/endpoint.h>
|
||||||
#include <machine/vmparam.h>
|
#include <machine/vmparam.h>
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
|
|
||||||
#include <minix/safecopies.h>
|
#include <minix/safecopies.h>
|
||||||
#include <machine/archtypes.h>
|
#include <machine/archtypes.h>
|
||||||
#include <a.out.h>
|
|
||||||
|
|
||||||
/* Struct declarations. */
|
/* Struct declarations. */
|
||||||
struct proc;
|
struct proc;
|
||||||
|
|
|
@ -3,6 +3,5 @@
|
||||||
INCSDIR= /usr/include
|
INCSDIR= /usr/include
|
||||||
|
|
||||||
INCS+= configfile.h
|
INCS+= configfile.h
|
||||||
INCS+= compat/a.out.h
|
|
||||||
INCS+= net/gen/netdb.h net/gen/resolv.h net/gen/nameser.h
|
INCS+= net/gen/netdb.h net/gen/resolv.h net/gen/nameser.h
|
||||||
INCS+= sys/jmp_buf.h ${MACHINE}/compat_jmp_buf.h
|
INCS+= sys/jmp_buf.h ${MACHINE}/compat_jmp_buf.h
|
||||||
|
|
|
@ -1,113 +0,0 @@
|
||||||
/* The <a.out> header file describes the format of executable files. */
|
|
||||||
|
|
||||||
#ifndef _AOUT_H
|
|
||||||
#define _AOUT_H
|
|
||||||
|
|
||||||
struct exec { /* a.out header */
|
|
||||||
unsigned char a_magic[2]; /* magic number */
|
|
||||||
unsigned char a_flags; /* flags, see below */
|
|
||||||
unsigned char a_cpu; /* cpu id */
|
|
||||||
unsigned char a_hdrlen; /* length of header */
|
|
||||||
unsigned char a_unused; /* reserved for future use */
|
|
||||||
unsigned short a_version; /* version stamp (not used at present) */
|
|
||||||
long a_text; /* size of text segement in bytes */
|
|
||||||
long a_data; /* size of data segment in bytes */
|
|
||||||
long a_bss; /* size of bss segment in bytes */
|
|
||||||
long a_entry; /* entry point */
|
|
||||||
long a_total; /* total memory allocated */
|
|
||||||
long a_syms; /* size of symbol table */
|
|
||||||
|
|
||||||
/* SHORT FORM ENDS HERE */
|
|
||||||
long a_trsize; /* text relocation size */
|
|
||||||
long a_drsize; /* data relocation size */
|
|
||||||
long a_tbase; /* text relocation base */
|
|
||||||
long a_dbase; /* data relocation base */
|
|
||||||
};
|
|
||||||
|
|
||||||
#define A_MAGIC0 (unsigned char) 0x01
|
|
||||||
#define A_MAGIC1 (unsigned char) 0x03
|
|
||||||
#define BADMAG(X) ((X).a_magic[0] != A_MAGIC0 ||(X).a_magic[1] != A_MAGIC1)
|
|
||||||
|
|
||||||
/* CPU Id of TARGET machine (byte order coded in low order two bits) */
|
|
||||||
#define A_NONE 0x00 /* unknown */
|
|
||||||
#define A_I8086 0x04 /* intel i8086/8088 */
|
|
||||||
#define A_M68K 0x0B /* motorola m68000 */
|
|
||||||
#define A_NS16K 0x0C /* national semiconductor 16032 */
|
|
||||||
#define A_I80386 0x10 /* intel i80386 */
|
|
||||||
#define A_SPARC 0x17 /* Sun SPARC */
|
|
||||||
|
|
||||||
#define A_BLR(cputype) ((cputype&0x01)!=0) /* TRUE if bytes left-to-right */
|
|
||||||
#define A_WLR(cputype) ((cputype&0x02)!=0) /* TRUE if words left-to-right */
|
|
||||||
|
|
||||||
/* Flags. */
|
|
||||||
#define A_UZP 0x01 /* unmapped zero page (pages) */
|
|
||||||
#define A_PAL 0x02 /* page aligned executable */
|
|
||||||
#define A_NSYM 0x04 /* new style symbol table */
|
|
||||||
#define A_IMG 0x08 /* image instead of executable (e.g. root FS) */
|
|
||||||
#define A_EXEC 0x10 /* executable */
|
|
||||||
#define A_SEP 0x20 /* separate I/D */
|
|
||||||
#define A_PURE 0x40 /* pure text */ /* not used */
|
|
||||||
#define A_TOVLY 0x80 /* text overlay */ /* not used */
|
|
||||||
|
|
||||||
/* Offsets of various things. */
|
|
||||||
#define A_MINHDR 32
|
|
||||||
#define A_TEXTPOS(X) ((long)(X).a_hdrlen)
|
|
||||||
#define A_DATAPOS(X) (A_TEXTPOS(X) + (X).a_text)
|
|
||||||
#define A_HASRELS(X) ((X).a_hdrlen > (unsigned char) A_MINHDR)
|
|
||||||
#define A_HASEXT(X) ((X).a_hdrlen > (unsigned char) (A_MINHDR + 8))
|
|
||||||
#define A_HASLNS(X) ((X).a_hdrlen > (unsigned char) (A_MINHDR + 16))
|
|
||||||
#define A_HASTOFF(X) ((X).a_hdrlen > (unsigned char) (A_MINHDR + 24))
|
|
||||||
#define A_TRELPOS(X) (A_DATAPOS(X) + (X).a_data)
|
|
||||||
#define A_DRELPOS(X) (A_TRELPOS(X) + (X).a_trsize)
|
|
||||||
#define A_SYMPOS(X) (A_TRELPOS(X) + (A_HASRELS(X) ? \
|
|
||||||
((X).a_trsize + (X).a_drsize) : 0))
|
|
||||||
|
|
||||||
struct reloc {
|
|
||||||
long r_vaddr; /* virtual address of reference */
|
|
||||||
unsigned short r_symndx; /* internal segnum or extern symbol num */
|
|
||||||
unsigned short r_type; /* relocation type */
|
|
||||||
};
|
|
||||||
|
|
||||||
/* r_type values: */
|
|
||||||
#define R_ABBS 0
|
|
||||||
#define R_RELLBYTE 2
|
|
||||||
#define R_PCRBYTE 3
|
|
||||||
#define R_RELWORD 4
|
|
||||||
#define R_PCRWORD 5
|
|
||||||
#define R_RELLONG 6
|
|
||||||
#define R_PCRLONG 7
|
|
||||||
#define R_REL3BYTE 8
|
|
||||||
#define R_KBRANCHE 9
|
|
||||||
|
|
||||||
/* r_symndx for internal segments */
|
|
||||||
#define S_ABS ((unsigned short)-1)
|
|
||||||
#define S_TEXT ((unsigned short)-2)
|
|
||||||
#define S_DATA ((unsigned short)-3)
|
|
||||||
#define S_BSS ((unsigned short)-4)
|
|
||||||
|
|
||||||
struct nlist { /* symbol table entry */
|
|
||||||
char n_name[8]; /* symbol name */
|
|
||||||
long n_value; /* value */
|
|
||||||
unsigned char n_sclass; /* storage class */
|
|
||||||
unsigned char n_numaux; /* number of auxiliary entries (not used) */
|
|
||||||
unsigned short n_type; /* language base and derived type (not used) */
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Low bits of storage class (section). */
|
|
||||||
#define N_SECT 07 /* section mask */
|
|
||||||
#define N_UNDF 00 /* undefined */
|
|
||||||
#define N_ABS 01 /* absolute */
|
|
||||||
#define N_TEXT 02 /* text */
|
|
||||||
#define N_DATA 03 /* data */
|
|
||||||
#define N_BSS 04 /* bss */
|
|
||||||
#define N_COMM 05 /* (common) */
|
|
||||||
|
|
||||||
/* High bits of storage class. */
|
|
||||||
#define N_CLASS 0370 /* storage class mask */
|
|
||||||
#define C_NULL
|
|
||||||
#define C_EXT 0020 /* external symbol */
|
|
||||||
#define C_STAT 0030 /* static */
|
|
||||||
|
|
||||||
int nlist(char *_file, struct nlist *_nl);
|
|
||||||
|
|
||||||
#endif /* _AOUT_H */
|
|
|
@ -5,7 +5,7 @@ NOGCCERROR:= yes
|
||||||
|
|
||||||
LIB= exec
|
LIB= exec
|
||||||
INCS= libexec.h
|
INCS= libexec.h
|
||||||
SRCS= exec_aout.c exec_elf.c exec_general.c
|
SRCS= exec_elf.c exec_general.c
|
||||||
|
|
||||||
INCSDIR= /usr/include
|
INCSDIR= /usr/include
|
||||||
|
|
||||||
|
|
|
@ -1,83 +0,0 @@
|
||||||
#define _SYSTEM 1
|
|
||||||
|
|
||||||
#include <minix/type.h>
|
|
||||||
#include <minix/const.h>
|
|
||||||
#include <a.out.h>
|
|
||||||
#include <assert.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <libexec.h>
|
|
||||||
|
|
||||||
int read_header_aout(
|
|
||||||
const char *exec_hdr, /* executable header */
|
|
||||||
size_t exec_len, /* executable file size */
|
|
||||||
int *sep_id, /* true iff sep I&D */
|
|
||||||
vir_bytes *text_bytes, /* place to return text size */
|
|
||||||
vir_bytes *data_bytes, /* place to return initialized data size */
|
|
||||||
vir_bytes *bss_bytes, /* place to return bss size */
|
|
||||||
phys_bytes *tot_bytes, /* place to return total size */
|
|
||||||
vir_bytes *pc, /* program entry point (initial PC) */
|
|
||||||
int *hdrlenp
|
|
||||||
)
|
|
||||||
{
|
|
||||||
/* Read the header and extract the text, data, bss and total sizes from it. */
|
|
||||||
struct exec *hdr; /* a.out header is read in here */
|
|
||||||
|
|
||||||
/* Read the header and check the magic number. The standard MINIX header
|
|
||||||
* is defined in <a.out.h>. It consists of 8 chars followed by 6 longs.
|
|
||||||
* Then come 4 more longs that are not used here.
|
|
||||||
* Byte 0: magic number 0x01
|
|
||||||
* Byte 1: magic number 0x03
|
|
||||||
* Byte 2: normal = 0x10 (not checked, 0 is OK), separate I/D = 0x20
|
|
||||||
* Byte 3: CPU type, Intel 16 bit = 0x04, Intel 32 bit = 0x10,
|
|
||||||
* Motorola = 0x0B, Sun SPARC = 0x17
|
|
||||||
* Byte 4: Header length = 0x20
|
|
||||||
* Bytes 5-7 are not used.
|
|
||||||
*
|
|
||||||
* Now come the 6 longs
|
|
||||||
* Bytes 8-11: size of text segments in bytes
|
|
||||||
* Bytes 12-15: size of initialized data segment in bytes
|
|
||||||
* Bytes 16-19: size of bss in bytes
|
|
||||||
* Bytes 20-23: program entry point
|
|
||||||
* Bytes 24-27: total memory allocated to program (text, data + stack)
|
|
||||||
* Bytes 28-31: size of symbol table in bytes
|
|
||||||
* The longs are represented in a machine dependent order,
|
|
||||||
* little-endian on the 8088, big-endian on the 68000.
|
|
||||||
* The header is followed directly by the text and data segments, and the
|
|
||||||
* symbol table (if any). The sizes are given in the header. Only the
|
|
||||||
* text and data segments are copied into memory by exec. The header is
|
|
||||||
* used here only. The symbol table is for the benefit of a debugger and
|
|
||||||
* is ignored here.
|
|
||||||
*/
|
|
||||||
|
|
||||||
assert(exec_hdr != NULL);
|
|
||||||
|
|
||||||
hdr = (struct exec *)exec_hdr;
|
|
||||||
if (exec_len < A_MINHDR) return(ENOEXEC);
|
|
||||||
|
|
||||||
/* Check magic number, cpu type, and flags. */
|
|
||||||
if (BADMAG(*hdr)) return(ENOEXEC);
|
|
||||||
#if defined(__i386__)
|
|
||||||
if (hdr->a_cpu != A_I80386) return(ENOEXEC);
|
|
||||||
#endif
|
|
||||||
if ((hdr->a_flags & ~(A_NSYM | A_EXEC | A_SEP)) != 0) return(ENOEXEC);
|
|
||||||
|
|
||||||
*sep_id = !!(hdr->a_flags & A_SEP); /* separate I & D or not */
|
|
||||||
|
|
||||||
/* Get text and data sizes. */
|
|
||||||
*text_bytes = (vir_bytes) hdr->a_text; /* text size in bytes */
|
|
||||||
*data_bytes = (vir_bytes) hdr->a_data; /* data size in bytes */
|
|
||||||
*bss_bytes = (vir_bytes) hdr->a_bss; /* bss size in bytes */
|
|
||||||
*tot_bytes = hdr->a_total; /* total bytes to allocate for prog */
|
|
||||||
if (*tot_bytes == 0) return(ENOEXEC);
|
|
||||||
|
|
||||||
if (!*sep_id) {
|
|
||||||
/* If I & D space is not separated, it is all considered data. Text=0*/
|
|
||||||
*data_bytes += *text_bytes;
|
|
||||||
*text_bytes = 0;
|
|
||||||
}
|
|
||||||
*pc = hdr->a_entry; /* initial address to start execution */
|
|
||||||
*hdrlenp = hdr->a_hdrlen & BYTE; /* header length */
|
|
||||||
|
|
||||||
return(OK);
|
|
||||||
}
|
|
|
@ -23,7 +23,6 @@
|
||||||
#include <minix/endpoint.h>
|
#include <minix/endpoint.h>
|
||||||
#include <minix/com.h>
|
#include <minix/com.h>
|
||||||
#include <minix/vm.h>
|
#include <minix/vm.h>
|
||||||
#include <a.out.h>
|
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <libexec.h>
|
#include <libexec.h>
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <lib.h>
|
#include <lib.h>
|
||||||
#include <timers.h>
|
#include <timers.h>
|
||||||
#include <a.out.h>
|
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
|
|
||||||
#include <minix/callnr.h>
|
#include <minix/callnr.h>
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
#include "inc.h"
|
#include "inc.h"
|
||||||
#include <a.out.h>
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <libexec.h>
|
#include <libexec.h>
|
||||||
#include <machine/vmparam.h>
|
#include <machine/vmparam.h>
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
#include <minix/endpoint.h>
|
#include <minix/endpoint.h>
|
||||||
#include <minix/com.h>
|
#include <minix/com.h>
|
||||||
#include <minix/u64.h>
|
#include <minix/u64.h>
|
||||||
#include <a.out.h>
|
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
#include <minix/type.h>
|
#include <minix/type.h>
|
||||||
#include <minix/param.h>
|
#include <minix/param.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <a.out.h>
|
|
||||||
|
|
||||||
#include "vm.h"
|
#include "vm.h"
|
||||||
#include "vmproc.h"
|
#include "vmproc.h"
|
||||||
|
|
Loading…
Reference in a new issue