This is mac2.h in view mode; [Download] [Up]
#define MAC2 #define AV #define UNIX #define SFASL #if defined(IN_FILE) || defined(IN_UNIXFASL) || defined(IN_UNIXSAVE) || defined(IN_UNIXTIME) || defined(IN_SFASL) || defined(IN_RSYM) #define ATT #else #define BSD #endif #ifdef IN_MAIN #undef BSD #include <sys/time.h> #include <sys/resource.h> /* note that rl does not need to be declared if we do not have RLIMIT_STACK defined */ #undef RLIMIT_STACK #endif #ifdef IN_SFASL #include <stdio.h> #include <filehdr.h> #include <aouthdr.h> #include <scnhdr.h> #include <reloc.h> #include <syms.h> #include <storclass.h> #include <ldfcn.h> #endif #define ADDITIONAL_FEATURES \ ADD_FEATURE("SUN"); \ ADD_FEATURE("MAC2"); \ ADD_FEATURE("MC68020"); \ ADD_FEATURE("BSD") #define MC68020 #define IEEEFLOAT #define MAXPAGE 16384 #define VSSIZE 8152 #define ISCOFF(x) (x == MC68MAGIC) #define MEM_SAVE_LOCALS \ struct filehdr fileheader;\ struct exec header;\ struct scnhdr sectionheader;\ int diff #define COPY_TO_SAVE \ do{for (;;) { \ n = getc(original); \ if (feof(original)) \ break; \ putc(n, save); \ }}while (0) #define READ_HEADER \ do{ fread(&fileheader, sizeof(fileheader), 1, original); \ fread(&header, sizeof(header), 1, original); \ data_begin = (char *)header.data_start; \ data_end = core_end; \ original_data = header.a_data; \ header.a_data = data_end - data_begin; \ diff = header.a_data - original_data; \ header.a_bss = sbrk(0) - core_end; \ fileheader.f_symptr += diff; \ fwrite(&fileheader, sizeof(fileheader), 1, save);\ fwrite(&header, sizeof(header), 1, save); \ fread(§ionheader, sizeof(sectionheader), 1, original); \ if (sectionheader.s_lnnoptr) \ sectionheader.s_lnnoptr += diff; \ fwrite(§ionheader, sizeof(sectionheader), 1, save); \ fread(§ionheader, sizeof(sectionheader), 1, original); \ sectionheader.s_size += diff; \ if (sectionheader.s_lnnoptr) \ sectionheader.s_lnnoptr += diff; \ fwrite(§ionheader, sizeof(sectionheader), 1, save); \ fread(§ionheader, sizeof(sectionheader), 1, original); \ sectionheader.s_paddr += diff; \ sectionheader.s_vaddr += diff; \ sectionheader.s_size = header.a_bss; \ if (sectionheader.s_lnnoptr) \ sectionheader.s_lnnoptr += diff; \ fwrite(§ionheader, sizeof(sectionheader), 1, save); \ for (n = 4; n <= fileheader.f_nscns; n++) { \ fread(§ionheader, sizeof(sectionheader), 1, original); \ if (sectionheader.s_scnptr) \ sectionheader.s_scnptr += diff; \ if (sectionheader.s_lnnoptr) \ sectionheader.s_lnnoptr += diff; \ fwrite(§ionheader, sizeof(sectionheader), 1, save); \ }}while(0) #define FILECPY_HEADER filecpy(save, original, header.a_text) #define exec aouthdr #define a_text tsize #define a_data dsize #define a_bss bsize /* Include <fcntl.h> rather than <sys/file.h> */ #define HAVE_FCNTL #define NUMBER_OPEN_FILES _NFILE #define SET_REAL_MAXPAGE real_maxpage = MAXPAGE ; set42sig(); #define ROUND_UP_SBRK(x) \ do {int i; \ if (i = ((int)x & (PAGESIZE - 1))) \ x=sbrk(PAGESIZE - i); } while(0); #define FIX_RANDOM_SBRK \ do {char *x=sbrk(0); \ if (core_end != x) \ { ROUND_UP_SBRK(x); x=sbrk(0);\ while (core_end < x) \ { type_map[page(core_end)]= t_other; \ core_end = core_end + PAGESIZE;} \ if (core_end !=x) error("Someone allocated my memory");}} while (0) #define INIT_ALLOC \ heap_end = sbrk(0); ROUND_UP_SBRK(heap_end);\ heap_end = core_end = sbrk(0); #define IF_ALLOCATE_ERR \ FIX_RANDOM_SBRK; \ if (core_end != sbrk(PAGESIZE*(n - m))) #define SYM_EXTERNAL_P(sym) ((sym)->n_type & N_EXT) #define cs_check(x) /* need to define getwd and friends in unixfsys.c Basically as would need to in ATT*/ #define LD_COMMAND(command,main,start,input,ldarg,output) \ sprintf(command, "ld -d -N -x -A %s -T %x %s %s -o %s", \ main,start,input,ldarg,output) #define SYM_UNDEF_P(sym) ((N_SECTION(sym)) == N_UNDEF) #define NUM_AUX(sym) 0 /* the section like N_ABS,N_TEXT,.. */ #undef HAVE_AOUT #undef WANT_VALLOC #undef NEED_GETWD /* We have socket utilities, and can fork off a process and get a stream connection with it */ #define RUN_PROCESS #define HAVE_XDR /* if there is no input there return false */ #define LISTEN_FOR_INPUT(fp) \ if((fp)->_cnt <=0 && (c=0,ioctl((fp)->_file, FIONREAD, &c),c<=0)) \ return 0 /* have sys/ioctl.h */ #define HAVE_IOCTL #define HAVE_SIGVEC #define DATA_BEGIN (char *)N_DATADDR(header) #define RELOC_FILE "rel_mac2.c" /* Begin for cmpinclude */ #define HAVE_ALLOCA /* End for cmpinclude */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.