159 if(
s->attrs.tag ==
tag) {
163 if(
s->attrs.tag ==
tag) {
166 werrstr(
"symbol with tag 0x%lux not found",
tag);
175 s->b.p =
d->info.data +
unit + off;
194 if(
s->attrs.lowpc <= pc && pc < s->attrs.highpc)
197 werrstr(
"fn containing pc 0x%lux not found", pc);
207 if(
unit >=
d->info.len){
208 werrstr(
"dwarf unit address 0x%x >= 0x%x out of range",
unit,
d->info.len);
215 s->b.p =
d->info.data +
unit;
216 s->b.ep =
d->info.data +
d->info.len;
220 if(
s->b.ep -
s->b.p <
len){
222 werrstr(
"bad dwarf unit header at unit 0x%lux",
unit);
225 s->b.ep =
s->b.p+
len;
231 d->addrsize =
s->b.addrsize;
259 if(
s->b.p >=
s->b.ep){
260 if(
s->allunits &&
s->nextunit <
d->info.len){
270 s->uoff =
s->b.p - (
d->info.data+
s->unit);
283 werrstr(
"getabbrev %ud %ud for %ud,%ud: %r\n",
s->aoff,
num,
s->unit,
s->uoff);
299 if(
s->depth ==
depth &&
s->attrs.have.sibling){
300 sib =
s->attrs.sibling;
301 if(sib < d->
info.len &&
d->info.data+sib >=
s->b.p)
302 s->b.p =
d->info.data+sib;
303 s->attrs.haskids = 0;
338 #define OFFSET(x) offsetof(DwarfAttrs, x), offsetof(DwarfAttrs, have.x) 419 memset(attrs, 0,
sizeof *attrs);
423 for(
i=0;
i<
a->nattr;
i++){
428 werrstr(
"dwarf parse attrs: unexpected attribute name 0x%x",
n);
431 v = (
char*)attrs +
ptab[
n].off;
447 werrstr(
"dwarf parse attrs: cannot skip form %d",
f);
512 if(uv != *
u && ++nbad == 1)
513 werrstr(
"dwarf: truncating 64-bit attribute constants");
555 if(
u >=
b->d->str.len){
557 werrstr(
"dwarf: bad string pointer 0x%lux in attribute",
u);
561 *
s = (
char*)
b->d->str.data +
u;
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)
static int getstring(DwarfBuf *, int, char **)
GLdouble GLdouble GLdouble r
char * dwarfgetstring(DwarfBuf *)
GLuint GLuint GLsizei count
ulong dwarfget4(DwarfBuf *)
int dwarfnextsym(Dwarf *d, DwarfSym *s)
static Parse ptab[DwarfAttrMax]
int dwarfseeksym(Dwarf *d, ulong unit, ulong off, DwarfSym *s)
static int skipform(DwarfBuf *, int)
ulong dwarfget1(DwarfBuf *)
png_const_structrp png_const_inforp int * unit
WDF_INTERRUPT_PRIORITY priority
static int constblock(Dwarf *, DwarfBlock *, ulong *)
GLboolean GLboolean GLboolean b
static int getblock(DwarfBuf *, int, DwarfBlock *)
static int getulong(DwarfBuf *, int, ulong, ulong *, int *)
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 *)
GLint GLint GLsizei GLsizei GLsizei depth
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)
static int getuchar(DwarfBuf *, int, uchar *)
DwarfAbbrev * dwarfgetabbrev(Dwarf *, ulong, ulong)
unsigned long long uvlong
uchar * dwarfgetnref(DwarfBuf *, ulong)
uvlong dwarfget8(DwarfBuf *)
int strcmp(const char *String1, const char *String2)
int dwarfenum(Dwarf *d, DwarfSym *s)
GLdouble GLdouble GLdouble GLdouble top
GLuint GLuint GLsizei GLenum type
GLboolean GLboolean GLboolean GLboolean a
static int parseattrs(DwarfBuf *, ulong, DwarfAbbrev *, DwarfAttrs *)
int dwarflookupnameinunit(Dwarf *d, ulong unit, char *name, DwarfSym *s)
ulong dwarfgetaddr(DwarfBuf *)
const char const char ** ordering
unsigned long long u64int