7 main(int argc, char *argv[])
10 int nout, nproc, status, i, c;
14 memset(debug, 0, sizeof(debug));
17 include[ninclude++] = ".";
21 if(c >= 0 || c < sizeof(debug))
41 print("usage: %ca [-options] file.s\n", thechar);
44 if(argc > 1 && systemtype(Windows)){
45 print("can't assemble multiple files on windows\n");
48 if(argc > 1 && !systemtype(Windows)) {
50 if(p = getenv("NPROC"))
51 nproc = atol(p); /* */
55 while(nout < nproc && argc > 0) {
67 print("%s:\n", *argv);
95 char ofile[100], incfile[20], *p;
99 p = utfrrune(ofile, pathchar());
108 p = utfrrune(outfile, '.');
110 if(p[1] == 's' && p[2] == 0)
112 p = utfrune(outfile, 0);
117 outfile = "/dev/null";
119 p = getenv("INCLUDE");
123 if(systemtype(Plan9)) {
124 sprint(incfile,"/%s/include", thestring);
125 setinclude(strdup(incfile));
129 of = mycreat(outfile, 0664);
131 yyerror("%ca: cannot create %s", thechar, outfile);
134 Binit(&obuf, of, OWRITE);
138 for(i=0; i<nDlist; i++)
149 for(i=0; i<nDlist; i++)
172 "CACR", LTOS, D_CACR,
175 "CAAR", LTOS, D_CAAR,
178 "FPCR", LTOS, D_FPCR,
179 "FPSR", LTOS, D_FPSR,
180 "FPIAR", LTOS, D_FPIAR,
182 "ITT0", LTOS, D_ITT0,
183 "ITT1", LTOS, D_ITT1,
184 "DTT0", LTOS, D_DTT0,
185 "DTT1", LTOS, D_DTT1,
186 "MMUSR", LTOS, D_MMUSR,
220 "ABCD", LTYPE1, AABCD,
221 "ADDB", LTYPE1, AADDB,
222 "ADDL", LTYPE1, AADDL,
223 "ADDW", LTYPE1, AADDW,
224 "ADDXB", LTYPE1, AADDXB,
225 "ADDXL", LTYPE1, AADDXL,
226 "ADDXW", LTYPE1, AADDXW,
227 "ADJSP", LTYPE5, AADJSP,
228 "ANDB", LTYPE1, AANDB,
229 "ANDL", LTYPE1, AANDL,
230 "ANDW", LTYPE1, AANDW,
231 "ASLB", LTYPE1, AASLB,
232 "ASLL", LTYPE1, AASLL,
233 "ASLW", LTYPE1, AASLW,
234 "ASRB", LTYPE1, AASRB,
235 "ASRL", LTYPE1, AASRL,
236 "ASRW", LTYPE1, AASRW,
237 "BCASE", LTYPE7, ABCASE,
239 "BCHG", LTYPE1, ABCHG,
240 "BCLR", LTYPE1, ABCLR,
243 "BFCHG", LTYPEA, ABFCHG,
244 "BFCLR", LTYPEA, ABFCLR,
245 "BFEXTS", LTYPEA, ABFEXTS,
246 "BFEXTU", LTYPEA, ABFEXTU,
247 "BFFFO", LTYPEA, ABFFFO,
248 "BFINS", LTYPEA, ABFINS,
249 "BFSET", LTYPEA, ABFSET,
250 "BFTST", LTYPEA, ABFTST,
254 "BKPT", LTYPE1, ABKPT,
262 "BSET", LTYPE1, ABSET,
264 "BTST", LTYPE1, ABTST,
267 "CALLM", LTYPE1, ACALLM,
268 "CAS2B", LTYPE1, ACAS2B,
269 "CAS2L", LTYPE1, ACAS2L,
270 "CAS2W", LTYPE1, ACAS2W,
271 "CASB", LTYPE1, ACASB,
272 "CASEW", LTYPE2, ACASEW,
273 "CASL", LTYPE1, ACASL,
274 "CASW", LTYPE1, ACASW,
275 "CHK2B", LTYPE1, ACHK2B,
276 "CHK2L", LTYPE1, ACHK2L,
277 "CHK2W", LTYPE1, ACHK2W,
278 "CHKL", LTYPE1, ACHKL,
279 "CHKW", LTYPE1, ACHKW,
280 "CLRB", LTYPE3, ACLRB,
281 "CLRL", LTYPE3, ACLRL,
282 "CLRW", LTYPE3, ACLRW,
283 "CMP2B", LTYPE1, ACMP2B,
284 "CMP2L", LTYPE1, ACMP2L,
285 "CMP2W", LTYPE1, ACMP2W,
286 "CMPB", LTYPE1, ACMPB,
287 "CMPL", LTYPE1, ACMPL,
288 "CMPW", LTYPE1, ACMPW,
289 "DATA", LTYPE4, ADATA,
290 "DBCC", LTYPE7, ADBCC,
291 "DBCS", LTYPE7, ADBCS,
292 "DBEQ", LTYPE7, ADBEQ,
294 "DBGE", LTYPE7, ADBGE,
295 "DBGT", LTYPE7, ADBGT,
296 "DBHI", LTYPE7, ADBHI,
297 "DBLE", LTYPE7, ADBLE,
298 "DBLS", LTYPE7, ADBLS,
299 "DBLT", LTYPE7, ADBLT,
300 "DBMI", LTYPE7, ADBMI,
301 "DBNE", LTYPE7, ADBNE,
302 "DBPL", LTYPE7, ADBPL,
304 "DBVC", LTYPE7, ADBVC,
305 "DBVS", LTYPE7, ADBVS,
306 "DIVSL", LTYPE1, ADIVSL,
307 "DIVSW", LTYPE1, ADIVSW,
308 "DIVUL", LTYPE1, ADIVUL,
309 "DIVUW", LTYPE1, ADIVUW,
311 "EORB", LTYPE1, AEORB,
312 "EORL", LTYPE1, AEORL,
313 "EORW", LTYPE1, AEORW,
315 "EXTBL", LTYPE3, AEXTBL,
316 "EXTBW", LTYPE3, AEXTBW,
317 "EXTWL", LTYPE3, AEXTWL,
318 "FABSB", LTYPE1, AFABSB,
319 "FABSD", LTYPE1, AFABSD,
320 "FABSF", LTYPE1, AFABSF,
321 "FABSL", LTYPE1, AFABSL,
322 "FABSW", LTYPE1, AFABSW,
323 "FACOSB", LTYPE1, AFACOSB,
324 "FACOSD", LTYPE1, AFACOSD,
325 "FACOSF", LTYPE1, AFACOSF,
326 "FACOSL", LTYPE1, AFACOSL,
327 "FACOSW", LTYPE1, AFACOSW,
328 "FADDB", LTYPE1, AFADDB,
329 "FADDD", LTYPE1, AFADDD,
330 "FADDF", LTYPE1, AFADDF,
331 "FADDL", LTYPE1, AFADDL,
332 "FADDW", LTYPE1, AFADDW,
333 "FASINB", LTYPE1, AFASINB,
334 "FASIND", LTYPE1, AFASIND,
335 "FASINF", LTYPE1, AFASINF,
336 "FASINL", LTYPE1, AFASINL,
337 "FASINW", LTYPE1, AFASINW,
338 "FATANB", LTYPE1, AFATANB,
339 "FATAND", LTYPE1, AFATAND,
340 "FATANF", LTYPE1, AFATANF,
341 "FATANHB", LTYPE1, AFATANHB,
342 "FATANHD", LTYPE1, AFATANHD,
343 "FATANHF", LTYPE1, AFATANHF,
344 "FATANHL", LTYPE1, AFATANHL,
345 "FATANHW", LTYPE1, AFATANHW,
346 "FATANL", LTYPE1, AFATANL,
347 "FATANW", LTYPE1, AFATANW,
348 "FBEQ", LTYPE6, AFBEQ,
350 "FBGE", LTYPE6, AFBGE,
351 "FBGT", LTYPE6, AFBGT,
352 "FBLE", LTYPE6, AFBLE,
353 "FBLT", LTYPE6, AFBLT,
354 "FBNE", LTYPE6, AFBNE,
356 "FCMPB", LTYPE1, AFCMPB,
357 "FCMPD", LTYPE1, AFCMPD,
358 "FCMPF", LTYPE1, AFCMPF,
359 "FCMPL", LTYPE1, AFCMPL,
360 "FCMPW", LTYPE1, AFCMPW,
361 "FCOSB", LTYPE1, AFCOSB,
362 "FCOSD", LTYPE1, AFCOSD,
363 "FCOSF", LTYPE1, AFCOSF,
364 "FCOSHB", LTYPE1, AFCOSHB,
365 "FCOSHD", LTYPE1, AFCOSHD,
366 "FCOSHF", LTYPE1, AFCOSHF,
367 "FCOSHL", LTYPE1, AFCOSHL,
368 "FCOSHW", LTYPE1, AFCOSHW,
369 "FCOSL", LTYPE1, AFCOSL,
370 "FCOSW", LTYPE1, AFCOSW,
371 "FDBEQ", LTYPE7, AFDBEQ,
372 "FDBF", LTYPE7, AFDBF,
373 "FDBGE", LTYPE7, AFDBGE,
374 "FDBGT", LTYPE7, AFDBGT,
375 "FDBLE", LTYPE7, AFDBLE,
376 "FDBLT", LTYPE7, AFDBLT,
377 "FDBNE", LTYPE7, AFDBNE,
378 "FDBT", LTYPE7, AFDBT,
379 "FDIVB", LTYPE1, AFDIVB,
380 "FDIVD", LTYPE1, AFDIVD,
381 "FDIVF", LTYPE1, AFDIVF,
382 "FDIVL", LTYPE1, AFDIVL,
383 "FDIVW", LTYPE1, AFDIVW,
384 "FETOXB", LTYPE1, AFETOXB,
385 "FETOXD", LTYPE1, AFETOXD,
386 "FETOXF", LTYPE1, AFETOXF,
387 "FETOXL", LTYPE1, AFETOXL,
388 "FETOXM1B", LTYPE1, AFETOXM1B,
389 "FETOXM1D", LTYPE1, AFETOXM1D,
390 "FETOXM1F", LTYPE1, AFETOXM1F,
391 "FETOXM1L", LTYPE1, AFETOXM1L,
392 "FETOXM1W", LTYPE1, AFETOXM1W,
393 "FETOXW", LTYPE1, AFETOXW,
394 "FGETEXPB", LTYPE1, AFGETEXPB,
395 "FGETEXPD", LTYPE1, AFGETEXPD,
396 "FGETEXPF", LTYPE1, AFGETEXPF,
397 "FGETEXPL", LTYPE1, AFGETEXPL,
398 "FGETEXPW", LTYPE1, AFGETEXPW,
399 "FGETMANB", LTYPE1, AFGETMANB,
400 "FGETMAND", LTYPE1, AFGETMAND,
401 "FGETMANF", LTYPE1, AFGETMANF,
402 "FGETMANL", LTYPE1, AFGETMANL,
403 "FGETMANW", LTYPE1, AFGETMANW,
404 "FINTB", LTYPE1, AFINTB,
405 "FINTD", LTYPE1, AFINTD,
406 "FINTF", LTYPE1, AFINTF,
407 "FINTL", LTYPE1, AFINTL,
408 "FINTRZB", LTYPE1, AFINTRZB,
409 "FINTRZD", LTYPE1, AFINTRZD,
410 "FINTRZF", LTYPE1, AFINTRZF,
411 "FINTRZL", LTYPE1, AFINTRZL,
412 "FINTRZW", LTYPE1, AFINTRZW,
413 "FINTW", LTYPE1, AFINTW,
414 "FLOG10B", LTYPE1, AFLOG10B,
415 "FLOG10D", LTYPE1, AFLOG10D,
416 "FLOG10F", LTYPE1, AFLOG10F,
417 "FLOG10L", LTYPE1, AFLOG10L,
418 "FLOG10W", LTYPE1, AFLOG10W,
419 "FLOG2B", LTYPE1, AFLOG2B,
420 "FLOG2D", LTYPE1, AFLOG2D,
421 "FLOG2F", LTYPE1, AFLOG2F,
422 "FLOG2L", LTYPE1, AFLOG2L,
423 "FLOG2W", LTYPE1, AFLOG2W,
424 "FLOGNB", LTYPE1, AFLOGNB,
425 "FLOGND", LTYPE1, AFLOGND,
426 "FLOGNF", LTYPE1, AFLOGNF,
427 "FLOGNL", LTYPE1, AFLOGNL,
428 "FLOGNP1B", LTYPE1, AFLOGNP1B,
429 "FLOGNP1D", LTYPE1, AFLOGNP1D,
430 "FLOGNP1F", LTYPE1, AFLOGNP1F,
431 "FLOGNP1L", LTYPE1, AFLOGNP1L,
432 "FLOGNP1W", LTYPE1, AFLOGNP1W,
433 "FLOGNW", LTYPE1, AFLOGNW,
434 "FMODB", LTYPE1, AFMODB,
435 "FMODD", LTYPE1, AFMODD,
436 "FMODF", LTYPE1, AFMODF,
437 "FMODL", LTYPE1, AFMODL,
438 "FMODW", LTYPE1, AFMODW,
439 "FMOVEB", LTYPE1, AFMOVEB,
440 "FMOVED", LTYPE1, AFMOVED,
441 "FMOVEF", LTYPE1, AFMOVEF,
442 "FMOVEL", LTYPE1, AFMOVEL,
443 "FMOVEW", LTYPE1, AFMOVEW,
444 "FMULB", LTYPE1, AFMULB,
445 "FMULD", LTYPE1, AFMULD,
446 "FMULF", LTYPE1, AFMULF,
447 "FMULL", LTYPE1, AFMULL,
448 "FMULW", LTYPE1, AFMULW,
449 "FNEGB", LTYPE8, AFNEGB,
450 "FNEGD", LTYPE8, AFNEGD,
451 "FNEGF", LTYPE8, AFNEGF,
452 "FNEGL", LTYPE8, AFNEGL,
453 "FNEGW", LTYPE8, AFNEGW,
454 "FREMB", LTYPE1, AFREMB,
455 "FREMD", LTYPE1, AFREMD,
456 "FREMF", LTYPE1, AFREMF,
457 "FREML", LTYPE1, AFREML,
458 "FREMW", LTYPE1, AFREMW,
459 "FSCALEB", LTYPE1, AFSCALEB,
460 "FSCALED", LTYPE1, AFSCALED,
461 "FSCALEF", LTYPE1, AFSCALEF,
462 "FSCALEL", LTYPE1, AFSCALEL,
463 "FSCALEW", LTYPE1, AFSCALEW,
464 "FSEQ", LTYPE1, AFSEQ,
466 "FSGE", LTYPE1, AFSGE,
467 "FSGT", LTYPE1, AFSGT,
468 "FSINB", LTYPE1, AFSINB,
469 "FSIND", LTYPE1, AFSIND,
470 "FSINF", LTYPE1, AFSINF,
471 "FSINHB", LTYPE1, AFSINHB,
472 "FSINHD", LTYPE1, AFSINHD,
473 "FSINHF", LTYPE1, AFSINHF,
474 "FSINHL", LTYPE1, AFSINHL,
475 "FSINHW", LTYPE1, AFSINHW,
476 "FSINL", LTYPE1, AFSINL,
477 "FSINW", LTYPE1, AFSINW,
478 "FSLE", LTYPE1, AFSLE,
479 "FSLT", LTYPE1, AFSLT,
480 "FSNE", LTYPE1, AFSNE,
481 "FSQRTB", LTYPE1, AFSQRTB,
482 "FSQRTD", LTYPE1, AFSQRTD,
483 "FSQRTF", LTYPE1, AFSQRTF,
484 "FSQRTL", LTYPE1, AFSQRTL,
485 "FSQRTW", LTYPE1, AFSQRTW,
487 "FSUBB", LTYPE1, AFSUBB,
488 "FSUBD", LTYPE1, AFSUBD,
489 "FSUBF", LTYPE1, AFSUBF,
490 "FSUBL", LTYPE1, AFSUBL,
491 "FSUBW", LTYPE1, AFSUBW,
492 "FTANB", LTYPE1, AFTANB,
493 "FTAND", LTYPE1, AFTAND,
494 "FTANF", LTYPE1, AFTANF,
495 "FTANHB", LTYPE1, AFTANHB,
496 "FTANHD", LTYPE1, AFTANHD,
497 "FTANHF", LTYPE1, AFTANHF,
498 "FTANHL", LTYPE1, AFTANHL,
499 "FTANHW", LTYPE1, AFTANHW,
500 "FTANL", LTYPE1, AFTANL,
501 "FTANW", LTYPE1, AFTANW,
502 "FTENTOXB", LTYPE1, AFTENTOXB,
503 "FTENTOXD", LTYPE1, AFTENTOXD,
504 "FTENTOXF", LTYPE1, AFTENTOXF,
505 "FTENTOXL", LTYPE1, AFTENTOXL,
506 "FTENTOXW", LTYPE1, AFTENTOXW,
507 "FTSTB", LTYPE1, AFTSTB,
508 "FTSTD", LTYPE1, AFTSTD,
509 "FTSTF", LTYPE1, AFTSTF,
510 "FTSTL", LTYPE1, AFTSTL,
511 "FTSTW", LTYPE1, AFTSTW,
512 "FTWOTOXB", LTYPE1, AFTWOTOXB,
513 "FTWOTOXD", LTYPE1, AFTWOTOXD,
514 "FTWOTOXF", LTYPE1, AFTWOTOXF,
515 "FTWOTOXL", LTYPE1, AFTWOTOXL,
516 "FTWOTOXW", LTYPE1, AFTWOTOXW,
517 "FMOVEM", LTYPE1, AFMOVEM,
518 "FMOVEMC", LTYPE1, AFMOVEMC,
519 "FRESTORE", LTYPE3, AFRESTORE,
520 "FSAVE", LTYPE3, AFSAVE,
521 "GLOBL", LTYPE1, AGLOBL,
523 "HISTORY", LTYPE2, AHISTORY,
524 "ILLEG", LTYPE2, AILLEG,
525 "INSTR", LTYPE3, AINSTR,
529 "LINKL", LTYPE1, ALINKL,
530 "LINKW", LTYPE1, ALINKW,
531 "LOCATE", LTYPE1, ALOCATE,
532 "LONG", LTYPE3, ALONG,
533 "LSLB", LTYPE1, ALSLB,
534 "LSLL", LTYPE1, ALSLL,
535 "LSLW", LTYPE1, ALSLW,
536 "LSRB", LTYPE1, ALSRB,
537 "LSRL", LTYPE1, ALSRL,
538 "LSRW", LTYPE1, ALSRW,
539 "MOVB", LTYPE1, AMOVB,
540 "MOVEM", LTYPE1, AMOVEM,
541 "MOVEPL", LTYPE1, AMOVEPL,
542 "MOVEPW", LTYPE1, AMOVEPW,
543 "MOVESB", LTYPE1, AMOVESB,
544 "MOVESL", LTYPE1, AMOVESL,
545 "MOVESW", LTYPE1, AMOVESW,
546 "MOVL", LTYPE1, AMOVL,
547 "MOVW", LTYPE1, AMOVW,
548 "MULSL", LTYPE1, AMULSL,
549 "MULSW", LTYPE1, AMULSW,
550 "MULUL", LTYPE1, AMULUL,
551 "MULUW", LTYPE1, AMULUW,
552 "NAME", LTYPE1, ANAME,
553 "NBCD", LTYPE3, ANBCD,
554 "NEGB", LTYPE3, ANEGB,
555 "NEGL", LTYPE3, ANEGL,
556 "NEGW", LTYPE3, ANEGW,
557 "NEGXB", LTYPE3, ANEGXB,
558 "NEGXL", LTYPE3, ANEGXL,
559 "NEGXW", LTYPE3, ANEGXW,
561 "NOTB", LTYPE3, ANOTB,
562 "NOTL", LTYPE3, ANOTL,
563 "NOTW", LTYPE3, ANOTW,
567 "PACK", LTYPE1, APACK,
569 "RESET", LTYPE2, ARESET,
570 "ROTLB", LTYPE1, AROTLB,
571 "ROTLL", LTYPE1, AROTLL,
572 "ROTLW", LTYPE1, AROTLW,
573 "ROTRB", LTYPE1, AROTRB,
574 "ROTRL", LTYPE1, AROTRL,
575 "ROTRW", LTYPE1, AROTRW,
576 "ROXLB", LTYPE1, AROXLB,
577 "ROXLL", LTYPE1, AROXLL,
578 "ROXLW", LTYPE1, AROXLW,
579 "ROXRB", LTYPE1, AROXRB,
580 "ROXRL", LTYPE1, AROXRL,
581 "ROXRW", LTYPE1, AROXRW,
587 "SBCD", LTYPE1, ASBCD,
602 "STOP", LTYPE3, ASTOP,
603 "SUBB", LTYPE1, ASUBB,
604 "SUBL", LTYPE1, ASUBL,
605 "SUBW", LTYPE1, ASUBW,
606 "SUBXB", LTYPE1, ASUBXB,
607 "SUBXL", LTYPE1, ASUBXL,
608 "SUBXW", LTYPE1, ASUBXW,
611 "SWAP", LTYPE3, ASWAP,
614 "TEXT", LTYPEB, ATEXT,
615 "TRAP", LTYPE3, ATRAP,
616 "TRAPCC", LTYPE2, ATRAPCC,
617 "TRAPCS", LTYPE2, ATRAPCS,
618 "TRAPEQ", LTYPE2, ATRAPEQ,
619 "TRAPF", LTYPE2, ATRAPF,
620 "TRAPGE", LTYPE2, ATRAPGE,
621 "TRAPGT", LTYPE2, ATRAPGT,
622 "TRAPHI", LTYPE2, ATRAPHI,
623 "TRAPLE", LTYPE2, ATRAPLE,
624 "TRAPLS", LTYPE2, ATRAPLS,
625 "TRAPLT", LTYPE2, ATRAPLT,
626 "TRAPMI", LTYPE2, ATRAPMI,
627 "TRAPNE", LTYPE2, ATRAPNE,
628 "TRAPPL", LTYPE2, ATRAPPL,
629 "TRAPT", LTYPE2, ATRAPT,
630 "TRAPV", LTYPE2, ATRAPV,
631 "TRAPVC", LTYPE2, ATRAPVC,
632 "TRAPVS", LTYPE2, ATRAPVS,
633 "TSTB", LTYPE3, ATSTB,
634 "TSTL", LTYPE3, ATSTL,
635 "TSTW", LTYPE3, ATSTW,
636 "UNLK", LTYPE3, AUNLK,
637 "UNPK", LTYPE1, AUNPK,
638 "WORD", LTYPE3, AWORD,
651 nullgen.type = D_NONE;
654 for(i=0; i<sizeof(nullgen.sval); i++)
656 nullgen.displace = 0;
657 nullgen.type = D_NONE;
658 nullgen.index = D_NONE;
667 for(i=0; i<NHASH; i++)
669 for(i=0; itab[i].name; i++) {
670 s = slookup(itab[i].name);
671 s->type = itab[i].type;
672 s->value = itab[i].value;
675 pathname = allocn(pathname, 0, 100);
676 if(mygetwd(pathname, 99) == 0) {
677 pathname = allocn(pathname, 100, 900);
678 if(mygetwd(pathname, 999) == 0)
679 strcpy(pathname, "/???");
703 zname(char *n, int t, int s)
706 Bputc(&obuf, ANAME); /* as */
707 Bputc(&obuf, ANAME>>8);
708 Bputc(&obuf, t); /* type */
709 Bputc(&obuf, s); /* sym */
728 if(a->index != D_NONE || a->displace != 0)
735 if(a->type == D_FCONST)
738 if(a->type == D_SCONST)
745 if(t & T_FIELD) { /* implies field */
750 if(t & T_INDEX) { /* implies index, scale, displace */
754 Bputc(&obuf, a->scale);
761 if(t & T_OFFSET) { /* implies offset */
768 if(t & T_SYM) /* implies sym */
771 ieeedtod(&e, a->dval);
786 for(i=0; i<NSNAME; i++) {
799 outcode(int a, Gen2 *g2)
812 if(sf < 0 || sf >= NSYM)
814 t = g2->from.type & D_MASK;
818 zname(s->name, t, sym);
832 if(st < 0 || st >= NSYM)
834 t = g2->to.type & D_MASK;
838 zname(s->name, t, sym);
852 Bputc(&obuf, lineno);
853 Bputc(&obuf, lineno>>8);
854 Bputc(&obuf, lineno>>16);
855 Bputc(&obuf, lineno>>24);
856 zaddr(&g2->from, sf);
860 if(a != AGLOBL && a != ADATA)
874 for(h = hist; h != H; h = h->link) {
877 /* on windows skip drive specifier in pathname */
878 if(systemtype(Windows) && p && p[1] == ':'){
882 if(p && p[0] != c && h->offset == 0 && pathname){
883 /* on windows skip drive specifier in pathname */
884 if(systemtype(Windows) && pathname[1] == ':') {
888 } else if(pathname[0] == c){
898 n = 1; /* leading "/" */
899 *p = '/'; /* don't emit "\" on windows */
908 Bputc(&obuf, ANAME>>8);
909 Bputc(&obuf, D_FILE); /* type */
910 Bputc(&obuf, 1); /* sym */
921 g.offset = h->offset;
923 Bputc(&obuf, AHISTORY);
924 Bputc(&obuf, AHISTORY>>8);
925 Bputc(&obuf, h->line);
926 Bputc(&obuf, h->line>>8);
927 Bputc(&obuf, h->line>>16);
928 Bputc(&obuf, h->line>>24);
934 #include "../cc/lexbody"
935 #include "../cc/macbody"
936 #include "../cc/compat"