18 if(symhdr && symopen(symhdr) < 0)
19 dprint("symopen: %r\n");
22 if (mach->sbreg && lookup(0, mach->sbreg, &s) < 0)
23 mach->sb = s.loc.addr;
34 if (mapfile(corhdr, 0, cormap, &correg) < 0)
35 dprint("mapfile %s: %r\n", corfil);
39 if (pid == 0 && corhdr->nthread > 0)
40 pid = corhdr->thread[0].id;
41 correg = coreregs(corhdr, pid);
43 dprint("no such pid in core dump\n");
46 unmapfile(corhdr, cormap);
51 if (mapproc(pid, cormap, &correg) < 0)
52 dprint("mapproc %d: %r\n", pid);
54 dprint("no core image\n");
67 memset(&s, 0, sizeof s);
74 if(addseg(dumb, s) < 0){
84 * set up maps for a direct process image (/proc)
94 i = findseg(map, name, nil);
95 if (i < 0) /* not found */
96 error("Invalid map name");
99 /* if (strcmp(name, "text") == 0) */
100 /* textseg(expv, &fhdr); */
101 map->seg[i].base = expv;
103 error("Invalid base address");
105 map->seg[i].size = expv - map->seg[i].base;
107 error("Invalid end address");
109 map->seg[i].offset = expv;
111 error("Invalid file offset");
113 if (rdc()=='?' && map == cormap) {
119 } else if (lastc == '/' && map == symmap) {
135 i = findseg(symmap, "text", symfil);
137 symmap->seg[i].base = symmap->seg[i].base&~mach->ktmask;
138 symmap->seg[i].size = -symmap->seg[i].base;
140 i = findseg(symmap, "data", symfil);
142 symmap->seg[i].base = symmap->seg[i].base&~mach->ktmask;
143 symmap->seg[i].size = -symmap->seg[i].base;
151 dprint("usage: pid$a\n");