commit - fa009f9d7217bd577248e53ff5aba2e8b1e0c4b2
commit + 9b24f92c5611353cdafb6756ae21b405ebc695dd
blob - 12b0f9b8001beaab242e039df8d44cd04621f0fa
blob + 7128bdc4907cd245656291a62b1262f98bab13cb
--- src/libmach/Linux.c
+++ src/libmach/Linux.c
int pid;
};
-static int ptracerw(Map*, Seg*, ulong, void*, uint, int);
-static int ptraceregrw(Regs*, char*, ulong*, int);
+static int ptracerw(Map*, Seg*, uvlong, void*, uint, int);
+static int ptraceregrw(Regs*, char*, uvlong*, int);
static int attachedpids[1000];
static int nattached;
}
static int
-ptracerw(Map *map, Seg *seg, ulong addr, void *v, uint n, int isr)
+ptracerw(Map *map, Seg *seg, uvlong addr, void *v, uint n, int isr)
{
int i;
u32int u;
uchar buf[4];
+ if(addr>>32){
+ werrstr("address out of range");
+ return -1;
+ }
+
addr += seg->base;
for(i=0; i<n; i+=4){
if(isr){
}
static int
-ptraceregrw(Regs *regs, char *name, ulong *val, int isr)
+ptraceregrw(Regs *regs, char *name, uvlong *val, int isr)
{
int pid;
ulong addr;
addr = reg2linux(name);
if(~addr == 0){
if(isr){
- *val = ~(ulong)0;
+ *val = ~(uvlong)0;
return 0;
}
werrstr("register not available");
blob - 6e4485190b3a7eb03a4f5101a7c7870ce00dc7cc
blob + 1d1ac40b3bb523e4a5a5b505f72a3ac992bf4c13
--- src/libmach/frame.c
+++ src/libmach/frame.c
};
static int
-locregrw(Regs *regs, char *name, ulong *val, int isr)
+locregrw(Regs *regs, char *name, uvlong *val, int isr)
{
int i;
LocRegs *lr;
{
char *rname;
int i, ipc, ret;
- ulong nextpc, pc, v;
+ uvlong nextpc, pc, v;
ulong *cur, *next;
LocRegs lr;
Symbol s, *sp;
blob - 47bcf3d960f500f39bba14e203c452c89758df8e
blob + 8113168e7902c06aeb0e6af5cdc4c694dd7c4616
--- src/libmach/loc.c
+++ src/libmach/loc.c
int
lget2(Map *map, Regs *regs, Loc loc, u16int *u)
{
- ulong ul;
+ uvlong ul;
if(locsimplify(map, regs, loc, &loc) < 0)
return -1;
int
lget4(Map *map, Regs *regs, Loc loc, u32int *u)
{
- ulong ul;
+ uvlong ul;
if(locsimplify(map, regs, loc, &loc) < 0)
return -1;
int
lget8(Map *map, Regs *regs, Loc loc, u64int *u)
{
- ulong ul;
+ uvlong ul;
if(locsimplify(map, regs, loc, &loc) < 0)
return -1;
}
Loc
-locaddr(ulong addr)
+locaddr(uvlong addr)
{
Loc l;
}
Loc
-locindir(char *reg, long offset)
+locindir(char *reg, vlong offset)
{
Loc l;
}
Loc
-locconst(ulong con)
+locconst(uvlong con)
{
Loc l;
blob - 2745dd4c845a52f2c5ad043b288f4e289fcbbaa0
blob + eed205bc7b2d901c19b1c083cab7495258d96620
--- src/libmach/map.c
+++ src/libmach/map.c
#include <bio.h>
#include <mach.h>
-static int fdrw(Map*, Seg*, ulong, void*, uint, int);
-static int zerorw(Map*, Seg*, ulong, void*, uint, int);
-static int mrw(Map*, ulong, void*, uint, int);
-static int datarw(Map*, Seg*, ulong, void*, uint, int);
+static int fdrw(Map*, Seg*, uvlong, void*, uint, int);
+static int zerorw(Map*, Seg*, uvlong, void*, uint, int);
+static int mrw(Map*, uvlong, void*, uint, int);
+static int datarw(Map*, Seg*, uvlong, void*, uint, int);
Map*
allocmap(void)
}
int
-addrtoseg(Map *map, ulong addr, Seg *sp)
+addrtoseg(Map *map, uvlong addr, Seg *sp)
{
int i;
Seg *s;
}
int
-addrtosegafter(Map *map, ulong addr, Seg *sp)
+addrtosegafter(Map *map, uvlong addr, Seg *sp)
{
int i;
Seg *s, *best;
}
int
-get1(Map *map, ulong addr, uchar *a, uint n)
+get1(Map *map, uvlong addr, uchar *a, uint n)
{
return mrw(map, addr, a, n, 1);
}
int
-get2(Map *map, ulong addr, u16int *u)
+get2(Map *map, uvlong addr, u16int *u)
{
u16int v;
}
int
-get4(Map *map, ulong addr, u32int *u)
+get4(Map *map, uvlong addr, u32int *u)
{
u32int v;
}
int
-get8(Map *map, ulong addr, u64int *u)
+get8(Map *map, uvlong addr, u64int *u)
{
u64int v;
}
int
-put1(Map *map, ulong addr, uchar *a, uint n)
+put1(Map *map, uvlong addr, uchar *a, uint n)
{
return mrw(map, addr, a, n, 0);
}
int
-put2(Map *map, ulong addr, u16int u)
+put2(Map *map, uvlong addr, u16int u)
{
u = mach->swap2(u);
return mrw(map, addr, &u, 2, 0);
}
int
-put4(Map *map, ulong addr, u32int u)
+put4(Map *map, uvlong addr, u32int u)
{
u = mach->swap4(u);
return mrw(map, addr, &u, 4, 0);
}
int
-put8(Map *map, ulong addr, u64int u)
+put8(Map *map, uvlong addr, u64int u)
{
u = mach->swap8(u);
return mrw(map, addr, &u, 8, 0);
}
static Seg*
-reloc(Map *map, ulong addr, uint n, ulong *off, uint *nn)
+reloc(Map *map, uvlong addr, uint n, uvlong *off, uint *nn)
{
int i;
- ulong o;
+ uvlong o;
if(map == nil){
werrstr("invalid map");
}
static int
-mrw(Map *map, ulong addr, void *a, uint n, int r)
+mrw(Map *map, uvlong addr, void *a, uint n, int r)
{
uint nn;
uint tot;
Seg *s;
- ulong off;
+ uvlong off;
for(tot=0; tot<n; tot+=nn){
s = reloc(map, addr+tot, n-tot, &off, &nn);
}
static int
-fdrw(Map *map, Seg *seg, ulong addr, void *a, uint n, int r)
+fdrw(Map *map, Seg *seg, uvlong addr, void *a, uint n, int r)
{
int nn;
uint tot;
- ulong off;
+ uvlong off;
USED(map);
off = seg->offset + addr;
}
static int
-zerorw(Map *map, Seg *seg, ulong addr, void *a, uint n, int r)
+zerorw(Map *map, Seg *seg, uvlong addr, void *a, uint n, int r)
{
USED(map);
USED(seg);
}
static int
-datarw(Map *map, Seg *seg, ulong addr, void *a, uint n, int r)
+datarw(Map *map, Seg *seg, uvlong addr, void *a, uint n, int r)
{
USED(map);
blob - 77426436b9b0feb7b5961250416458ffaba7cdef
blob + 3ad5384db6ee827c747163588539c0ea586ef7af
--- src/libmach/mkfile
+++ src/libmach/mkfile
symmacho.$O\
symstabs.$O\
-HFILES=mach.h
+HFILES=$PLAN9/include/mach.h
<$PLAN9/src/mksyslib
CFLAGS=$CFLAGS -I.
blob - 43c04786c7ebc176595aa3728c8d391b6d09ca7b
blob + 2ead7a33f69f16c335096248d6cb7149376fdd77
--- src/libmach/regs.c
+++ src/libmach/regs.c
#include <mach.h>
int
-rput(Regs *regs, char *name, ulong u)
+rput(Regs *regs, char *name, uvlong u)
{
if(regs == nil){
werrstr("registers not mapped");
}
int
-rget(Regs *regs, char *name, ulong *u)
+rget(Regs *regs, char *name, uvlong *u)
{
if(regs == nil){
*u = ~(ulong)0;
}
int
-_uregrw(Regs *regs, char *name, ulong *u, int isr)
+_uregrw(Regs *regs, char *name, uvlong *u, int isr)
{
Regdesc *r;
uchar *ureg;
switch(r->format){
default:
case 'X':
- *u = mach->swap4(*(u32int*)ureg);
+ *u = mach->swap4(*(ulong*)ureg);
return 0;
}
}
blob - eeafa8dccb8bc755aac55f482ffa3ab7242e896b
blob + c29f287fcb67db16b81f81df340811f2c4611a5a
--- src/libmach/symdwarf.c
+++ src/libmach/symdwarf.c
}
static int
-dwarfeval(Dwarf *d, Map *map, Regs *regs, ulong cfa, int rno, DwarfExpr e, ulong *u)
+dwarfeval(Dwarf *d, Map *map, Regs *regs, ulong cfa, int rno, DwarfExpr e, uvlong *u)
{
int i;
u32int u4;
- ulong uu;
+ uvlong uu;
switch(e.type){
case RuleUndef:
{
char *name;
int i, j;
- ulong cfa, pc, u;
+ uvlong cfa, pc, u;
Dwarf *d;
DwarfExpr *e, epc, ecfa;