Skip to content

Commit 4a000a2

Browse files
committedMar 5, 2012
merge
2 parents a319037 + a319037 commit 4a000a2

File tree

12 files changed

+134
-18
lines changed

12 files changed

+134
-18
lines changed
 

‎acid/amd64

+113
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,119 @@ Ureg(addr) {
182182
};
183183
sizeofUreg = 184;
184184

185+
aggr freebsd_amd64_siginfo
186+
{
187+
'X' 0 signo;
188+
'X' 4 errno;
189+
'X' 8 code;
190+
'X' 12 pid;
191+
'X' 16 uid;
192+
'X' 20 status;
193+
'Y' 24 addr;
194+
'Y' 32 sigval;
195+
's' 40 reason;
196+
};
197+
198+
defn
199+
freebsd_amd64_siginfo(addr) {
200+
complex freebsd_amd64_siginfo addr;
201+
print(" signo ", addr.signo, "\n");
202+
print(" errno ", addr.errno, "\n");
203+
print(" code ", addr.code, "\n");
204+
print(" pid ", addr.pid, "\n");
205+
print(" uid ", addr.uid, "\n");
206+
print(" status ", addr.status, "\n");
207+
print(" addr ", addr.addr, "\n");
208+
print(" sigval ", addr.sigval, "\n");
209+
};
210+
211+
aggr freebsd_amd64_ucontext
212+
{
213+
'X' 0 sigmask0;
214+
'X' 4 sigmask1;
215+
'X' 8 sigmask2;
216+
'X' 12 sigmask3;
217+
'Y' 16 onstack;
218+
'Y' 24 rdi;
219+
'Y' 32 rsi;
220+
'Y' 40 rdx;
221+
'Y' 48 rcx;
222+
'Y' 56 r8;
223+
'Y' 64 r9;
224+
'Y' 72 rax;
225+
'Y' 80 rbx;
226+
'Y' 88 rbp;
227+
'Y' 96 r10;
228+
'Y' 104 r11;
229+
'Y' 112 r12;
230+
'Y' 120 r13;
231+
'Y' 128 r14;
232+
'Y' 136 r15;
233+
'X' 144 trapno;
234+
'x' 148 fs;
235+
'x' 150 gs;
236+
'Y' 152 addr;
237+
'X' 160 flags;
238+
'x' 164 es;
239+
'x' 166 ds;
240+
'Y' 168 err;
241+
'Y' 176 rip;
242+
'Y' 184 cs;
243+
'Y' 192 rflags;
244+
'Y' 200 rsp;
245+
'Y' 208 ss;
246+
'Y' 216 len;
247+
'Y' 224 fpformat;
248+
'Y' 232 ownedfp;
249+
'Y' 240 fpstate0;
250+
'Y' 752 fsbase;
251+
'Y' 760 gsbase;
252+
};
253+
254+
defn
255+
freebsd_amd64_ucontext(addr) {
256+
complex freebsd_amd64_ucontext addr;
257+
print(" sigmask0 ", addr.sigmask0, "\n");
258+
print(" sigmask1 ", addr.sigmask1, "\n");
259+
print(" sigmask2 ", addr.sigmask2, "\n");
260+
print(" sigmask3 ", addr.sigmask3, "\n");
261+
print(" onstack ", addr.onstack, "\n");
262+
print(" rdi ", addr.rdi, "\n");
263+
print(" rsi ", addr.rsi, "\n");
264+
print(" rdx ", addr.rdx, "\n");
265+
print(" rcx ", addr.rcx, "\n");
266+
print(" r8 ", addr.r8, "\n");
267+
print(" r9 ", addr.r9, "\n");
268+
print(" rax ", addr.rax, "\n");
269+
print(" rbx ", addr.rbx, "\n");
270+
print(" rbp ", addr.rbp, "\n");
271+
print(" r10 ", addr.r10, "\n");
272+
print(" r11 ", addr.r11, "\n");
273+
print(" r12 ", addr.r12, "\n");
274+
print(" r13 ", addr.r13, "\n");
275+
print(" r14 ", addr.r14, "\n");
276+
print(" r15 ", addr.r15, "\n");
277+
print(" trapno ", addr.trapno, "\n");
278+
print(" fs ", addr.fs, "\n");
279+
print(" gs ", addr.gs, "\n");
280+
print(" addr ", addr.addr, "\n");
281+
print(" flags ", addr.flags, "\n");
282+
print(" es ", addr.es, "\n");
283+
print(" ds ", addr.ds, "\n");
284+
print(" err ", addr.err, "\n");
285+
print(" rip ", addr.rip, "\n");
286+
print(" cs ", addr.cs, "\n");
287+
print(" rflags ", addr.rflags, "\n");
288+
print(" rsp ", addr.rsp, "\n");
289+
print(" ss ", addr.ss, "\n");
290+
print(" len ", addr.len, "\n");
291+
print(" fpformat ", addr.fpformat, "\n");
292+
print(" ownedfp ", addr.ownedfp, "\n");
293+
print(" fpstate0 ", addr.fpstate0, "\n");
294+
print(" fsbase ", addr.fsbase, "\n");
295+
print(" gsbase ", addr.gsbase, "\n");
296+
}
297+
185298
// aggr Linkdebug
186299
// {
187300
// 'X' 0 version;

