Annotation of researchv9/jerq/sgs/ld/y.tab.c, revision 1.1.1.1

1.1       root        1: 
                      2: # line 2 "ld.yac"
                      3: static char ID[] = "@(#) ld.yac: 1.8 12/1/83";
                      4: #include "system.h"
                      5: #include <stdio.h>
                      6: #include "bool.h"
                      7: #include "attributes.h"
                      8: #include "list.h"
                      9: #include "structs.h"
                     10: 
                     11: #if TRVEC
                     12: #include "tv.h"
                     13: #include "ldtv.h"
                     14: #endif
                     15: 
                     16: #include "extrns.h"
                     17: #include "sgs.h"
                     18: #include "sgsmacros.h"
                     19: #include "ldmacros.h"
                     20: 
                     21: 
                     22: 
                     23: extern char inline[];
                     24: 
                     25: 
                     26: /*
                     27:  *
                     28:  *     There is a very important variable, called
                     29:  *
                     30:  *             in_y_exp
                     31:  *
                     32:  *     that is used to help recognize filenames.
                     33:  *
                     34:  *     The problems is this:  a UNIX filename can contain
                     35:  *     virtually any character, and the nodes in the pathname
                     36:  *     are separated by slashes.  Unfortunately, slashes also
                     37:  *     occur in expressions, comments, and the /= assignment
                     38:  *     operator.  Moreover, the LEX rules ignore white space,
                     39:  *     which is important to knowing where one filename stops
                     40:  *     and the next begins.
                     41:  *
                     42:  *     The resolution is this.  Lex doesn't know enough alone to
                     43:  *     recognize a filename; so we give it some help.  Whenever we
                     44:  *     are in an expression, we set in_y_exp to TRUE, and then lex knows
                     45:  *     that any slash is a slash, and should not be kept as part of
                     46:  *     a filename.  a/b is a divided by b, not the file a/b.
                     47:  *
                     48:  *     Consequently, whenever a slash must be kept as a slash,
                     49:  *     in_y_exp will be TRUE.  Otherwise, it will be FALSE, and the
                     50:  *     lexical analyzer will treat a/b as a filename.
                     51:  */
                     52: 
                     53: int in_y_exp;
                     54: 
                     55: static secnum;                                 /* number of sections */
                     56: static char *fnamptr;
                     57: static int nsecspcs, fillflag;                 /* parsing status flags */
                     58: static ACTITEM *aiptr, *afaiptr, *grptr;       /* pointers to action items */
                     59: extern char *curfilnm;                         /* name of current ifile */
                     60: 
                     61: #if TRVEC
                     62: static TVASSIGN *tvslotn,              /* ptr to last  in list of tv slots */
                     63:                *slotptr;               /* temp for traversing list         */
                     64: #endif
                     65: 
                     66: static int tempi;                              /* temporary int */
                     67: /*eject*/
                     68: 
                     69: # line 167 "ld.yac"
                     70: typedef union  {
                     71:        int ivalue;     /* yylval values */
                     72:        char *sptr;
                     73:        long *lptr;
                     74: 
                     75:        ACTITEM *aitem; /* nonterminal values */
                     76:        ENODE   *enode;
                     77:        } YYSTYPE;
                     78: # define NAME 2
                     79: # define LONGINT 3
                     80: # define INT 4
                     81: # define ALIGN 5
                     82: # define DOT 6
                     83: # define LEN 7
                     84: # define MEMORY 8
                     85: # define ORG 9
                     86: # define REGIONS 10
                     87: # define SECTIONS 11
                     88: # define PHY 12
                     89: # define AND 13
                     90: # define ANDAND 14
                     91: # define BNOT 15
                     92: # define COLON 16
                     93: # define COMMA 17
                     94: # define DIV 18
                     95: # define EQ 19
                     96: # define EQEQ 20
                     97: # define GE 21
                     98: # define GT 23
                     99: # define LBRACE 24
                    100: # define LE 26
                    101: # define LPAREN 27
                    102: # define LSHIFT 28
                    103: # define LT 29
                    104: # define MINUS 30
                    105: # define MULT 31
                    106: # define NE 32
                    107: # define NOT 33
                    108: # define OR 34
                    109: # define OROR 35
                    110: # define PC 36
                    111: # define PLUS 37
                    112: # define RBRACE 38
                    113: # define RPAREN 39
                    114: # define RSHIFT 40
                    115: # define SEMICOL 41
                    116: # define DIVEQ 42
                    117: # define MINUSEQ 43
                    118: # define MULTEQ 44
                    119: # define PLUSEQ 45
                    120: # define FILENAME 46
                    121: # define TV 47
                    122: # define SPARE 48
                    123: # define DSECT 49
                    124: # define NOLOAD 50
                    125: # define COPY 51
                    126: # define INFO 52
                    127: # define BLOCK 53
                    128: # define UMINUS 54
                    129: # define GROUP 55
                    130: # define RANGE 56
                    131: # define ASSIGN 57
                    132: #define yyclearin yychar = -1
                    133: #define yyerrok yyerrflag = 0
                    134: extern int yychar;
                    135: extern short yyerrflag;
                    136: #ifndef YYMAXDEPTH
                    137: #define YYMAXDEPTH 150
                    138: #endif
                    139: YYSTYPE yylval, yyval;
                    140: # define YYERRCODE 256
                    141: 
                    142: # line 737 "ld.yac"
                    143: 
                    144: /*eject*/
                    145: /*VARARGS*/
                    146: yyerror(format, a1, a2, a3, a4)
                    147: char *format;
                    148: {
                    149: 
                    150: /*
                    151:  * Issue a parsing error message
                    152:  */
                    153: 
                    154:        char *p;
                    155: 
                    156:        p = sname(curfilnm);    /* strip off directories from path name */
                    157: 
                    158: /*
                    159:  * For any purely YACC-generated error, also print out the current
                    160:  * line, up to the point of the error
                    161:  */
                    162: 
                    163:        if( strcmp(format, "syntax error") == 0 )
                    164:                lderror(1, lineno, p, "%s : scanned line = (%s)", format, inline, a1, a2 );
                    165:        else
                    166:                lderror(1, lineno, p, format, a1, a2, a3, a4);
                    167: }
                    168: short yyexca[] ={
                    169: -1, 1,
                    170:        0, -1,
                    171:        -2, 0,
                    172: -1, 17,
                    173:        19, 123,
                    174:        42, 123,
                    175:        43, 123,
                    176:        44, 123,
                    177:        45, 123,
                    178:        -2, 125,
                    179: -1, 147,
                    180:        20, 0,
                    181:        21, 0,
                    182:        23, 0,
                    183:        26, 0,
                    184:        29, 0,
                    185:        32, 0,
                    186:        -2, 103,
                    187: -1, 148,
                    188:        20, 0,
                    189:        21, 0,
                    190:        23, 0,
                    191:        26, 0,
                    192:        29, 0,
                    193:        32, 0,
                    194:        -2, 104,
                    195: -1, 149,
                    196:        20, 0,
                    197:        21, 0,
                    198:        23, 0,
                    199:        26, 0,
                    200:        29, 0,
                    201:        32, 0,
                    202:        -2, 105,
                    203: -1, 150,
                    204:        20, 0,
                    205:        21, 0,
                    206:        23, 0,
                    207:        26, 0,
                    208:        29, 0,
                    209:        32, 0,
                    210:        -2, 106,
                    211: -1, 151,
                    212:        20, 0,
                    213:        21, 0,
                    214:        23, 0,
                    215:        26, 0,
                    216:        29, 0,
                    217:        32, 0,
                    218:        -2, 107,
                    219: -1, 152,
                    220:        20, 0,
                    221:        21, 0,
                    222:        23, 0,
                    223:        26, 0,
                    224:        29, 0,
                    225:        32, 0,
                    226:        -2, 108,
                    227:        };
                    228: # define YYNPROD 128
                    229: # define YYLAST 404
                    230: short yyact[]={
                    231: 
                    232:   97, 105,  17,  40, 108,  93,  20, 104, 101,  52,
                    233:   99,  36,  52, 102, 207,  96, 100,  91,  92, 103,
                    234:   40,  98, 106,  94,  90,  17,  36,  95, 107,  20,
                    235:   51,  13, 188,  12,  15,  81,  71,  51, 167,  68,
                    236:  194,  45, 127,  47, 175,  57,  18,  65,  16,  54,
                    237:  135,  44,  77,  19,  75,  55,  77, 214, 215, 216,
                    238:  217, 229,  53,  86, 228, 176, 227, 226,  33,  18,
                    239:   14, 225, 222,  97, 105, 219,  82, 180,  93, 160,
                    240:  104, 101,  39,  99,  28, 119, 102,  35,  96, 100,
                    241:   91,  92, 103,  74,  98, 106,  94,  90, 209, 179,
                    242:   95,  78,  79,  82, 198,  78,  79,  27,  29,  30,
                    243:   31,  82,  18, 115, 110, 111, 112,  88, 197, 177,
                    244:  172,  69,  66, 124, 123, 185, 134, 129, 114,  16,
                    245:  113, 121, 174, 125, 211,  72,  82,  82,  84, 137,
                    246:  138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
                    247:  148, 149, 150, 151, 152, 153, 154, 169,  80,  72,
                    248:  156,  93, 170, 155,  83,  42,  25, 213,  22, 173,
                    249:   97, 105,  21, 195,  92,  93,  82, 104, 101,  94,
                    250:   99, 132, 178, 102,   9,  96, 100,  91,  92, 103,
                    251:  239,  98, 106,  94,  90, 233, 157,  95, 230, 189,
                    252:  187,  32, 186, 182, 162, 158, 122, 120, 184, 200,
                    253:  117,  67, 159, 190, 129, 193,  16, 201,  93, 116,
                    254:  231, 220,  64, 237, 136, 204,  20, 210,  96, 206,
                    255:   91,  92, 212,  93, 240, 235,  94,  90, 221, 232,
                    256:   95, 218, 223, 109, 205,  91,  92, 203, 202, 199,
                    257:  181,  94,  90, 165, 164, 163, 131,  41,  87,  24,
                    258:  224, 130, 168,  49,   8,  37,  49, 208, 234, 192,
                    259:  183, 238, 118,  85,  41,  89,  97, 105, 191,  11,
                    260:   37,  93, 171, 104, 101, 128,  99, 126,  48, 102,
                    261:   50,  96, 100,  91,  92, 103, 133,  98,  46,  94,
                    262:   90,  97,  43,  95, 166,  76,  93, 161, 104, 101,
                    263:   73,  99,  23,  38, 102,  34,  96, 100,  91,  92,
                    264:  103,  10,  98,   7,  94,  90,  97,   6,  95,   5,
                    265:    4,  93,   3, 104, 101,   2,  99,   1, 236, 102,
                    266:  196,  96, 100,  91,  92, 103,  70,  26,   0,  94,
                    267:   90,   0,  93,  95, 104, 101,   0,  99,   0,   0,
                    268:  102,   0,  96, 100,  91,  92, 103,   0,   0,   0,
                    269:   94,  90,  64,  56,  95,  61,  20,   0,   0,   0,
                    270:    0,   0,  62,   0,   0,  60,   0,   0,   0,   0,
                    271:    0,   0,   0,   0,   0,   0,   0,  63,   0,   0,
                    272:   58,   0,   0,  59 };
                    273: short yypact[]={
                    274: 
                    275: -1000,-1000,  23,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
                    276: -1000,-1000, 148, 144, 256, 142,  65,-1000,-1000,  66,
                    277: -1000,  24,  18, 141,-1000,   7, 370,-1000,-1000,-1000,
                    278: -1000,-1000,-1000,-1000,   9,-1000, 195,-1000,   1,-1000,
                    279:  108,-1000,  45, 120,-1000,-1000,-1000,-1000, 140,-1000,
                    280:  114, 271, 255, 255, -13,-1000,-1000,-1000, 370, 370,
                    281:  370, 103, 101, 370,-1000,-1000,-1000, 210,-1000,-1000,
                    282:  194,-1000, 270,  47, 188,-1000,  49, 187,  97,  96,
                    283: -1000,   7,-1000,   0,  10,-1000, 219,-1000, 219,-1000,
                    284:  370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
                    285:  370, 370, 370, 370, 370, 370, 370,-1000,-1000,-1000,
                    286: -1000,-1000,-1000, 370, 220, 157, 186, 203,  40, 185,
                    287:  252,-1000, 251, 250, 260,-1000, 119,-1000,  93,-1000,
                    288: -1000,-1000,-1000,  94,-1000,  12,  92,  12, 143, 143,
                    289: -1000,-1000,-1000, 215, 215, 334, 313, 200, 200, 200,
                    290:  200, 200, 200, 288, 263,  60,  38,-1000, 247, 184,
                    291: -1000,-1000, 268,-1000,-1000, 191,  86,-1000, 181, 180,
                    292:    0,-1000, 267,  10, 150,  91,  77, 246, 193,-1000,
                    293: -1000, 159, 245,-1000, 244,-1000, 260, 241, 150,  11,
                    294: -1000,  59,-1000,-1000,-1000, 132, 151,   8, 238,  36,
                    295: -1000, 214, 159,  33,-1000,-1000,-1000,-1000,-1000, 180,
                    296:  258,-1000,-1000,-1000,  32,  28,  27,  25,  22,-1000,
                    297:  179, 213,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
                    298:  236, 176, 159, 232, 217, 159,-1000, 171,-1000, 231,
                    299: -1000 };
                    300: short yypgo[]={
                    301: 
                    302:    0, 261, 347,  36,  45,  49, 181,  32,  43,  40,
                    303:  346,  44,  63,  50, 340,  55, 338, 337, 335, 332,
                    304:  330, 329, 327, 323, 321, 315,  87,  35, 313,  82,
                    305:  312, 310, 307,  54, 305, 304,  38, 302,  51,  41,
                    306:  298, 296, 290, 288, 287,  42, 285, 282, 278, 275 };
                    307: short yyr1[]={
                    308: 
                    309:    0,  17,  18,  18,  19,  19,  19,  19,  19,  19,
                    310:   19,  19,  20,  25,  25,  26,  26,  27,  27,  16,
                    311:   16,  21,  28,  28,  29,  29,  10,  10,   3,  22,
                    312:   31,  31,  33,  33,  34,  34,  34,  32,  32,  35,
                    313:   35,  35,  36,  30,  30,  23,  37,  37,  38,  38,
                    314:   38,  41,  41,  40,  42,   8,  39,  39,  43,  11,
                    315:   11,  12,  12,  13,  13,  14,  14,  14,  14,  14,
                    316:   44,  44,  44,  45,  45,  45,  45,  46,  47,  47,
                    317:   48,  48,   9,   9,   9,   7,   7,   7,   1,   2,
                    318:    2,   2,   2,   2,   5,   5,   5,   5,   5,   5,
                    319:    5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
                    320:    5,   5,  49,  49,  49,  15,  15,  15,  15,  15,
                    321:   15,  15,  15,   4,   4,   6,   6,  24 };
                    322: short yyr2[]={
                    323: 
                    324:    0,   1,   2,   0,   1,   1,   1,   1,   1,   1,
                    325:    1,   1,   4,   1,   2,  11,   1,   1,   0,   3,
                    326:    0,   4,   1,   2,  11,   1,   1,   0,   3,   6,
                    327:    3,   1,   2,   0,   3,   6,   4,   2,   0,   1,
                    328:    3,   0,   3,   1,   0,   4,   1,   3,   1,   1,
                    329:    1,   1,   3,   5,   5,   2,   6,   1,   6,   4,
                    330:    0,   1,   0,   4,   0,   3,   3,   3,   3,   0,
                    331:    1,   3,   0,   2,   1,   1,   1,   1,   4,   0,
                    332:    1,   3,   2,   2,   0,   2,   0,   2,   4,   1,
                    333:    1,   1,   1,   1,   3,   3,   3,   3,   3,   3,
                    334:    3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
                    335:    3,   1,   1,   1,   1,   1,   1,   2,   2,   2,
                    336:    4,   4,   3,   1,   1,   1,   1,   2 };
                    337: short yychk[]={
                    338: 
                    339: -1000, -17, -18, -19, -20, -21, -22, -23,  -1,  -6,
                    340:  -24, 256,  10,   8,  47,  11,  -4,   2,  46,  30,
                    341:    6,  24,  24, -30,   3,  24,  -2,  42,  19,  43,
                    342:   44,  45,  -6,   2, -25, -26,   2, 256, -28, -29,
                    343:    2, 256,  24, -37, -38, -39, -40,  -8, -43, 256,
                    344:  -42,  30,   2,  55,  -5, -15,   3,  -4,  30,  33,
                    345:   15,   5,  12,  27,   2,  38, -26,  16,  38, -29,
                    346:  -10,  -3,  27, -31,  48, -33, -34,   7,  56,  57,
                    347:   38, -27,  17,  24,  24,   2, -12,   3, -12, -49,
                    348:   37,  30,  31,  18,  36,  40,  28,  13,  34,  23,
                    349:   29,  21,  26,  32,  20,  14,  35,  41,  17, 256,
                    350:  -15, -15, -15,  27,  27,  -5,   9,  16,   2,  38,
                    351:   19, -33,  19,  27,  27, -38, -44, -45, -46,  -8,
                    352:   -1, 256,  -6, -41, -39, -13,   5, -13,  -5,  -5,
                    353:   -5,  -5,  -5,  -5,  -5,  -5,  -5,  -5,  -5,  -5,
                    354:   -5,  -5,  -5,  -5,  -5,  -5,  -4,  39,  19,   9,
                    355:   39, -32,  19,   3,   3,   3, -35, -36,   2,  38,
                    356:  -27, -47,  27, -27,  38, -11,  53,  27, -11,  39,
                    357:   39,   3,  19,   2,  17,  39, -27,  19,  -7,  19,
                    358:  -45, -48,   2, -39,  -9,  23, -14,  27,  27,   3,
                    359:   16, -27,   3,   3, -36,   3,  -9,   3, 256,  39,
                    360:  -27,   2,  -3,  16,  49,  50,  51,  52,   3,  39,
                    361:    7, -27,  39,  -7,   2,  39,  39,  39,  39,  39,
                    362:   19,   7,   3,  19, -27,   3, -16,   6, -27,  19,
                    363:    3 };
                    364: short yydef[]={
                    365: 
                    366:    3,  -2,   1,   2,   4,   5,   6,   7,   8,   9,
                    367:   10,  11,   0,   0,  44,   0,   0,  -2, 126,   0,
                    368:  124,   0,   0,   0,  43,   0,   0,  89,  90,  91,
                    369:   92,  93, 127, 125,   0,  13,   0,  16,   0,  22,
                    370:   27,  25,  33,  18,  46,  48,  49,  50,   0,  57,
                    371:    0,   0,  62,  62,   0, 111, 115, 116,   0,   0,
                    372:    0,   0,   0,   0, 123,  12,  14,   0,  21,  23,
                    373:    0,  26,   0,   0,   0,  31,  33,   0,   0,   0,
                    374:   45,   0,  17,  72,   0,  55,  64,  61,  64,  88,
                    375:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
                    376:    0,   0,   0,   0,   0,   0,   0, 112, 113, 114,
                    377:  117, 118, 119,   0,   0,   0,   0,   0,   0,  38,
                    378:    0,  32,   0,   0,  41,  47,  18,  70,  79,  74,
                    379:   75,  76,  77,  18,  51,  60,   0,  60,  94,  95,
                    380:   96,  97,  98,  99, 100, 101, 102,  -2,  -2,  -2,
                    381:   -2,  -2,  -2, 109, 110,   0,   0, 122,   0,   0,
                    382:   28,  29,   0,  30,  34,   0,  18,  39,   0,  86,
                    383:    0,  73,   0,   0,  84,  69,   0,   0,   0, 120,
                    384:  121,  18,   0,  37,   0,  36,   0,   0,  84,   0,
                    385:   71,  18,  80,  52,  53,   0,   0,   0,   0,   0,
                    386:   54,   0,  18,   0,  40,  42,  56,  85,  87,  86,
                    387:    0,  82,  83,  58,   0,   0,   0,   0,   0,  63,
                    388:    0,   0,  35,  78,  81,  65,  66,  67,  68,  59,
                    389:    0,   0,  18,   0,  20,  18,  15,   0,  24,   0,
                    390:   19 };
                    391: #ifndef lint
                    392: static char yaccpar_sccsid[] = "@(#)yaccpar 1.6 88/02/08 SMI"; /* from UCB 4.1 83/02/11 */
                    393: #endif
                    394: 
                    395: #
                    396: # define YYFLAG -1000
                    397: # define YYERROR goto yyerrlab
                    398: # define YYACCEPT return(0)
                    399: # define YYABORT return(1)
                    400: 
                    401: /*     parser for yacc output  */
                    402: 
                    403: #ifdef YYDEBUG
                    404: int yydebug = 0; /* 1 for debugging */
                    405: #endif
                    406: YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */
                    407: int yychar = -1; /* current input token number */
                    408: int yynerrs = 0;  /* number of errors */
                    409: short yyerrflag = 0;  /* error recovery flag */
                    410: 
                    411: yyparse() {
                    412: 
                    413:        short yys[YYMAXDEPTH];
                    414:        short yyj, yym;
                    415:        register YYSTYPE *yypvt;
                    416:        register short yystate, *yyps, yyn;
                    417:        register YYSTYPE *yypv;
                    418:        register short *yyxi;
                    419: 
                    420:        yystate = 0;
                    421:        yychar = -1;
                    422:        yynerrs = 0;
                    423:        yyerrflag = 0;
                    424:        yyps= &yys[-1];
                    425:        yypv= &yyv[-1];
                    426: 
                    427:  yystack:    /* put a state and value onto the stack */
                    428: 
                    429: #ifdef YYDEBUG
                    430:        if( yydebug  ) printf( "state %d, char 0%o\n", yystate, yychar );
                    431: #endif
                    432:                if( ++yyps>= &yys[YYMAXDEPTH] ) { yyerror( "yacc stack overflow" ); return(1); }
                    433:                *yyps = yystate;
                    434:                ++yypv;
                    435:                *yypv = yyval;
                    436: 
                    437:  yynewstate:
                    438: 
                    439:        yyn = yypact[yystate];
                    440: 
                    441:        if( yyn<= YYFLAG ) goto yydefault; /* simple state */
                    442: 
                    443:        if( yychar<0 ) if( (yychar=yylex())<0 ) yychar=0;
                    444:        if( (yyn += yychar)<0 || yyn >= YYLAST ) goto yydefault;
                    445: 
                    446:        if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */
                    447:                yychar = -1;
                    448:                yyval = yylval;
                    449:                yystate = yyn;
                    450:                if( yyerrflag > 0 ) --yyerrflag;
                    451:                goto yystack;
                    452:                }
                    453: 
                    454:  yydefault:
                    455:        /* default state action */
                    456: 
                    457:        if( (yyn=yydef[yystate]) == -2 ) {
                    458:                if( yychar<0 ) if( (yychar=yylex())<0 ) yychar = 0;
                    459:                /* look through exception table */
                    460: 
                    461:                for( yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate) ; yyxi += 2 ) ; /* VOID */
                    462: 
                    463:                while( *(yyxi+=2) >= 0 ){
                    464:                        if( *yyxi == yychar ) break;
                    465:                        }
                    466:                if( (yyn = yyxi[1]) < 0 ) return(0);   /* accept */
                    467:                }
                    468: 
                    469:        if( yyn == 0 ){ /* error */
                    470:                /* error ... attempt to resume parsing */
                    471: 
                    472:                switch( yyerrflag ){
                    473: 
                    474:                case 0:   /* brand new error */
                    475: 
                    476:                        yyerror( "syntax error" );
                    477:                yyerrlab:
                    478:                        ++yynerrs;
                    479: 
                    480:                case 1:
                    481:                case 2: /* incompletely recovered error ... try again */
                    482: 
                    483:                        yyerrflag = 3;
                    484: 
                    485:                        /* find a state where "error" is a legal shift action */
                    486: 
                    487:                        while ( yyps >= yys ) {
                    488:                           yyn = yypact[*yyps] + YYERRCODE;
                    489:                           if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){
                    490:                              yystate = yyact[yyn];  /* simulate a shift of "error" */
                    491:                              goto yystack;
                    492:                              }
                    493:                           yyn = yypact[*yyps];
                    494: 
                    495:                           /* the current yyps has no shift onn "error", pop stack */
                    496: 
                    497: #ifdef YYDEBUG
                    498:                           if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] );
                    499: #endif
                    500:                           --yyps;
                    501:                           --yypv;
                    502:                           }
                    503: 
                    504:                        /* there is no state on the stack with an error shift ... abort */
                    505: 
                    506:        yyabort:
                    507:                        return(1);
                    508: 
                    509: 
                    510:                case 3:  /* no shift yet; clobber input char */
                    511: 
                    512: #ifdef YYDEBUG
                    513:                        if( yydebug ) printf( "error recovery discards char %d\n", yychar );
                    514: #endif
                    515: 
                    516:                        if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */
                    517:                        yychar = -1;
                    518:                        goto yynewstate;   /* try again in the same state */
                    519: 
                    520:                        }
                    521: 
                    522:                }
                    523: 
                    524:        /* reduction by production yyn */
                    525: 
                    526: #ifdef YYDEBUG
                    527:                if( yydebug ) printf("reduce %d\n",yyn);
                    528: #endif
                    529:                yyps -= yyr2[yyn];
                    530:                yypvt = yypv;
                    531:                yypv -= yyr2[yyn];
                    532:                yyval = yypv[1];
                    533:                yym=yyn;
                    534:                        /* consult goto table to find next state */
                    535:                yyn = yyr1[yyn];
                    536:                yyj = yypgo[yyn] + *yyps + 1;
                    537:                if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]];
                    538:                switch(yym){
                    539:                        
                    540: case 1:
                    541: # line 178 "ld.yac"
                    542:  ; break;
                    543: case 3:
                    544: # line 182 "ld.yac"
                    545:  ; break;
                    546: case 8:
                    547: # line 188 "ld.yac"
                    548:  {
                    549:                        bldexp(yypvt[-0].enode, &explist);
                    550:                        } break;
                    551: case 9:
                    552: # line 191 "ld.yac"
                    553:  {
                    554:                        filespec(yypvt[-0].sptr);
                    555:                        } break;
                    556: case 11:
                    557: # line 195 "ld.yac"
                    558:  {
                    559:                        for( tempi = lineno; tempi == lineno; )
                    560:                                yychar = yylex();
                    561:                        yyerrok;
                    562:                        yyclearin;
                    563:                        } break;
                    564: case 12:
                    565: # line 203 "ld.yac"
                    566:  {
                    567: #if USEREGIONS == 0
                    568:                        yyerror("REGIONS command not allowed in a %s load", SGS);
                    569: #endif
                    570:                        } break;
                    571: case 14:
                    572: # line 211 "ld.yac"
                    573:  ; break;
                    574: case 15:
                    575: # line 213 "ld.yac"
                    576:  {
                    577:                        long *orgp, *lenp, *vaddrp, vzero;
                    578:                        REGION *rgnp;
                    579:                        orgp = yypvt[-6].lptr;
                    580:                        lenp = yypvt[-2].lptr;
                    581:                        if (*lenp <= 0)
                    582:                                yyerror("region %s has invalid length",yypvt[-10].sptr);
                    583:                        if ( (vaddrp = yypvt[-0].lptr) == NULL )
                    584:                                vzero = *orgp;
                    585:                        else
                    586:                                vzero = *orgp - *vaddrp;
                    587:                        if ( (vzero & 0xfL) != 0 ) {
                    588:                                yyerror("virtual 0 (paddr %.1lx) of region %s is not a multiple of 16",
                    589:                                        vzero, yypvt[-10].sptr);
                    590:                                vzero &= ~0xfL;
                    591:                                }
                    592:                        rgnp = (REGION *) myalloc(sizeof(REGION));
                    593:                        rgnp->rgorig = *orgp;
                    594:                        rgnp->rglength = *lenp;
                    595:                        rgnp->rgvaddr = (vaddrp == NULL) ? 0L : *vaddrp;
                    596:                        if( (rgnp->rgvaddr + rgnp->rglength) > 0x10000L ) {
                    597:                                yyerror("addresses of region %s (vaddr=%.1lx  len=%.1lx) exceed 64K",
                    598:                                        yypvt[-10].sptr, rgnp->rgvaddr, *lenp);
                    599:                                rgnp->rglength = 0x10000L - rgnp->rgvaddr;
                    600:                                }
                    601:                        strncpy( rgnp->rgname, yypvt[-10].sptr, 8 );
                    602:                        listadd(l_REG, &reglist, rgnp);
                    603:                        } break;
                    604: case 16:
                    605: # line 241 "ld.yac"
                    606:  {
                    607:                        yyerror("REGIONS specification ignored");
                    608:                        } break;
                    609: case 18:
                    610: # line 248 "ld.yac"
                    611:  ; break;
                    612: case 19:
                    613: # line 250 "ld.yac"
                    614:  {
                    615:                        if ( *(long *) yypvt[-0].lptr > 0xffffL ) {
                    616:                                yyerror("virtual address %.1lx exceeds 0xffff: truncated to %.1lx",
                    617:                                        *(long *) yypvt[-0].lptr, *(long *) yypvt[-0].lptr & 0xffffL);
                    618:                                *(long *) yypvt[-0].lptr &= 0xffffL;
                    619:                                }
                    620:                        yyval.lptr = yypvt[-0].lptr;
                    621:                        } break;
                    622: case 20:
                    623: # line 259 "ld.yac"
                    624:  {
                    625:                        yyval.lptr = NULL;
                    626:                        } break;
                    627: case 21:
                    628: # line 264 "ld.yac"
                    629:  
                    630:                ; break;
                    631: case 23:
                    632: # line 268 "ld.yac"
                    633:  ; break;
                    634: case 24:
                    635: # line 270 "ld.yac"
                    636:  {
                    637:                        long *orgp, *lenp;
                    638:                        MEMTYPE *memp;
                    639:                        orgp = yypvt[-5].lptr;
                    640:                        lenp = yypvt[-1].lptr;
                    641:                        memp = (MEMTYPE *) myalloc(sizeof(MEMTYPE));
                    642:                        memp->mtorig = *orgp;
                    643:                        memp->mtlength = *lenp;
                    644:                        memp->mtattr = yypvt[-9].ivalue;
                    645:                        strncpy( memp->mtname, yypvt[-10].sptr, 8 );
                    646:                        listadd(l_MEM, &memlist, memp);
                    647:                        } break;
                    648: case 25:
                    649: # line 282 "ld.yac"
                    650:  {
                    651:                        yyerror("MEMORY specification ignored");
                    652:                        } break;
                    653: case 26:
                    654: # line 287 "ld.yac"
                    655:  {
                    656:                        yyval.ivalue = yypvt[-0].ivalue;
                    657:                        } break;
                    658: case 27:
                    659: # line 290 "ld.yac"
                    660:  {                     /* empty */
                    661:                        yyval.ivalue = att_R | att_W | att_X | att_I;
                    662:                        } break;
                    663: case 28:
                    664: # line 295 "ld.yac"
                    665:   { 
                    666:                        int attflgs;
                    667:                        char *p;
                    668:                        attflgs = 0;
                    669:                        for( p = yypvt[-1].sptr; *p; p++ )
                    670:                                switch (*p) {
                    671:                                case 'R': attflgs |= att_R; break;
                    672:                                case 'W': attflgs |= att_W; break;
                    673:                                case 'X': attflgs |= att_X; break;
                    674:                                case 'I': attflgs |= att_I; break;
                    675:                                default:  yyerror("bad attribute value in MEMORY directive: %c", *p);
                    676:                                }
                    677:                        yyval.ivalue = attflgs;
                    678:                        } break;
                    679: case 29:
                    680: # line 311 "ld.yac"
                    681:  {
                    682: #if TRVEC
                    683:                        int length;
                    684: 
                    685:                        tvspec.tvinflnm = curfilnm;
                    686:                        tvspec.tvinlnno = lineno;
                    687: 
                    688:                        length = 0;
                    689:                        for( slotptr = tvslot1; slotptr != NULL; slotptr = slotptr->nxtslot ) {
                    690:                                TVASSIGN *slotptr2;
                    691:                                length = max(length, slotptr->slot);
                    692:                                for (slotptr2 = tvslot1; slotptr2 != slotptr; slotptr2 = slotptr2->nxtslot )
                    693:                                        if (slotptr2->slot == slotptr->slot) {
                    694:                                                lderror(1,0,NULL,
                    695:                                                "function %s assigned to tv slot %d which is already in use", slotptr->funname, slotptr->slot);
                    696:                                                break;
                    697:                                                }
                    698:                                }
                    699:                        if( tvspec.tvlength > 0 ) {
                    700:                                if( length > tvspec.tvlength ) {
                    701:                                        yyerror("ASSIGN slot %d exceeds total TV size of %d",
                    702:                                                length, tvspec.tvlength);
                    703:                                        tvspec.tvlength = length;
                    704:                                        }
                    705:                                if( tvspec.tvrange[1] > tvspec.tvlength ) {
                    706:                                        yyerror("RANGE value %d exceeds total TV size of %d",
                    707:                                                tvspec.tvrange[1], tvspec.tvlength);
                    708:                                        tvspec.tvlength = tvspec.tvrange[1];
                    709:                                        }
                    710:                                }
                    711:                        else
                    712:                                tvspec.tvlength = max(length, tvspec.tvrange[1]);
                    713: #else
                    714:                        yyerror("usage of unimplemented syntax");
                    715: #endif
                    716:                        } break;
                    717: case 30:
                    718: # line 349 "ld.yac"
                    719:  {
                    720: #if TRVEC
                    721:                        tvspec.tvosptr = (OUTSECT *) ((unsigned) *(long *) yypvt[-0].lptr);
                    722: #else
                    723:                        yyerror("usage of unimplemented syntax");
                    724: #endif
                    725:                        } break;
                    726: case 34:
                    727: # line 363 "ld.yac"
                    728:  {
                    729: #if TRVEC
                    730:                        if( tvspec.tvlength > 0 )
                    731:                                yyerror("illegal multiple LENGTH fields in the TV directive");
                    732:                        tvspec.tvlength = (int) (*(long *) yypvt[-0].lptr);
                    733: #else
                    734:                        yyerror("usage of unimplemented syntax");
                    735: #endif
                    736:                        } break;
                    737: case 35:
                    738: # line 372 "ld.yac"
                    739:  {
                    740: #if TRVEC
                    741:                        if( tvspec.tvrange[1] > 0 )
                    742:                                yyerror("illegal multiple RANGE fields in the TV directive");
                    743:                        if( tvspec.tvrange[0] < 0 || tvspec.tvrange[0] > tvspec.tvrange[1] )
                    744:                                yyerror("illegal RANGE syntax: r[0]<0 or r[0]>r[1]");
                    745:                        else {
                    746:                                tvspec.tvrange[0] = (int) (*(long *) yypvt[-3].lptr);
                    747:                                tvspec.tvrange[1] = (int) (*(long *) yypvt[-1].lptr);
                    748:                                }
                    749: #else
                    750:                        yyerror("usage of unimplemented syntax");
                    751: #endif
                    752:                        } break;
                    753: case 37:
                    754: # line 389 "ld.yac"
                    755:  {
                    756: #if TRVEC
                    757: #if FLEXNAMES
                    758:                        tvspec.tvfnfill = savefn(yypvt[-0].sptr);
                    759: #else
                    760:                        strncpy(tvspec.tvfnfill, yypvt[-0].sptr, 8 );
                    761: #endif
                    762: #else
                    763:                        yyerror("usage of unimplemented syntax");
                    764: #endif
                    765:                        } break;
                    766: case 42:
                    767: # line 407 "ld.yac"
                    768:  {
                    769: #if TRVEC
                    770:                        if( (int) (*(long *) yypvt[-0].lptr) == 0 )
                    771:                                yyerror("illegal ASSIGN slot number (0)");
                    772:                        if( tvslot1 == NULL )
                    773:                                tvslot1 = tvslotn = (TVASSIGN *) myalloc(sizeof(TVASSIGN));
                    774:                        else
                    775:                                tvslotn = tvslotn->nxtslot = (TVASSIGN *) myalloc(sizeof(TVASSIGN));
                    776: #if FLEXNAMES
                    777:                        tvslotn->funname = savefn(yypvt[-2].sptr);
                    778: #else
                    779:                        strncpy(tvslotn->funname, yypvt[-2].sptr, 8);
                    780: #endif
                    781:                        tvslotn->slot = (int) (*(long *) yypvt[-0].lptr);
                    782:                        tvslotn->nxtslot = NULL;
                    783: #else
                    784:                        yyerror("usage of unimplemented syntax");
                    785: #endif
                    786:                } break;
                    787: case 43:
                    788: # line 428 "ld.yac"
                    789:  {
                    790:                        long org;
                    791:                        org = *(long *) yypvt[-0].lptr;
                    792: #if TRVEC
                    793:                        chktvorg(org, &(tvspec.tvbndadr));
                    794: #endif
                    795:                        } break;
                    796: case 45:
                    797: # line 438 "ld.yac"
                    798:  
                    799:                ; break;
                    800: case 53:
                    801: # line 454 "ld.yac"
                    802:  {
                    803:                        listadd(l_AI,&bldoutsc,grptr);
                    804:                        grptr = NULL;
                    805:                        } break;
                    806: case 54:
                    807: # line 460 "ld.yac"
                    808:  {
                    809:                        if ( yypvt[-3].lptr != NULL && yypvt[-2].lptr != NULL )
                    810:                                yyerror("bonding excludes alignment");
                    811:                        grptr = dfnscngrp(AIDFNGRP, (long *)yypvt[-3].lptr, (long *)yypvt[-2].lptr, (long *)yypvt[-1].lptr);
                    812:                        strncpy( grptr->dfnscn.ainame, "*group*", 8 );
                    813:                        } break;
                    814: case 55:
                    815: # line 468 "ld.yac"
                    816:  {
                    817:                        char *fp;
                    818:                        fp = yypvt[-0].sptr;
                    819:                        if (fp[0] == 'l')       /* library flag */
                    820:                                library(fp);
                    821:                        else
                    822:                                yyerror("bad flag value in SECTIONS directive: -%s", yypvt[-0].sptr);
                    823:                        } break;
                    824: case 56:
                    825: # line 478 "ld.yac"
                    826:  {
                    827:                        if (aiptr == NULL)
                    828:                                goto scnerr;
                    829:                        aiptr->dfnscn.aifill = yypvt[-1].ivalue;
                    830:                        aiptr->dfnscn.aifillfg = fillflag;
                    831:                        listadd(l_AI,grptr ? &grptr->dfnscn.sectspec : &bldoutsc,aiptr);
                    832:                        if (grptr && yypvt[-0].ivalue)
                    833:                                yyerror("can not specify an owner for section within a group");
                    834:                        aiptr = NULL;
                    835:                } break;
                    836: case 57:
                    837: # line 488 "ld.yac"
                    838:  {
                    839:                        if (aiptr)
                    840:                                yyerror("section %s not built", aiptr->dfnscn.ainame);
                    841:                scnerr:
                    842:                        aiptr = NULL;
                    843:                        } break;
                    844: case 58:
                    845: # line 496 "ld.yac"
                    846:  {
                    847:                        secnum++;
                    848:                        if ( OKSCNNAME(yypvt[-5].sptr) == 0 )
                    849:                                yyerror("%s is a reserved section name", yypvt[-5].sptr);
                    850:                        if ( yypvt[-4].lptr != NULL && yypvt[-3].lptr != NULL )
                    851:                                yyerror("bonding excludes alignment");
                    852:                        aiptr = dfnscngrp(AIDFNSCN, (long *)yypvt[-4].lptr, (long *)yypvt[-3].lptr, (long *)yypvt[-2].lptr);
                    853:                        if (grptr && aiptr->dfnscn.aibndadr != -1L)
                    854:                                yyerror("can not bond a section within a group");
                    855:                        if (grptr && aiptr->dfnscn.aialign != 0L)
                    856:                                yyerror("can not align a section within a group");
                    857:                        aiptr->dfnscn.aisctype = yypvt[-1].ivalue;
                    858:                        strncpy( aiptr->dfnscn.ainame, yypvt[-5].sptr, 8 );
                    859:                        } break;
                    860: case 59:
                    861: # line 512 "ld.yac"
                    862:  {
                    863:                        yyval.lptr = yypvt[-1].lptr;
                    864:                        } break;
                    865: case 60:
                    866: # line 515 "ld.yac"
                    867:  {                     /* empty */
                    868:                        yyval.lptr = NULL;
                    869:                        } break;
                    870: case 61:
                    871: # line 520 "ld.yac"
                    872:  {
                    873:                        yyval.lptr = yypvt[-0].lptr;
                    874:                        } break;
                    875: case 62:
                    876: # line 523 "ld.yac"
                    877:  {                     /* empty */
                    878:                        yyval.lptr = NULL;
                    879:                        } break;
                    880: case 63:
                    881: # line 528 "ld.yac"
                    882:  {
                    883:                        yyval.lptr = yypvt[-1].lptr;
                    884:                        } break;
                    885: case 64:
                    886: # line 531 "ld.yac"
                    887:  {                     /* empty */
                    888:                        yyval.lptr = NULL;
                    889:                        } break;
                    890: case 65:
                    891: # line 536 "ld.yac"
                    892:  {
                    893:                        yyval.ivalue = STYP_DSECT;
                    894:                        } break;
                    895: case 66:
                    896: # line 539 "ld.yac"
                    897:  {
                    898:                        yyval.ivalue = STYP_NOLOAD;
                    899:                        } break;
                    900: case 67:
                    901: # line 542 "ld.yac"
                    902:  {
                    903:                        yyval.ivalue = STYP_COPY | STYP_DSECT;
                    904:                        } break;
                    905: case 68:
                    906: # line 545 "ld.yac"
                    907:  {
                    908:                        yyval.ivalue = STYP_INFO | STYP_DSECT;
                    909:                        } break;
                    910: case 69:
                    911: # line 548 "ld.yac"
                    912:  {                     /* empty */
                    913:                        yyval.ivalue = STYP_REG;
                    914:                        } break;
                    915: case 74:
                    916: # line 559 "ld.yac"
                    917:  {
                    918:                        bldadfil( ((ACTITEM *) ldfilist.tail)->ldlbry.aifilnam, aiptr );
                    919:                        } break;
                    920: case 75:
                    921: # line 562 "ld.yac"
                    922:  {
                    923:                        bldexp(yypvt[-0].enode,&aiptr->dfnscn.sectspec);
                    924:                        } break;
                    925: case 76:
                    926: # line 565 "ld.yac"
                    927:  {
                    928:                        in_y_exp = 0;
                    929:                        yyerror("statement ignored");
                    930:                        for( tempi = lineno; ((int)yychar > 0) && (tempi == lineno) ; )
                    931:                                yychar = yylex();
                    932:                        if ((int) yychar <= 0)
                    933:                                lderror(2,0,NULL, "unexpected EOF");
                    934:                        yyerrok;
                    935:                        yyclearin;
                    936:                        } break;
                    937: case 77:
                    938: # line 577 "ld.yac"
                    939:  {
                    940:                        fnamptr = savefn(yypvt[-0].sptr);
                    941:                        nsecspcs = 0;
                    942:                        bldldfil(fnamptr,0);
                    943:                        afaiptr = bldadfil(fnamptr,aiptr);
                    944:                        } break;
                    945: case 78:
                    946: # line 584 "ld.yac"
                    947:  {
                    948:                        afaiptr->adfile.ainadscs = nsecspcs;
                    949:                        afaiptr->adfile.aifilflg = fillflag;
                    950:                        afaiptr->adfile.aifill2 = yypvt[-0].ivalue;
                    951:                        } break;
                    952: case 80:
                    953: # line 592 "ld.yac"
                    954:  {
                    955:                        nsecspcs++;
                    956:                        bldadscn(yypvt[-0].sptr,fnamptr,aiptr);
                    957:                        } break;
                    958: case 81:
                    959: # line 596 "ld.yac"
                    960:  {
                    961:                        nsecspcs++;
                    962:                        bldadscn(yypvt[-0].sptr,fnamptr,aiptr);
                    963:                        } break;
                    964: case 82:
                    965: # line 602 "ld.yac"
                    966:  {
                    967:                        if (grptr)
                    968:                                strncpy( grptr->dfnscn.aiowname, yypvt[-0].sptr, 8 );
                    969:                        else
                    970:                                strncpy( aiptr->dfnscn.aiowname, yypvt[-0].sptr, 8 );
                    971:                        yyval.ivalue = 1;
                    972:                        } break;
                    973: case 83:
                    974: # line 609 "ld.yac"
                    975:  {
                    976:                        if (grptr)
                    977:                                grptr->dfnscn.aiattown = yypvt[-0].ivalue;
                    978:                        else
                    979:                                aiptr->dfnscn.aiattown = yypvt[-0].ivalue;
                    980:                        yyval.ivalue = 1;
                    981:                        } break;
                    982: case 84:
                    983: # line 616 "ld.yac"
                    984:  {                             /* empty */ 
                    985:                        yyval.ivalue = 0;
                    986:                        } break;
                    987: case 85:
                    988: # line 621 "ld.yac"
                    989:  {
                    990:                        fillflag = 1;
                    991:                        yyval.ivalue = (int) (*(long *)yypvt[-0].lptr);
                    992:                        } break;
                    993: case 86:
                    994: # line 625 "ld.yac"
                    995:  {                             /* empty */
                    996:                        fillflag = 0;
                    997:                        yyval.ivalue = 0;
                    998:                        } break;
                    999: case 87:
                   1000: # line 629 "ld.yac"
                   1001:  {
                   1002:                        yyerror("bad fill value");
                   1003:                        fillflag = 0;
                   1004:                        yyerrok;
                   1005:                        yyclearin;
                   1006:                        yyval.ivalue = 0;
                   1007:                        } break;
                   1008: case 88:
                   1009: # line 638 "ld.yac"
                   1010:  {
                   1011:                        in_y_exp = 0;
                   1012:                        if ( yypvt[-2].ivalue == EQ )
                   1013:                                yyval.enode = buildtree(EQ, yypvt[-3].enode, yypvt[-1].enode);
                   1014:                        else {
                   1015:                                ENODE *p,*ndp;
                   1016:                                ndp = buildtree(yypvt[-2].ivalue,yypvt[-3].enode,yypvt[-1].enode);
                   1017:                                p = (ENODE *) myalloc(sizeof(ENODE));
                   1018:                                *p = *yypvt[-3].enode;
                   1019:                                yyval.enode = buildtree(EQ,p,ndp);
                   1020:                                }
                   1021:                        } break;
                   1022: case 89:
                   1023: # line 652 "ld.yac"
                   1024:                { yyval.ivalue = DIV;   in_y_exp = TRUE; } break;
                   1025: case 90:
                   1026: # line 653 "ld.yac"
                   1027:                { yyval.ivalue = EQ;    in_y_exp = TRUE; } break;
                   1028: case 91:
                   1029: # line 654 "ld.yac"
                   1030:        { yyval.ivalue = MINUS; in_y_exp = TRUE; } break;
                   1031: case 92:
                   1032: # line 655 "ld.yac"
                   1033:        { yyval.ivalue = MULT;  in_y_exp = TRUE; } break;
                   1034: case 93:
                   1035: # line 656 "ld.yac"
                   1036:        { yyval.ivalue = PLUS;  in_y_exp = TRUE; } break;
                   1037: case 94:
                   1038: # line 659 "ld.yac"
                   1039:  {
                   1040:                        bop:
                   1041:                                yyval.enode = buildtree(yypvt[-1].ivalue,yypvt[-2].enode,yypvt[-0].enode);
                   1042:                        } break;
                   1043: case 95:
                   1044: # line 663 "ld.yac"
                   1045:  { goto bop; } break;
                   1046: case 96:
                   1047: # line 664 "ld.yac"
                   1048:  { goto bop; } break;
                   1049: case 97:
                   1050: # line 665 "ld.yac"
                   1051:  { goto bop; } break;
                   1052: case 98:
                   1053: # line 666 "ld.yac"
                   1054:  { goto bop; } break;
                   1055: case 99:
                   1056: # line 667 "ld.yac"
                   1057:  { goto bop; } break;
                   1058: case 100:
                   1059: # line 668 "ld.yac"
                   1060:  { goto bop; } break;
                   1061: case 101:
                   1062: # line 669 "ld.yac"
                   1063:  { goto bop; } break;
                   1064: case 102:
                   1065: # line 670 "ld.yac"
                   1066:  { goto bop; } break;
                   1067: case 103:
                   1068: # line 671 "ld.yac"
                   1069:  { goto bop; } break;
                   1070: case 104:
                   1071: # line 672 "ld.yac"
                   1072:  { goto bop; } break;
                   1073: case 105:
                   1074: # line 673 "ld.yac"
                   1075:  { goto bop; } break;
                   1076: case 106:
                   1077: # line 674 "ld.yac"
                   1078:  { goto bop; } break;
                   1079: case 107:
                   1080: # line 675 "ld.yac"
                   1081:  { goto bop; } break;
                   1082: case 108:
                   1083: # line 676 "ld.yac"
                   1084:  { goto bop; } break;
                   1085: case 109:
                   1086: # line 677 "ld.yac"
                   1087:  { goto bop; } break;
                   1088: case 110:
                   1089: # line 678 "ld.yac"
                   1090:  { goto bop; } break;
                   1091: case 111:
                   1092: # line 679 "ld.yac"
                   1093:  {
                   1094:                        yyval.enode = yypvt[-0].enode;
                   1095:                        } break;
                   1096: case 114:
                   1097: # line 686 "ld.yac"
                   1098:  {
                   1099:                        yyerror ("semicolon required after expression");
                   1100:                        } break;
                   1101: case 115:
                   1102: # line 691 "ld.yac"
                   1103:  {
                   1104:                        yyval.enode = cnstnode(*(long *) yypvt[-0].lptr);
                   1105:                        } break;
                   1106: case 116:
                   1107: # line 694 "ld.yac"
                   1108:  {
                   1109:                        yyval.enode = yypvt[-0].enode;
                   1110:                        } break;
                   1111: case 117:
                   1112: # line 697 "ld.yac"
                   1113:  {
                   1114:                        yyval.enode = buildtree(UMINUS,yypvt[-0].enode,NULL);
                   1115:                        } break;
                   1116: case 118:
                   1117: # line 700 "ld.yac"
                   1118:  {
                   1119:                        yyval.enode = buildtree(yypvt[-1].ivalue,yypvt[-0].enode,NULL);
                   1120:                        } break;
                   1121: case 119:
                   1122: # line 703 "ld.yac"
                   1123:  {
                   1124:                        yyval.enode = buildtree(BNOT,yypvt[-1].ivalue,NULL);
                   1125:                        } break;
                   1126: case 120:
                   1127: # line 706 "ld.yac"
                   1128:  {
                   1129:                        yyval.enode = buildtree(yypvt[-3].ivalue,yypvt[-1].enode,NULL);
                   1130:                        } break;
                   1131: case 121:
                   1132: # line 709 "ld.yac"
                   1133:  {
                   1134:                        yyval.enode = buildtree(yypvt[-3].ivalue,yypvt[-1].enode,NULL);
                   1135:                        } break;
                   1136: case 122:
                   1137: # line 712 "ld.yac"
                   1138:  {
                   1139:                        yyval.enode = yypvt[-1].enode;
                   1140:                        } break;
                   1141: case 123:
                   1142: # line 717 "ld.yac"
                   1143:        {
                   1144:                        yyval.enode = symnode(yypvt[-0].sptr);
                   1145:                        } break;
                   1146: case 124:
                   1147: # line 720 "ld.yac"
                   1148:        {
                   1149:                        yyval.enode = symnode(NULL);
                   1150:                        } break;
                   1151: case 125:
                   1152: # line 725 "ld.yac"
                   1153:  {
                   1154:                        yyval.sptr = yypvt[-0].sptr;
                   1155:                        } break;
                   1156: case 126:
                   1157: # line 728 "ld.yac"
                   1158:  {
                   1159:                        yyval.sptr = yypvt[-0].sptr;
                   1160:                        } break;
                   1161: case 127:
                   1162: # line 733 "ld.yac"
                   1163:  {
                   1164:                        pflags(yypvt[-0].sptr, TRUE);
                   1165:                        } break;
                   1166:                }
                   1167:                goto yystack;  /* stack new state and value */
                   1168: 
                   1169:        }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.