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++)
181 /* "SP", LLREG, D_SP, */
202 "GDTR", LBREG, D_GDTR,
203 "IDTR", LBREG, D_IDTR,
204 "LDTR", LBREG, D_LDTR,
206 "TASK", LBREG, D_TASK,
208 "CR0", LBREG, D_CR+0,
209 "CR1", LBREG, D_CR+1,
210 "CR2", LBREG, D_CR+2,
211 "CR3", LBREG, D_CR+3,
212 "CR4", LBREG, D_CR+4,
213 "CR5", LBREG, D_CR+5,
214 "CR6", LBREG, D_CR+6,
215 "CR7", LBREG, D_CR+7,
217 "DR0", LBREG, D_DR+0,
218 "DR1", LBREG, D_DR+1,
219 "DR2", LBREG, D_DR+2,
220 "DR3", LBREG, D_DR+3,
221 "DR4", LBREG, D_DR+4,
222 "DR5", LBREG, D_DR+5,
223 "DR6", LBREG, D_DR+6,
224 "DR7", LBREG, D_DR+7,
226 "TR0", LBREG, D_TR+0,
227 "TR1", LBREG, D_TR+1,
228 "TR2", LBREG, D_TR+2,
229 "TR3", LBREG, D_TR+3,
230 "TR4", LBREG, D_TR+4,
231 "TR5", LBREG, D_TR+5,
232 "TR6", LBREG, D_TR+6,
233 "TR7", LBREG, D_TR+7,
239 "ADCB", LTYPE3, AADCB,
240 "ADCL", LTYPE3, AADCL,
241 "ADCW", LTYPE3, AADCW,
242 "ADDB", LTYPE3, AADDB,
243 "ADDL", LTYPE3, AADDL,
244 "ADDW", LTYPE3, AADDW,
245 "ADJSP", LTYPE2, AADJSP,
246 "ANDB", LTYPE3, AANDB,
247 "ANDL", LTYPE3, AANDL,
248 "ANDW", LTYPE3, AANDW,
249 "ARPL", LTYPE3, AARPL,
250 "BOUNDL", LTYPE3, ABOUNDL,
251 "BOUNDW", LTYPE3, ABOUNDW,
252 "BSFL", LTYPE3, ABSFL,
253 "BSFW", LTYPE3, ABSFW,
254 "BSRL", LTYPE3, ABSRL,
255 "BSRW", LTYPE3, ABSRW,
256 "BTCL", LTYPE3, ABTCL,
257 "BTCW", LTYPE3, ABTCW,
259 "BTRL", LTYPE3, ABTRL,
260 "BTRW", LTYPE3, ABTRW,
261 "BTSL", LTYPE3, ABTSL,
262 "BTSW", LTYPE3, ABTSW,
264 "BYTE", LTYPE2, ABYTE,
265 "CALL", LTYPEC, ACALL,
269 "CLTS", LTYPE0, ACLTS,
271 "CMPB", LTYPE4, ACMPB,
272 "CMPL", LTYPE4, ACMPL,
273 "CMPW", LTYPE4, ACMPW,
274 "CMPSB", LTYPE0, ACMPSB,
275 "CMPSL", LTYPE0, ACMPSL,
276 "CMPSW", LTYPE0, ACMPSW,
277 "CMPXCHGB", LTYPE3, ACMPXCHGB,
278 "CMPXCHGL", LTYPE3, ACMPXCHGL,
279 "CMPXCHGW", LTYPE3, ACMPXCHGW,
282 "DATA", LTYPED, ADATA,
283 "DECB", LTYPE1, ADECB,
284 "DECL", LTYPE1, ADECL,
285 "DECW", LTYPE1, ADECW,
286 "DIVB", LTYPE2, ADIVB,
287 "DIVL", LTYPE2, ADIVL,
288 "DIVW", LTYPE2, ADIVW,
290 "ENTER", LTYPE2, AENTER,
291 "GLOBL", LTYPEG, AGLOBL,
293 "IDIVB", LTYPE2, AIDIVB,
294 "IDIVL", LTYPE2, AIDIVL,
295 "IDIVW", LTYPE2, AIDIVW,
296 "IMULB", LTYPEI, AIMULB,
297 "IMULL", LTYPEI, AIMULL,
298 "IMULW", LTYPEI, AIMULW,
302 "INCB", LTYPE1, AINCB,
303 "INCL", LTYPE1, AINCL,
304 "INCW", LTYPE1, AINCW,
305 "INSB", LTYPE0, AINSB,
306 "INSL", LTYPE0, AINSL,
307 "INSW", LTYPE0, AINSW,
309 "INTO", LTYPE0, AINTO,
310 "IRETL", LTYPE0, AIRETL,
311 "IRETW", LTYPE0, AIRETW,
314 "JO", LTYPER, AJOS, /* alternate */
316 "JNO", LTYPER, AJOC, /* alternate */
318 "JB", LTYPER, AJCS, /* alternate */
319 "JC", LTYPER, AJCS, /* alternate */
320 "JNAE", LTYPER, AJCS, /* alternate */
321 "JLO", LTYPER, AJCS, /* alternate */
323 "JAE", LTYPER, AJCC, /* alternate */
324 "JNB", LTYPER, AJCC, /* alternate */
325 "JNC", LTYPER, AJCC, /* alternate */
326 "JHS", LTYPER, AJCC, /* alternate */
328 "JE", LTYPER, AJEQ, /* alternate */
329 "JZ", LTYPER, AJEQ, /* alternate */
331 "JNZ", LTYPER, AJNE, /* alternate */
333 "JBE", LTYPER, AJLS, /* alternate */
334 "JNA", LTYPER, AJLS, /* alternate */
336 "JA", LTYPER, AJHI, /* alternate */
337 "JNBE", LTYPER, AJHI, /* alternate */
339 "JS", LTYPER, AJMI, /* alternate */
341 "JNS", LTYPER, AJPL, /* alternate */
343 "JP", LTYPER, AJPS, /* alternate */
344 "JPE", LTYPER, AJPS, /* alternate */
346 "JNP", LTYPER, AJPC, /* alternate */
347 "JPO", LTYPER, AJPC, /* alternate */
349 "JL", LTYPER, AJLT, /* alternate */
350 "JNGE", LTYPER, AJLT, /* alternate */
352 "JNL", LTYPER, AJGE, /* alternate */
354 "JNG", LTYPER, AJLE, /* alternate */
356 "JG", LTYPER, AJGT, /* alternate */
357 "JNLE", LTYPER, AJGT, /* alternate */
359 "JCXZ", LTYPER, AJCXZ,
361 "LAHF", LTYPE0, ALAHF,
362 "LARL", LTYPE3, ALARL,
363 "LARW", LTYPE3, ALARW,
364 "LEAL", LTYPE3, ALEAL,
365 "LEAW", LTYPE3, ALEAW,
366 "LEAVEL", LTYPE0, ALEAVEL,
367 "LEAVEW", LTYPE0, ALEAVEW,
368 "LOCK", LTYPE0, ALOCK,
369 "LODSB", LTYPE0, ALODSB,
370 "LODSL", LTYPE0, ALODSL,
371 "LODSW", LTYPE0, ALODSW,
372 "LONG", LTYPE2, ALONG,
373 "LOOP", LTYPER, ALOOP,
374 "LOOPEQ", LTYPER, ALOOPEQ,
375 "LOOPNE", LTYPER, ALOOPNE,
376 "LSLL", LTYPE3, ALSLL,
377 "LSLW", LTYPE3, ALSLW,
378 "MOVB", LTYPE3, AMOVB,
379 "MOVL", LTYPEM, AMOVL,
380 "MOVW", LTYPEM, AMOVW,
381 "MOVBLSX", LTYPE3, AMOVBLSX,
382 "MOVBLZX", LTYPE3, AMOVBLZX,
383 "MOVBWSX", LTYPE3, AMOVBWSX,
384 "MOVBWZX", LTYPE3, AMOVBWZX,
385 "MOVWLSX", LTYPE3, AMOVWLSX,
386 "MOVWLZX", LTYPE3, AMOVWLZX,
387 "MOVSB", LTYPE0, AMOVSB,
388 "MOVSL", LTYPE0, AMOVSL,
389 "MOVSW", LTYPE0, AMOVSW,
390 "MULB", LTYPE2, AMULB,
391 "MULL", LTYPE2, AMULL,
392 "MULW", LTYPE2, AMULW,
393 "NEGB", LTYPE1, ANEGB,
394 "NEGL", LTYPE1, ANEGL,
395 "NEGW", LTYPE1, ANEGW,
397 "NOTB", LTYPE1, ANOTB,
398 "NOTL", LTYPE1, ANOTL,
399 "NOTW", LTYPE1, ANOTW,
403 "OUTB", LTYPE0, AOUTB,
404 "OUTL", LTYPE0, AOUTL,
405 "OUTW", LTYPE0, AOUTW,
406 "OUTSB", LTYPE0, AOUTSB,
407 "OUTSL", LTYPE0, AOUTSL,
408 "OUTSW", LTYPE0, AOUTSW,
409 "POPAL", LTYPE0, APOPAL,
410 "POPAW", LTYPE0, APOPAW,
411 "POPFL", LTYPE0, APOPFL,
412 "POPFW", LTYPE0, APOPFW,
413 "POPL", LTYPE1, APOPL,
414 "POPW", LTYPE1, APOPW,
415 "PUSHAL", LTYPE0, APUSHAL,
416 "PUSHAW", LTYPE0, APUSHAW,
417 "PUSHFL", LTYPE0, APUSHFL,
418 "PUSHFW", LTYPE0, APUSHFW,
419 "PUSHL", LTYPE2, APUSHL,
420 "PUSHW", LTYPE2, APUSHW,
421 "RCLB", LTYPE3, ARCLB,
422 "RCLL", LTYPE3, ARCLL,
423 "RCLW", LTYPE3, ARCLW,
424 "RCRB", LTYPE3, ARCRB,
425 "RCRL", LTYPE3, ARCRL,
426 "RCRW", LTYPE3, ARCRW,
428 "REPN", LTYPE0, AREPN,
430 "ROLB", LTYPE3, AROLB,
431 "ROLL", LTYPE3, AROLL,
432 "ROLW", LTYPE3, AROLW,
433 "RORB", LTYPE3, ARORB,
434 "RORL", LTYPE3, ARORL,
435 "RORW", LTYPE3, ARORW,
436 "SAHF", LTYPE0, ASAHF,
437 "SALB", LTYPE3, ASALB,
438 "SALL", LTYPE3, ASALL,
439 "SALW", LTYPE3, ASALW,
440 "SARB", LTYPE3, ASARB,
441 "SARL", LTYPE3, ASARL,
442 "SARW", LTYPE3, ASARW,
443 "SBBB", LTYPE3, ASBBB,
444 "SBBL", LTYPE3, ASBBL,
445 "SBBW", LTYPE3, ASBBW,
446 "SCASB", LTYPE0, ASCASB,
447 "SCASL", LTYPE0, ASCASL,
448 "SCASW", LTYPE0, ASCASW,
449 "SETCC", LTYPE1, ASETCC,
450 "SETCS", LTYPE1, ASETCS,
451 "SETEQ", LTYPE1, ASETEQ,
452 "SETGE", LTYPE1, ASETGE,
453 "SETGT", LTYPE1, ASETGT,
454 "SETHI", LTYPE1, ASETHI,
455 "SETLE", LTYPE1, ASETLE,
456 "SETLS", LTYPE1, ASETLS,
457 "SETLT", LTYPE1, ASETLT,
458 "SETMI", LTYPE1, ASETMI,
459 "SETNE", LTYPE1, ASETNE,
460 "SETOC", LTYPE1, ASETOC,
461 "SETOS", LTYPE1, ASETOS,
462 "SETPC", LTYPE1, ASETPC,
463 "SETPL", LTYPE1, ASETPL,
464 "SETPS", LTYPE1, ASETPS,
467 "SHLB", LTYPE3, ASHLB,
468 "SHLL", LTYPES, ASHLL,
469 "SHLW", LTYPES, ASHLW,
470 "SHRB", LTYPE3, ASHRB,
471 "SHRL", LTYPES, ASHRL,
472 "SHRW", LTYPES, ASHRW,
476 "STOSB", LTYPE0, ASTOSB,
477 "STOSL", LTYPE0, ASTOSL,
478 "STOSW", LTYPE0, ASTOSW,
479 "SUBB", LTYPE3, ASUBB,
480 "SUBL", LTYPE3, ASUBL,
481 "SUBW", LTYPE3, ASUBW,
482 "SYSCALL", LTYPE0, ASYSCALL,
483 "TESTB", LTYPE3, ATESTB,
484 "TESTL", LTYPE3, ATESTL,
485 "TESTW", LTYPE3, ATESTW,
486 "TEXT", LTYPET, ATEXT,
487 "VERR", LTYPE2, AVERR,
488 "VERW", LTYPE2, AVERW,
489 "WAIT", LTYPE0, AWAIT,
490 "WORD", LTYPE2, AWORD,
491 "XCHGB", LTYPE3, AXCHGB,
492 "XCHGL", LTYPE3, AXCHGL,
493 "XCHGW", LTYPE3, AXCHGW,
494 "XLAT", LTYPE2, AXLAT,
495 "XORB", LTYPE3, AXORB,
496 "XORL", LTYPE3, AXORL,
497 "XORW", LTYPE3, AXORW,
499 "CMOVLCC", LTYPE3, ACMOVLCC,
500 "CMOVLCS", LTYPE3, ACMOVLCS,
501 "CMOVLEQ", LTYPE3, ACMOVLEQ,
502 "CMOVLGE", LTYPE3, ACMOVLGE,
503 "CMOVLGT", LTYPE3, ACMOVLGT,
504 "CMOVLHI", LTYPE3, ACMOVLHI,
505 "CMOVLLE", LTYPE3, ACMOVLLE,
506 "CMOVLLS", LTYPE3, ACMOVLLS,
507 "CMOVLLT", LTYPE3, ACMOVLLT,
508 "CMOVLMI", LTYPE3, ACMOVLMI,
509 "CMOVLNE", LTYPE3, ACMOVLNE,
510 "CMOVLOC", LTYPE3, ACMOVLOC,
511 "CMOVLOS", LTYPE3, ACMOVLOS,
512 "CMOVLPC", LTYPE3, ACMOVLPC,
513 "CMOVLPL", LTYPE3, ACMOVLPL,
514 "CMOVLPS", LTYPE3, ACMOVLPS,
515 "CMOVWCC", LTYPE3, ACMOVWCC,
516 "CMOVWCS", LTYPE3, ACMOVWCS,
517 "CMOVWEQ", LTYPE3, ACMOVWEQ,
518 "CMOVWGE", LTYPE3, ACMOVWGE,
519 "CMOVWGT", LTYPE3, ACMOVWGT,
520 "CMOVWHI", LTYPE3, ACMOVWHI,
521 "CMOVWLE", LTYPE3, ACMOVWLE,
522 "CMOVWLS", LTYPE3, ACMOVWLS,
523 "CMOVWLT", LTYPE3, ACMOVWLT,
524 "CMOVWMI", LTYPE3, ACMOVWMI,
525 "CMOVWNE", LTYPE3, ACMOVWNE,
526 "CMOVWOC", LTYPE3, ACMOVWOC,
527 "CMOVWOS", LTYPE3, ACMOVWOS,
528 "CMOVWPC", LTYPE3, ACMOVWPC,
529 "CMOVWPL", LTYPE3, ACMOVWPL,
530 "CMOVWPS", LTYPE3, ACMOVWPS,
532 "FMOVB", LTYPE3, AFMOVB,
533 "FMOVBP", LTYPE3, AFMOVBP,
534 "FMOVD", LTYPE3, AFMOVD,
535 "FMOVDP", LTYPE3, AFMOVDP,
536 "FMOVF", LTYPE3, AFMOVF,
537 "FMOVFP", LTYPE3, AFMOVFP,
538 "FMOVL", LTYPE3, AFMOVL,
539 "FMOVLP", LTYPE3, AFMOVLP,
540 "FMOVV", LTYPE3, AFMOVV,
541 "FMOVVP", LTYPE3, AFMOVVP,
542 "FMOVW", LTYPE3, AFMOVW,
543 "FMOVWP", LTYPE3, AFMOVWP,
544 "FMOVX", LTYPE3, AFMOVX,
545 "FMOVXP", LTYPE3, AFMOVXP,
546 "FCMOVCC", LTYPE3, AFCMOVCC,
547 "FCMOVCS", LTYPE3, AFCMOVCS,
548 "FCMOVEQ", LTYPE3, AFCMOVEQ,
549 "FCMOVHI", LTYPE3, AFCMOVHI,
550 "FCMOVLS", LTYPE3, AFCMOVLS,
551 "FCMOVNE", LTYPE3, AFCMOVNE,
552 "FCMOVNU", LTYPE3, AFCMOVNU,
553 "FCMOVUN", LTYPE3, AFCMOVUN,
554 "FCOMB", LTYPE3, AFCOMB,
555 "FCOMBP", LTYPE3, AFCOMBP,
556 "FCOMD", LTYPE3, AFCOMD,
557 "FCOMDP", LTYPE3, AFCOMDP,
558 "FCOMDPP", LTYPE3, AFCOMDPP,
559 "FCOMF", LTYPE3, AFCOMF,
560 "FCOMFP", LTYPE3, AFCOMFP,
561 "FCOMI", LTYPE3, AFCOMI,
562 "FCOMIP", LTYPE3, AFCOMIP,
563 "FCOML", LTYPE3, AFCOML,
564 "FCOMLP", LTYPE3, AFCOMLP,
565 "FCOMW", LTYPE3, AFCOMW,
566 "FCOMWP", LTYPE3, AFCOMWP,
567 "FUCOM", LTYPE3, AFUCOM,
568 "FUCOMI", LTYPE3, AFUCOMI,
569 "FUCOMIP", LTYPE3, AFUCOMIP,
570 "FUCOMP", LTYPE3, AFUCOMP,
571 "FUCOMPP", LTYPE3, AFUCOMPP,
572 "FADDW", LTYPE3, AFADDW,
573 "FADDL", LTYPE3, AFADDL,
574 "FADDF", LTYPE3, AFADDF,
575 "FADDD", LTYPE3, AFADDD,
576 "FADDDP", LTYPE3, AFADDDP,
577 "FSUBDP", LTYPE3, AFSUBDP,
578 "FSUBW", LTYPE3, AFSUBW,
579 "FSUBL", LTYPE3, AFSUBL,
580 "FSUBF", LTYPE3, AFSUBF,
581 "FSUBD", LTYPE3, AFSUBD,
582 "FSUBRDP", LTYPE3, AFSUBRDP,
583 "FSUBRW", LTYPE3, AFSUBRW,
584 "FSUBRL", LTYPE3, AFSUBRL,
585 "FSUBRF", LTYPE3, AFSUBRF,
586 "FSUBRD", LTYPE3, AFSUBRD,
587 "FMULDP", LTYPE3, AFMULDP,
588 "FMULW", LTYPE3, AFMULW,
589 "FMULL", LTYPE3, AFMULL,
590 "FMULF", LTYPE3, AFMULF,
591 "FMULD", LTYPE3, AFMULD,
592 "FDIVDP", LTYPE3, AFDIVDP,
593 "FDIVW", LTYPE3, AFDIVW,
594 "FDIVL", LTYPE3, AFDIVL,
595 "FDIVF", LTYPE3, AFDIVF,
596 "FDIVD", LTYPE3, AFDIVD,
597 "FDIVRDP", LTYPE3, AFDIVRDP,
598 "FDIVRW", LTYPE3, AFDIVRW,
599 "FDIVRL", LTYPE3, AFDIVRL,
600 "FDIVRF", LTYPE3, AFDIVRF,
601 "FDIVRD", LTYPE3, AFDIVRD,
602 "FXCHD", LTYPE3, AFXCHD,
603 "FFREE", LTYPE1, AFFREE,
604 "FLDCW", LTYPE2, AFLDCW,
605 "FLDENV", LTYPE1, AFLDENV,
606 "FRSTOR", LTYPE2, AFRSTOR,
607 "FSAVE", LTYPE1, AFSAVE,
608 "FSTCW", LTYPE1, AFSTCW,
609 "FSTENV", LTYPE1, AFSTENV,
610 "FSTSW", LTYPE1, AFSTSW,
611 "F2XM1", LTYPE0, AF2XM1,
612 "FABS", LTYPE0, AFABS,
613 "FCHS", LTYPE0, AFCHS,
614 "FCLEX", LTYPE0, AFCLEX,
615 "FCOS", LTYPE0, AFCOS,
616 "FDECSTP", LTYPE0, AFDECSTP,
617 "FINCSTP", LTYPE0, AFINCSTP,
618 "FINIT", LTYPE0, AFINIT,
619 "FLD1", LTYPE0, AFLD1,
620 "FLDL2E", LTYPE0, AFLDL2E,
621 "FLDL2T", LTYPE0, AFLDL2T,
622 "FLDLG2", LTYPE0, AFLDLG2,
623 "FLDLN2", LTYPE0, AFLDLN2,
624 "FLDPI", LTYPE0, AFLDPI,
625 "FLDZ", LTYPE0, AFLDZ,
626 "FNOP", LTYPE0, AFNOP,
627 "FPATAN", LTYPE0, AFPATAN,
628 "FPREM", LTYPE0, AFPREM,
629 "FPREM1", LTYPE0, AFPREM1,
630 "FPTAN", LTYPE0, AFPTAN,
631 "FRNDINT", LTYPE0, AFRNDINT,
632 "FSCALE", LTYPE0, AFSCALE,
633 "FSIN", LTYPE0, AFSIN,
634 "FSINCOS", LTYPE0, AFSINCOS,
635 "FSQRT", LTYPE0, AFSQRT,
636 "FTST", LTYPE0, AFTST,
637 "FXAM", LTYPE0, AFXAM,
638 "FXTRACT", LTYPE0, AFXTRACT,
639 "FYL2X", LTYPE0, AFYL2X,
640 "FYL2XP1", LTYPE0, AFYL2XP1,
655 for(i=0; i<sizeof(nullgen.sval); i++)
657 nullgen.type = D_NONE;
658 nullgen.index = D_NONE;
666 for(i=0; i<NHASH; i++)
668 for(i=0; itab[i].name; i++) {
669 s = slookup(itab[i].name);
671 yyerror("double initialization %s", itab[i].name);
672 s->type = itab[i].type;
673 s->value = itab[i].value;
676 pathname = allocn(pathname, 0, 100);
677 if(mygetwd(pathname, 99) == 0) {
678 pathname = allocn(pathname, 100, 900);
679 if(mygetwd(pathname, 999) == 0)
680 strcpy(pathname, "/???");
685 checkscale(int scale)
695 yyerror("scale must be 1248: %d", scale);
718 zname(char *n, int t, int s)
721 Bputc(&obuf, ANAME); /* as(2) */
722 Bputc(&obuf, ANAME>>8);
723 Bputc(&obuf, t); /* type */
724 Bputc(&obuf, s); /* sym */
741 if(a->index != D_NONE || a->scale != 0)
756 t |= T_OFFSET|T_OFFSET2;
766 if(t & T_INDEX) { /* implies index, scale */
767 Bputc(&obuf, a->index);
768 Bputc(&obuf, a->scale);
770 if(t & T_OFFSET) { /* implies offset */
784 if(t & T_SYM) /* implies sym */
787 ieeedtod(&e, a->dval);
802 for(i=0; i<NSNAME; i++) {
809 Bputc(&obuf, a->type);
813 outcode(int a, Gen2 *g2)
826 if(sf < 0 || sf >= NSYM)
834 zname(s->name, t, sym);
848 if(st < 0 || st >= NSYM)
856 zname(s->name, t, sym);
870 Bputc(&obuf, lineno);
871 Bputc(&obuf, lineno>>8);
872 Bputc(&obuf, lineno>>16);
873 Bputc(&obuf, lineno>>24);
874 zaddr(&g2->from, sf);
878 if(a != AGLOBL && a != ADATA)
892 for(h = hist; h != H; h = h->link) {
895 /* on windows skip drive specifier in pathname */
896 if(systemtype(Windows) && p && p[1] == ':'){
900 if(p && p[0] != c && h->offset == 0 && pathname){
901 /* on windows skip drive specifier in pathname */
902 if(systemtype(Windows) && pathname[1] == ':') {
906 } else if(pathname[0] == c){
916 n = 1; /* leading "/" */
917 *p = '/'; /* don't emit "\" on windows */
926 Bputc(&obuf, ANAME>>8);
927 Bputc(&obuf, D_FILE); /* type */
928 Bputc(&obuf, 1); /* sym */
939 g.offset = h->offset;
941 Bputc(&obuf, AHISTORY);
942 Bputc(&obuf, AHISTORY>>8);
943 Bputc(&obuf, h->line);
944 Bputc(&obuf, h->line>>8);
945 Bputc(&obuf, h->line>>16);
946 Bputc(&obuf, h->line>>24);
952 #include "../cc/lexbody"
953 #include "../cc/macbody"
954 #include "../cc/compat"