‎src/cmd/acid/acid.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ void call(char*, Node*, Node*, Node*, Node*);
204204
void catcher(void*, char*);
205205
void checkqid(int, int);
206206
void cmd(void);
207-
Node* con(int);
207+
Node* con(s64int);
208208
List* construct(Node*);
209209
void ctrace(int);
210210
void decl(Node*);
@@ -217,12 +217,12 @@ Lsym* enter(char*, int);
217217
void error(char*, ...);
218218
void execute(Node*);
219219
void fatal(char*, ...);
220-
ulong findframe(ulong);
220+
u64int findframe(u64int);
221221
void flatten(Node**, Node*);
222222
void gc(void);
223223
char* getstatus(int);
224224
void* gmalloc(long);
225-
void indir(Map*, ulong, char, Node*);
225+
void indir(Map*, u64int, char, Node*);
226226
void indirreg(Regs*, char*, char, Node*);
227227
void initexpr(void);
228228
void initprint(void);
@@ -251,7 +251,7 @@ void pstr(String*);
251251
void pushfd(int);
252252
void pushfile(char*);
253253
void pushstr(Node*);
254-
ulong raddr(char*);
254+
u64int raddr(char*);
255255
void readtext(char*);
256256
void readcore(void);
257257
void restartio(void);

‎src/cmd/acid/builtin.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -866,7 +866,7 @@ cvtatoi(Node *r, Node *args)
866866

867867
r->op = OCONST;
868868
r->type = TINT;
869-
r->store.u.ival = strtoul(res.store.u.string->string, 0, 0);
869+
r->store.u.ival = strtoull(res.store.u.string->string, 0, 0);
870870
r->store.fmt = 'D';
871871
}
872872

@@ -875,7 +875,7 @@ cvtitoa(Node *r, Node *args)
875875
{
876876
Node res;
877877
Node *av[Maxarg];
878-
int ival;
878+
s64int ival;
879879
char buf[128], *fmt;
880880

881881
if(args == 0)
@@ -1030,7 +1030,7 @@ flatten(Node **av, Node *n)
10301030
static struct
10311031
{
10321032
char *name;
1033-
ulong val;
1033+
u64int val;
10341034
} sregs[Maxarg/2];
10351035
static int nsregs;
10361036

‎src/cmd/acid/dbg.y

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
{
1212
Node *node;
1313
Lsym *sym;
14-
ulong ival;
14+
u64int ival;
1515
float fval;
1616
String *string;
1717
}

‎src/cmd/acid/dot.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ odot(Node *n, Node *r)
2828
char *s;
2929
Type *t;
3030
Node res;
31-
ulong addr;
31+
u64int addr;
3232

3333
s = n->sym->name;
3434
if(s == 0)

‎src/cmd/acid/exec.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ convflt(Node *r, char *flt)
203203
}
204204

205205
void
206-
indir(Map *m, ulong addr, char fmt, Node *r)
206+
indir(Map *m, u64int addr, char fmt, Node *r)
207207
{
208208
int i;
209209
u32int ival;

‎src/cmd/acid/expr.c

+1-2
Original file line numberDiff line numberDiff line change
@@ -1114,9 +1114,8 @@ acidregsrw(Regs *r, char *name, u64int *u, int isr)
11141114
}
11151115
addr = v->store.u.ival;
11161116
/* XXX should use format to determine size */
1117-
if(get4(cormap, addr, &u32) < 0)
1117+
if(geta(cormap, addr, u) < 0)
11181118
return -1;
1119-
*u = u32;
11201119
return 0;
11211120
}
11221121
}

‎src/cmd/acid/lex.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -588,9 +588,9 @@ numsym(char first)
588588
}
589589

590590
if(isbin)
591-
yylval.ival = strtoul(symbol+2, 0, 2);
591+
yylval.ival = strtoull(symbol+2, 0, 2);
592592
else
593-
yylval.ival = strtoul(symbol, 0, 0);
593+
yylval.ival = strtoll(symbol, 0, 0);
594594
return Tconst;
595595
}
596596

‎src/cmd/acid/main.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ al(int t)
365365
}
366366

367367
Node*
368-
con(int v)
368+
con(s64int v)
369369
{
370370
Node *n;
371371

‎src/cmd/acid/util.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ addvarsym(Fhdr *fp)
7373
Symbol s;
7474
Lsym *l;
7575
String *file;
76-
ulong v;
76+
u64int v;
7777
char buf[65536]; /* Some of those C++ names are really big */
7878
List *list, **tail, *tl;
7979

‎src/libmach/elfcorefreebsdamd64.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,8 @@ elfcorefreebsdamd64(Fhdr *fp, Elf *elf, ElfNote *note)
113113
u->flags = l->rflags;
114114
u->sp = l->rsp;
115115
u->ss = l->ss;
116-
116+
print("core PC=%#llux SP=%#llux\n", u->ip, u->sp);
117+
117118
if((fp->thread = realloc(fp->thread, (1+fp->nthread)*sizeof(fp->thread[0]))) == nil){
118119
fprint(2, "warning: out of memory saving thread info\n");
119120
return;

‎src/libmach/regs.c

+4-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ int
2727
rget(Regs *regs, char *name, u64int *u)
2828
{
2929
if(regs == nil){
30-
*u = ~(ulong)0;
30+
*u = ~(u64int)0;
3131
werrstr("registers not mapped");
3232
return -1;
3333
}
@@ -54,6 +54,9 @@ _uregrw(Regs *regs, char *name, u64int *u, int isr)
5454
case 'X':
5555
*u = mach->swap4(*(u32int*)ureg);
5656
return 0;
57+
case 'Y':
58+
*u = mach->swap8(*(u64int*)ureg);
59+
return 0;
5760
}
5861
}
5962

0 commit comments

Comments
 (0)
Please sign in to comment.