* - use a_type == 0 as "virgin area" flag: set == 1 if -b
*/
+#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#include <alloc.h>
#include "aslink.h"
+/* yuck - but including unistd.h causes problems on Cygwin by redefining
+ * Addr_T.
+ */
+extern int unlink(const char *);
/*)Module lkmain.c
*
* FILE * afile(fn,ft,wf)
* VOID bassav()
* VOID gblsav()
- * VOID link()
+ * VOID link_main()
* VOID lkexit()
* VOID main(argc,argv)
* VOID map()
* int fprintf() c_library
* int getline() lklex.c
* VOID library() lklibr.c
- * VOID link() lkmain.c
+ * VOID link_main() lkmain.c
* VOID lkexit() lkmain.c
* VOID lnkarea() lkarea.c
* VOID map() lkmain.c
if ((ip[0] == ';') && (ip[1] == '!') && jfp) {
fprintf( jfp, "%s\n", &ip[2] );
}
- link();
+ link_main();
}
if (pass == 0) {
/*
exit(i);
}
-/*)Function link()
+/*)Function link_main()
*
- * The function link() evaluates the directives for each line of
+ * The function link_main() evaluates the directives for each line of
* text read from the .rel file(s). The valid directives processed
* are:
* X, D, Q, H, M, A, S, T, R, and P.
*/
VOID
-link()
+link_main()
{
register int c;
sdp.s_area = NULL;
sdp.s_areax = NULL;
sdp.s_addr = 0;
+ // jwk lastExtendedAddress = -1;
break;
case 'M':
case 'U':
uflag = 1;
break;
-
+ case 'r':
+ case 'R':
+ rflag = 1;
+ break;
case 'x':
case 'X':
xflag = 0;
* int lkerr error flag
*
* functions called:
- * addr_t expr() lkeval.c
+ * Addr_T expr() lkeval.c
* int fprintf() c_library
* VOID getid() lklex.c
* char getnb() lklex.c
* int lkerr error flag
*
* functions called:
- * addr_t expr() lkeval.c
+ * Addr_T expr() lkeval.c
* int fprintf() c_library
* VOID getid() lklex.c
* char getnb() lklex.c
register char *p1, *p2, *p3;
register int c;
FILE *fp;
- char fb[FILSPC];
+ char fb[FILENAME_MAX];
char *omode = (wf ? (wf == 2 ? "a" : "w") : "r");
p1 = fn;
p2 = fb;
p3 = ft;
while ((c = *p1++) != 0 && c != FSEPX) {
- if (p2 < &fb[FILSPC-4])
+ if (p2 < &fb[FILENAME_MAX-4])
*p2++ = c;
}
*p2++ = FSEPX;
}
}
while ((c = *p3++) != 0) {
- if (p2 < &fb[FILSPC-1])
+ if (p2 < &fb[FILENAME_MAX-1])
*p2++ = c;
}
*p2++ = 0;
* functions called:
* char getnb() lklex.c
* VOID unget() lklex.c
- * addr_t expr() lkeval.c
+ * Addr_T expr() lkeval.c
*
* side effects:
* The iram_size may be modified.