122 werrstr(
"got %s looking for %s\n",
s->attrs.name,
name);
145 while (rsym == 0 &&
s->attrs.tag !=
tag) {
146 if (
s->attrs.haskids) {
173 werrstr(
"symbol with tag 0x%lux not found",
tag);
183 werrstr(
"dwarfseeksym: unit %x off %x\n",
unit, off);
185 s->b.p =
d->info.data +
unit + off;
186 s->b.ep = compunit.
b.
ep;
189 werrstr(
"dwarfseeksym: unit %x off %x, tag %x",
unit, off,
s->attrs.tag);
202 if(
s->attrs.lowpc <= pc && pc < s->attrs.highpc)
205 werrstr(
"fn containing pc 0x%lux not found", pc);
215 if(
unit >=
d->info.len){
216 werrstr(
"dwarf unit address 0x%x >= 0x%x out of range",
unit,
d->info.len);
223 s->b.p =
d->info.data +
unit;
224 s->b.ep =
d->info.data +
d->info.len;
228 s->b.ep =
d->info.data +
s->nextunit;
230 if(
s->b.ep -
s->b.p <
len){
232 werrstr(
"bad dwarf unit header at unit 0x%lux end %x start %x len %x",
unit,
s->b.ep -
d->info.data,
s->b.p -
d->info.data,
len);
235 s->b.ep =
s->b.p+
len;
241 d->addrsize =
s->b.addrsize;
256 werrstr(
"sym at %x (left %x)\n",
s->b.p -
d->info.data,
s->b.ep -
s->b.p);
268 werrstr(
"getabbrev %x %x for %x",
s->aoff,
num,
s->unit);
276 if (
s->attrs.haskids) {
279 werrstr(
"Set childoff at %x\n",
s->childoff);
302 if(
child->attrs.have.sibling){
303 sib =
child->attrs.sibling;
304 if(sib < d->
info.len &&
d->info.data+sib >
child->b.p)
305 child->b.p =
d->info.data+sib;
306 else if (sib >=
d->info.len) {
307 werrstr(
"sibling reported as out of bounds %d vs %d", sib,
d->info.len);
309 }
else if (
d->info.data+sib+
parent->unit <
child->b.p) {
310 werrstr(
"subsequent sibling is listed before prev %d vs %d", sib+
parent->unit,
child->b.p -
d->info.data);
334 #define ATTR(x) (#x)+9, x 335 #define OFFSET(x) offsetof(DwarfAttrs, x), offsetof(DwarfAttrs, have.x) 416 memset(attrs, 0,
sizeof *attrs);
420 for(
i=0;
i<
a->nattr;
i++){
427 werrstr(
"dwarf parse attrs: cannot skip form %d",
f);
432 v = (
char*)attrs +
ptab[
n].off;
449 werrstr(
"dwarf parse attrs: cannot skip form %d",
f);
460 if (attrs->
have.name)
520 if(uv != *
u && ++nbad == 1)
521 werrstr(
"dwarf: truncating 64-bit attribute constants");
558 x =
b->p -
d->info.data;
560 for (
u = 0; (*s)[
u];
u++) {
567 if(
u >=
b->d->str.len){
569 werrstr(
"dwarf: bad string pointer 0x%lux in attribute",
u);
573 *
s = (
char*)
b->d->str.data +
u;
636 stack->data = newstack;
664 while (
buf->p <
buf->ep) {
672 if (
d->addrsize == 4) {
702 werrstr(
"const 8 not yet supported");
741 werrstr(
"Xderef not yet supported");
856 void*
addr = (
void*)cfa;
867 werrstr(
"OpPiece not supported");
890 werrstr(
"opcode %x not supported", opcode);
917 werrstr(
"lookup in unit %x-%x, pc %x",
unit.attrs.lowpc,
unit.attrs.highpc, pc);
918 pc -=
unit.attrs.lowpc;
920 werrstr(
"paramblock %s -> unit %x type %x fde %x len %d registers %x",
936 locbuf.
p =
d->loc.data + parameter->
fde;
937 locbuf.
ep =
d->loc.data +
d->loc.len;
956 werrstr(
"Wrong block type for parameter %s", parameter->
name);
992 while (
res == 0 &&
ip < pnum) {
994 param.attrs.have.name &&
995 param.attrs.have.location) {
1001 paramblocks[
ip].
len =
param.attrs.location.b.len;
1003 werrstr(
"param[%d] block %s -> type %x loctype %x fde %x len %x",
1007 paramblocks[
ip].loctype,
1008 paramblocks[
ip].fde,
1009 paramblocks[
ip].
len);
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
int dwarfenumunit(Dwarf *d, ulong unit, DwarfSym *s)
int dwarfargvalue(Dwarf *d, DwarfSym *proc, ulong pc, ulong cfa, PROSSYM_REGISTERS registers, DwarfParam *parameter)
ACPI_SIZE strlen(const char *String)
GLdouble GLdouble GLdouble r
char * dwarfgetstring(DwarfBuf *)
GLuint GLuint GLsizei count
ulong dwarfget4(DwarfBuf *)
int dwarfnextsym(Dwarf *d, DwarfSym *s)
static int skipform(Dwarf *d, DwarfBuf *, int)
GLint GLint GLint GLint GLint x
int dwarfseeksym(Dwarf *d, ulong unit, ulong off, DwarfSym *s)
GLenum GLuint GLenum GLsizei const GLchar * buf
void stackinit(DwarfStack *stack)
ROSSYM_CALLBACKS RosSymCallbacks
ulong dwarfget1(DwarfBuf *)
png_const_structrp png_const_inforp int * unit
static int getuchar(DwarfBuf *, int, uchar *)
WDF_INTERRUPT_PRIORITY priority
struct DwarfAttrs::@4749 have
static int constblock(Dwarf *, DwarfBlock *, ulong *)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
static int getstring(Dwarf *d, DwarfBuf *, int, char **)
GLboolean GLboolean GLboolean b
static int parseattrs(Dwarf *d, DwarfBuf *, ulong, ulong, DwarfAbbrev *, DwarfAttrs *)
int dwarfnextsymat(Dwarf *d, DwarfSym *s, int depth)
int dwarflookupsubname(Dwarf *d, DwarfSym *parent, char *name, DwarfSym *s)
int dwarflookuptag(Dwarf *d, ulong unit, ulong tag, DwarfSym *s)
long dwarfget128s(DwarfBuf *)
ulong dwarfget2(DwarfBuf *)
static int getulong(DwarfBuf *, int, ulong, ulong *, int *)
GLenum const GLvoid * addr
int dwarfgetparams(Dwarf *d, DwarfSym *s, ulong pc, int pnum, DwarfParam *paramblocks)
BOOLEAN(* MemGetProc)(PVOID FileContext, ULONG_PTR *Target, PVOID SourceMem, ULONG Size)
#define memcpy(s1, s2, n)
GLsizei const GLfloat * value
void fatal(const char *msg)
static int getblock(DwarfBuf *, int, DwarfBlock *)
ulong dwarfget128(DwarfBuf *)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
int dwarflookupfn(Dwarf *d, ulong unit, ulong pc, DwarfSym *s)
DwarfAbbrev * dwarfgetabbrev(Dwarf *, ulong, ulong)
void stackfree(DwarfStack *stack)
ulong stackpop(DwarfStack *stack)
unsigned long long uvlong
uchar * dwarfgetnref(DwarfBuf *, ulong)
int dwarfgetarg(Dwarf *d, const char *name, DwarfBuf *buf, ulong cfa, PROSSYM_REGISTERS registers, ulong *result)
uvlong dwarfget8(DwarfBuf *)
char * strcpy(char *DstString, const char *SrcString)
int strcmp(const char *String1, const char *String2)
static Parse ptab[DwarfAttrMax]
GLuint GLuint GLsizei GLenum type
void stackpush(DwarfStack *stack, ulong value)
GLboolean GLboolean GLboolean GLboolean a
int dwarflookupnameinunit(Dwarf *d, ulong unit, char *name, DwarfSym *s)
int dwarflookupchildtag(Dwarf *d, DwarfSym *parent, ulong tag, DwarfSym *s)
ulong dwarfgetaddr(DwarfBuf *)
void dwarfdumpsym(Dwarf *d, DwarfSym *s)
const char const char ** ordering