various fixes
This commit is contained in:
parent
77fd60a177
commit
689be54125
3 changed files with 28 additions and 23 deletions
|
|
@ -28,7 +28,7 @@ void match(Node*, Node*);
|
|||
void status(Node*, Node*);
|
||||
void xkill(Node*,Node*);
|
||||
void waitstop(Node*, Node*);
|
||||
void sysstop(Node*, Node*);
|
||||
void waitsyscall(Node*, Node*);
|
||||
void stop(Node*, Node*);
|
||||
void start(Node*, Node*);
|
||||
void filepc(Node*, Node*);
|
||||
|
|
@ -47,6 +47,7 @@ void stringn(Node*, Node*);
|
|||
void xregister(Node*, Node*);
|
||||
void refconst(Node*, Node*);
|
||||
void dolook(Node*, Node*);
|
||||
void step1(Node*, Node*);
|
||||
|
||||
typedef struct Btab Btab;
|
||||
struct Btab
|
||||
|
|
@ -87,13 +88,14 @@ struct Btab
|
|||
"start", start,
|
||||
"startstop", startstop,
|
||||
"status", status,
|
||||
"step1", step1,
|
||||
"stop", stop,
|
||||
"strace", strace,
|
||||
"stringn", stringn,
|
||||
"sysstop", sysstop,
|
||||
"textfile", textfile,
|
||||
"var", dolook,
|
||||
"waitstop", waitstop,
|
||||
"waitsyscall", waitsyscall,
|
||||
0
|
||||
};
|
||||
|
||||
|
|
@ -220,6 +222,23 @@ newproc(Node *r, Node *args)
|
|||
r->store.u.ival = nproc(argv);
|
||||
}
|
||||
|
||||
void
|
||||
step1(Node *r, Node *args)
|
||||
{
|
||||
Node res;
|
||||
|
||||
USED(r);
|
||||
if(args == 0)
|
||||
error("step1(pid): no pid");
|
||||
expr(args, &res);
|
||||
if(res.type != TINT)
|
||||
error("step1(pid): arg type");
|
||||
|
||||
msg(res.store.u.ival, "step");
|
||||
notes(res.store.u.ival);
|
||||
dostop(res.store.u.ival);
|
||||
}
|
||||
|
||||
void
|
||||
startstop(Node *r, Node *args)
|
||||
{
|
||||
|
|
@ -256,16 +275,16 @@ waitstop(Node *r, Node *args)
|
|||
}
|
||||
|
||||
void
|
||||
sysstop(Node *r, Node *args)
|
||||
waitsyscall(Node *r, Node *args)
|
||||
{
|
||||
Node res;
|
||||
|
||||
USED(r);
|
||||
if(args == 0)
|
||||
error("waitstop(pid): no pid");
|
||||
error("waitsyscall(pid): no pid");
|
||||
expr(args, &res);
|
||||
if(res.type != TINT)
|
||||
error("waitstop(pid): arg type");
|
||||
error("waitsycall(pid): arg type");
|
||||
|
||||
Bflush(bout);
|
||||
msg(res.store.u.ival, "sysstop");
|
||||
|
|
@ -471,7 +490,7 @@ funcbound(Node *r, Node *args)
|
|||
error("fnbound(addr): arg type");
|
||||
|
||||
n = fnbound(res.store.u.ival, bounds);
|
||||
if (n != 0) {
|
||||
if (n >= 0) {
|
||||
r->store.u.l = al(TINT);
|
||||
l = r->store.u.l;
|
||||
l->store.u.ival = bounds[0];
|
||||
|
|
|
|||
|
|
@ -88,6 +88,7 @@ nproc(char **argv)
|
|||
fatal("new: exec %s: %r");
|
||||
default:
|
||||
install(pid);
|
||||
msg(pid, "attached");
|
||||
msg(pid, "waitstop");
|
||||
notes(pid);
|
||||
sproc(pid);
|
||||
|
|
@ -242,21 +243,6 @@ msg(int pid, char *msg)
|
|||
char *
|
||||
getstatus(int pid)
|
||||
{
|
||||
int fd;
|
||||
char *p;
|
||||
|
||||
static char buf[128];
|
||||
|
||||
sprint(buf, "/proc/%d/status", pid);
|
||||
fd = open(buf, OREAD);
|
||||
if(fd < 0)
|
||||
error("open %s: %r", buf);
|
||||
read(fd, buf, sizeof(buf));
|
||||
close(fd);
|
||||
p = buf+56+12; /* Do better! */
|
||||
while(*p == ' ')
|
||||
p--;
|
||||
p[1] = '\0';
|
||||
return buf+56; /* ditto */
|
||||
return "unknown";
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ addvarsym(Fhdr *fp)
|
|||
Lsym *l;
|
||||
String *file;
|
||||
ulong v;
|
||||
char buf[1024];
|
||||
char buf[65536]; /* Some of those C++ names are really big */
|
||||
List *list, **tail, *tl;
|
||||
|
||||
if(fp == nil)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue