158 if(
s->attrs.tag ==
tag) {
162 if(
s->attrs.tag ==
tag) {
165 werrstr(
"symbol with tag 0x%lux not found",
tag);
174 s->b.p =
d->info.data +
unit + off;
193 if(
s->attrs.lowpc <= pc && pc < s->attrs.highpc)
196 werrstr(
"fn containing pc 0x%lux not found", pc);
206 if(
unit >=
d->info.len){
207 werrstr(
"dwarf unit address 0x%x >= 0x%x out of range",
unit,
d->info.len);
214 s->b.p =
d->info.data +
unit;
215 s->b.ep =
d->info.data +
d->info.len;
219 if(
s->b.ep -
s->b.p <
len){
221 werrstr(
"bad dwarf unit header at unit 0x%lux",
unit);
224 s->b.ep =
s->b.p+
len;
230 d->addrsize =
s->b.addrsize;
258 if(
s->b.p >=
s->b.ep){
259 if(
s->allunits &&
s->nextunit <
d->info.len){
269 s->uoff =
s->b.p - (
d->info.data+
s->unit);
282 werrstr(
"getabbrev %ud %ud for %ud,%ud: %r\n",
s->aoff,
num,
s->unit,
s->uoff);
298 if(
s->depth ==
depth &&
s->attrs.have.sibling){
299 sib =
s->attrs.sibling;
300 if(sib < d->
info.len &&
d->info.data+sib >=
s->b.p)
301 s->b.p =
d->info.data+sib;
302 s->attrs.haskids = 0;
337#define OFFSET(x) offsetof(DwarfAttrs, x), offsetof(DwarfAttrs, have.x)
418 memset(attrs, 0,
sizeof *attrs);
422 for(
i=0;
i<
a->nattr;
i++){
427 werrstr(
"dwarf parse attrs: unexpected attribute name 0x%x",
n);
430 v = (
char*)attrs +
ptab[
n].off;
446 werrstr(
"dwarf parse attrs: cannot skip form %d",
f);
511 if(uv != *
u && ++nbad == 1)
512 werrstr(
"dwarf: truncating 64-bit attribute constants");
554 if(
u >=
b->d->str.len){
556 werrstr(
"dwarf: bad string pointer 0x%lux in attribute",
u);
560 *
s = (
char*)
b->d->str.data +
u;
int strcmp(const char *String1, const char *String2)
static enum @963 ordering
GLint GLint GLsizei GLsizei GLsizei depth
GLuint GLuint GLsizei GLenum type
GLuint GLuint GLsizei count
GLdouble GLdouble GLdouble r
GLdouble GLdouble GLdouble GLdouble top
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
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
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
png_const_structrp png_const_inforp int * unit
static int getstring(DwarfBuf *, int, char **)
int dwarflookupsubname(Dwarf *d, DwarfSym *parent, char *name, DwarfSym *s)
static int getuchar(DwarfBuf *, int, uchar *)
static int constblock(Dwarf *, DwarfBlock *, ulong *)
static int getblock(DwarfBuf *, int, DwarfBlock *)
int dwarflookupfn(Dwarf *d, ulong unit, ulong pc, DwarfSym *s)
int dwarfnextsymat(Dwarf *d, DwarfSym *s, int depth)
int dwarflookupnameinunit(Dwarf *d, ulong unit, char *name, DwarfSym *s)
static int getulong(DwarfBuf *, int, ulong, ulong *, int *)
int dwarfenumunit(Dwarf *d, ulong unit, DwarfSym *s)
int dwarflookuptag(Dwarf *d, ulong unit, ulong tag, DwarfSym *s)
static Parse ptab[DwarfAttrMax]
int dwarfnextsym(Dwarf *d, DwarfSym *s)
@ DwarfAttrIdentifierCase
@ DwarfAttrAbstractOrigin
@ DwarfAttrContainingType
int dwarfseeksym(Dwarf *d, ulong unit, ulong off, DwarfSym *s)
static int skipform(DwarfBuf *, int)
int dwarfenum(Dwarf *d, DwarfSym *s)
static int parseattrs(DwarfBuf *, ulong, DwarfAbbrev *, DwarfAttrs *)
unsigned long long uvlong
unsigned long long u64int
ulong dwarfget128(DwarfBuf *)
ulong dwarfget2(DwarfBuf *)
char * dwarfgetstring(DwarfBuf *)
ulong dwarfget1(DwarfBuf *)
long dwarfget128s(DwarfBuf *)
ulong dwarfgetaddr(DwarfBuf *)
uchar * dwarfgetnref(DwarfBuf *, ulong)
ulong dwarfget4(DwarfBuf *)
uvlong dwarfget8(DwarfBuf *)
DwarfAbbrev * dwarfgetabbrev(Dwarf *, ulong, ulong)