7
#define MEM_SAVE_LOCALS \
8
struct filehdr fileheader;\
10
struct scnhdr sectionheader;\
14
#define COPY_TO_SAVE \
23
do{ fread(&fileheader, sizeof(fileheader), 1, original); \
24
fread(&header, sizeof(header), 1, original); \
25
data_begin = (char *)header.data_start; \
26
data_end = core_end; \
27
original_data = header.a_data; \
28
header.a_data = data_end - data_begin; \
29
diff = header.a_data - original_data; \
30
header.a_bss = sbrk(0) - core_end; \
31
fileheader.f_symptr += diff; \
32
fwrite(&fileheader, sizeof(fileheader), 1, save);\
33
fwrite(&header, sizeof(header), 1, save); \
34
fread(§ionheader, sizeof(sectionheader), 1, original); \
35
if (sectionheader.s_lnnoptr) \
36
sectionheader.s_lnnoptr += diff; \
37
fwrite(§ionheader, sizeof(sectionheader), 1, save); \
38
fread(§ionheader, sizeof(sectionheader), 1, original); \
39
sectionheader.s_size += diff; \
40
if (sectionheader.s_lnnoptr) \
41
sectionheader.s_lnnoptr += diff; \
42
fwrite(§ionheader, sizeof(sectionheader), 1, save); \
43
fread(§ionheader, sizeof(sectionheader), 1, original); \
44
sectionheader.s_paddr += diff; \
45
sectionheader.s_vaddr += diff; \
46
sectionheader.s_size = header.a_bss; \
47
if (sectionheader.s_lnnoptr) \
48
sectionheader.s_lnnoptr += diff; \
49
fwrite(§ionheader, sizeof(sectionheader), 1, save); \
50
for (n = 4; n <= fileheader.f_nscns; n++) { \
51
fread(§ionheader, sizeof(sectionheader), 1, original); \
52
if (sectionheader.s_scnptr) \
53
sectionheader.s_scnptr += diff; \
54
if (sectionheader.s_lnnoptr) \
55
sectionheader.s_lnnoptr += diff; \
56
fwrite(§ionheader, sizeof(sectionheader), 1, save); \
59
#define FILECPY_HEADER filecpy(save, original, header.a_text)
67
/* Include <fcntl.h> rather than <sys/file.h> */
71
#define NUMBER_OPEN_FILES _NFILE
73
#define SET_REAL_MAXPAGE real_maxpage = MAXPAGE
77
if (i = ((int)heap_end & (PAGESIZE - 1))) \
79
heap_end = core_end = sbrk(0);
85
/* need to define getwd and friends in unixfsys.c
86
Basically as would need to in ATT*/
90
/* if there is no input there return false */
91
#define LISTEN_FOR_INPUT(fp) \
92
if((fp)->_cnt <=0 && (c=0,ioctl((fp)->_file, FIONREAD, &c),c<=0)) \
95
/* have sys/ioctl.h */