void match_trail(void) { int i, a, nst; Element *dothis; char snap[512], *q; /* * if source model name is leader.pml * look for the trail file under these names: * leader.pml.trail * leader.pml.tra * leader.trail * leader.tra */ if (ntrail) sprintf(snap, "%s%d.trail", oFname->name, ntrail); else sprintf(snap, "%s.trail", oFname->name); if ((fd = fopen(snap, "r")) == NULL) { snap[strlen(snap)-2] = '\0'; /* .tra */ if ((fd = fopen(snap, "r")) == NULL) { if ((q = strchr(oFname->name, '.')) != NULL) { *q = '\0'; if (ntrail) sprintf(snap, "%s%d.trail", oFname->name, ntrail); else sprintf(snap, "%s.trail", oFname->name); *q = '.'; if ((fd = fopen(snap, "r")) != NULL) goto okay; snap[strlen(snap)-2] = '\0'; /* last try */ if ((fd = fopen(snap, "r")) != NULL) goto okay; } printf("spin: cannot find trail file\n"); alldone(1); } } okay: if (xspin == 0 && newer(oFname->name, snap)) printf("spin: warning, \"%s\" is newer than %s\n", oFname->name, snap); Tval = 1; /* * sets Tval because timeouts may be part of trail * this used to also set m_loss to 1, but that is * better handled with the runtime -m flag */ hookup(); while (fscanf(fd, "%d:%d:%d\n", &depth, &pno, &nst) == 3) { if (depth == -2) { start_claim(pno); continue; } if (depth == -4) { merger = 1; ana_src(0, 1); continue; } if (depth == -1) { if (verbose) { if (columns == 2) dotag(stdout, " CYCLE>\n"); else dotag(stdout, "<<<<<START OF CYCLE>>>>>\n"); } continue; } if (cutoff > 0 && depth >= cutoff) { printf("-------------\n"); printf("depth-limit (-u%d steps) reached\n", cutoff); break; } if (Skip_claim && pno == 0) continue; for (dothis = Al_El; dothis; dothis = dothis->Nxt) { if (dothis->Seqno == nst) break; } if (!dothis) { printf("%3d: proc %d, no matching stmnt %d\n", depth, pno - Have_claim, nst); lost_trail(); } i = nproc - nstop + Skip_claim; if (dothis->n->ntyp == '@') { if (pno == i-1) { run = run->nxt; nstop++; if (verbose&4) { if (columns == 2) { dotag(stdout, "<end>\n"); continue; } if (Have_claim && pno == 0) printf("%3d: claim terminates\n", depth); else printf("%3d: proc %d terminates\n", depth, pno - Have_claim); } continue; } if (pno <= 1) continue; /* init dies before never */ printf("%3d: stop error, ", depth); printf("proc %d (i=%d) trans %d, %c\n", pno - Have_claim, i, nst, dothis->n->ntyp); lost_trail(); } for (X = run; X; X = X->nxt) { if (--i == pno) break; } if (!X) { printf("%3d: no process %d ", depth, pno - Have_claim); printf("(state %d)\n", nst); lost_trail(); } X->pc = dothis; lineno = dothis->n->ln; Fname = dothis->n->fn; if (dothis->n->ntyp == D_STEP) { Element *g, *og = dothis; do { g = eval_sub(og); if (g && depth >= jumpsteps && ((verbose&32) || ((verbose&4) && not_claim()))) { if (columns != 2) { p_talk(og, 1); if (og->n->ntyp == D_STEP) og = og->n->sl->this->frst; printf("\t["); comment(stdout, og->n, 0); printf("]\n"); } if (verbose&1) dumpglobals(); if (verbose&2) dumplocal(X); if (xspin) printf("\n"); } og = g; } while (g && g != dothis->nxt); if (X != NULL) { X->pc = g?huntele(g, 0, -1):g; } } else
Value * visit(Sub const * e) { return eval_sub(e->left->accept(*this), e->right->accept(*this)); }
int main () { struct ss ss; struct ss ssa[2]; struct arraystruct arraystruct; string x = make_string ("this is x"); zzz_type c = make_container ("container"); zzz_type c2 = make_container ("container2"); const struct string_repr cstring = { { "const string" } }; /* Clearing by being `static' could invoke an other GDB C++ bug. */ struct nullstr nullstr; nostring_type nstype, nstype2; struct memory_error me; struct ns ns, ns2; struct lazystring estring, estring2; struct hint_error hint_error; struct children_as_list children_as_list; nstype.elements = narray; nstype.len = 0; me.s = "blah"; init_ss(&ss, 1, 2); init_ss(ssa+0, 3, 4); init_ss(ssa+1, 5, 6); memset (&nullstr, 0, sizeof nullstr); arraystruct.y = 7; init_s (&arraystruct.x[0], 23); init_s (&arraystruct.x[1], 24); ns.null_str = "embedded\0null\0string"; ns.length = 20; /* Make a "corrupted" string. */ ns2.null_str = NULL; ns2.length = 20; estring.lazy_str = "embedded x\201\202\203\204" ; /* Incomplete UTF-8, but ok Latin-1. */ estring2.lazy_str = "embedded x\302"; #ifdef __cplusplus S cps; cps.zs = 7; init_s(&cps, 8); SS cpss; cpss.zss = 9; init_s(&cpss.s, 10); SS cpssa[2]; cpssa[0].zss = 11; init_s(&cpssa[0].s, 12); cpssa[1].zss = 13; init_s(&cpssa[1].s, 14); SSS sss(15, cps); SSS& ref (sss); Derived derived; Fake fake (42); #endif add_item (&c, 23); /* MI breakpoint here */ add_item (&c, 72); #ifdef MI add_item (&c, 1011); c.elements[0] = 1023; c.elements[0] = 2323; add_item (&c2, 2222); add_item (&c2, 3333); substruct_test (); do_nothing (); #endif nstype.elements[0] = 7; nstype.elements[1] = 42; nstype.len = 2; nstype2 = nstype; eval_sub (); bug_14741(); /* break to inspect struct and union */ return 0; }