dwbuf
read_leb128(struct dwbuf *d, uint64_t *v, bool signextend)
read_sleb128(struct dwbuf *d, int64_t *v)
read_uleb128(struct dwbuf *d, uint64_t *v)
read_string(struct dwbuf *d, const char **s)
read_buf(struct dwbuf *d, struct dwbuf *v, size_t n)
skip_bytes(struct dwbuf *d, size_t n)
read_filename(struct dwbuf *names, const char **outdirname,
struct dwbuf dirnames = *names;
struct dwbuf table = { .buf = linetab, .len = linetabsize };
struct dwbuf unit;
struct dwbuf headerstart = unit;
struct dwbuf names = unit;
struct dwbuf extra;
read_bytes(struct dwbuf *d, void *v, size_t n)
read_s8(struct dwbuf *d, int8_t *v)
read_u8(struct dwbuf *d, uint8_t *v)
read_u16(struct dwbuf *d, uint16_t *v)
read_u32(struct dwbuf *d, uint32_t *v)
read_u64(struct dwbuf *d, uint64_t *v)
dw_read_sleb128(struct dwbuf *d, int64_t *v)
dw_read_uleb128(struct dwbuf *d, uint64_t *v)
dw_read_string(struct dwbuf *d, const char **s)
dw_read_buf(struct dwbuf *d, struct dwbuf *v, size_t n)
dw_skip_bytes(struct dwbuf *d, size_t n)
dw_attr_parse(struct dwbuf *dwbuf, struct dwattr *dat, uint8_t psz,
if (dw_read_uleb128(dwbuf, &form) || (++i > 3))
error = dw_read_u32(dwbuf, &dav->dav_u32);
error = dw_read_u64(dwbuf, &dav->dav_u64);
error = dw_read_u8(dwbuf, &dav->dav_u8);
error = dw_read_buf(dwbuf, &dav->dav_buf, dav->dav_u8);
error = dw_read_u16(dwbuf, &dav->dav_u16);
error = dw_read_buf(dwbuf, &dav->dav_buf, dav->dav_u16);
error = dw_read_u32(dwbuf, &dav->dav_u32);
error = dw_read_buf(dwbuf, &dav->dav_buf, dav->dav_u32);
error = dw_read_uleb128(dwbuf, &dav->dav_u64);
error = dw_read_buf(dwbuf, &dav->dav_buf, dav->dav_u64);
error = dw_read_u8(dwbuf, &dav->dav_u8);
error = dw_read_u16(dwbuf, &dav->dav_u16);
error = dw_read_u32(dwbuf, &dav->dav_u32);
error = dw_read_u64(dwbuf, &dav->dav_u64);
error = dw_read_uleb128(dwbuf, &dav->dav_u64);
error = dw_read_sleb128(dwbuf, &dav->dav_s64);
error = dw_read_string(dwbuf, &dav->dav_str);
error = dw_read_u32(dwbuf, &dav->dav_u32);
dw_die_parse(struct dwbuf *dwbuf, size_t nextoff, uint8_t psz,
while (dwbuf->len > 0) {
doff = nextoff - dwbuf->len;
if (dw_read_uleb128(dwbuf, &code))
error = dw_attr_parse(dwbuf, dat, psz, &die->die_avals);
static int dw_read_u8(struct dwbuf *, uint8_t *);
static int dw_read_u16(struct dwbuf *, uint16_t *);
dw_ab_parse(struct dwbuf *abseg, struct dwabbrev_queue *dabq)
static int dw_read_u32(struct dwbuf *, uint32_t *);
static int dw_read_u64(struct dwbuf *, uint64_t *);
static int dw_read_sleb128(struct dwbuf *, int64_t *);
static int dw_read_uleb128(struct dwbuf *, uint64_t *);
static int dw_read_bytes(struct dwbuf *, void *, size_t);
dw_cu_parse(struct dwbuf *info, struct dwbuf *abbrev, size_t seglen,
static int dw_read_string(struct dwbuf *, const char **);
struct dwbuf abseg = *abbrev;
struct dwbuf dwbuf;
static int dw_read_buf(struct dwbuf *, struct dwbuf *, size_t);
static int dw_skip_bytes(struct dwbuf *, size_t);
if (dw_read_buf(info, &dwbuf, length))
if (dw_read_u16(&dwbuf, &version) ||
dw_read_bytes(&dwbuf, &abbroff, addrsize) ||
dw_read_u8(&dwbuf, &psz))
static int dw_attr_parse(struct dwbuf *, struct dwattr *, uint8_t,
error = dw_die_parse(&dwbuf, nextoff, psz, &dcu->dcu_abbrevs,
static int dw_die_parse(struct dwbuf *, size_t, uint8_t,
dw_loc_parse(struct dwbuf *dwbuf, uint8_t *pop, uint64_t *poper1,
if (dw_read_u8(dwbuf, &op))
dw_read_uleb128(dwbuf, &oper1);
dw_read_sleb128(dwbuf, &oper1);
dw_read_bytes(struct dwbuf *d, void *v, size_t n)
dw_read_u8(struct dwbuf *d, uint8_t *v)
dw_read_u16(struct dwbuf *d, uint16_t *v)
dw_read_u32(struct dwbuf *d, uint32_t *v)
dw_read_u64(struct dwbuf *d, uint64_t *v)
dw_read_leb128(struct dwbuf *d, uint64_t *v, int signextend)
struct dwbuf _buf;
int dw_loc_parse(struct dwbuf *, uint8_t *, uint64_t *, uint64_t *);
int dw_ab_parse(struct dwbuf *, struct dwabbrev_queue *);
int dw_cu_parse(struct dwbuf *, struct dwbuf *, size_t, struct dwcu **);
struct dwbuf info = { .buf = infobuf, .len = infolen };
struct dwbuf abbrev = { .buf = abbuf, .len = ablen };