- fix some warnings
- fix function prototype. This might fix usermode stack logs
svn path=/trunk/; revision=53568
case OpNop:
break;
case OpDeref: {
case OpNop:
break;
case OpDeref: {
- ulong val, addr = stackpop(&stack);
+ ulong val;
+ void* addr = (void*)stackpop(&stack);
if (!RosSymCallbacks.MemGetProc
(d->pe->fd,
&val,
if (!RosSymCallbacks.MemGetProc
(d->pe->fd,
&val,
stackpush(&stack, val);
} break;
case OpDerefSize: {
stackpush(&stack, val);
} break;
case OpDerefSize: {
- ulong val, addr = stackpop(&stack), size = dwarfget1(buf);
+ ulong val, size = dwarfget1(buf);
+ void* addr = (void*)stackpop(&stack);
if (!RosSymCallbacks.MemGetProc
(d->pe->fd,
&val,
if (!RosSymCallbacks.MemGetProc
(d->pe->fd,
&val,
stackpush(&stack, val);
} break;
case OpFbreg: {
stackpush(&stack, val);
} break;
case OpFbreg: {
- ulong val, addr = cfa, offset = dwarfget128s(buf);
+ ulong val, offset = dwarfget128s(buf);;
+ void* addr = (void*)cfa;
werrstr("FBREG cfa %x offset %x", cfa, offset);
if (!RosSymCallbacks.MemGetProc
(d->pe->fd,
&val,
werrstr("FBREG cfa %x offset %x", cfa, offset);
if (!RosSymCallbacks.MemGetProc
(d->pe->fd,
&val,
+ (PVOID)((ULONG_PTR)addr+offset),
d->addrsize))
goto fatal;
stackpush(&stack, val);
d->addrsize))
goto fatal;
stackpush(&stack, val);
} else if (opcode >= OpBreg0 && opcode < OpRegx) {
ulong val,
reg = opcode - OpBreg0,
} else if (opcode >= OpBreg0 && opcode < OpRegx) {
ulong val,
reg = opcode - OpBreg0,
- addr = registers->Registers[reg],
offset = dwarfget128s(buf);
offset = dwarfget128s(buf);
+ void* addr = (void*)(ULONG_PTR)registers->Registers[reg];
werrstr("BREG[%d] reg %x offset %x", reg, addr, offset);
if (!RosSymCallbacks.MemGetProc
werrstr("BREG[%d] reg %x offset %x", reg, addr, offset);
if (!RosSymCallbacks.MemGetProc
+ (PVOID)((ULONG_PTR)addr + offset),
d->addrsize))
goto fatal;
stackpush(&stack, val);
d->addrsize))
goto fatal;
stackpush(&stack, val);
void
dwarfdumpsym(Dwarf *d, DwarfSym *s)
{
void
dwarfdumpsym(Dwarf *d, DwarfSym *s)
{
werrstr("tag %x\n", s->attrs.tag);
for (j = 0; plist[j].name; j++) {
char *have = ((char*)&s->attrs) + plist[j].haveoff;
werrstr("tag %x\n", s->attrs.tag);
for (j = 0; plist[j].name; j++) {
char *have = ((char*)&s->attrs) + plist[j].haveoff;
paramblocks[ip].type = param.attrs.type;
paramblocks[ip].loctype = param.attrs.have.location;
paramblocks[ip].len = param.attrs.location.b.len;
paramblocks[ip].type = param.attrs.type;
paramblocks[ip].loctype = param.attrs.have.location;
paramblocks[ip].len = param.attrs.location.b.len;
- paramblocks[ip].fde = param.attrs.location.b.data;
+ paramblocks[ip].fde = (ulong)param.attrs.location.b.data;
werrstr("param[%d] block %s -> type %x loctype %x fde %x len %x",
ip,
paramblocks[ip].name,
werrstr("param[%d] block %s -> type %x loctype %x fde %x len %x",
ip,
paramblocks[ip].name,
-RosSymGetMemUM(ULONG_PTR *Target, PVOID SourceMem, ULONG Size)
+RosSymGetMemUM(PVOID FileContext, ULONG_PTR *Target, PVOID SourceMem, ULONG Size)