Lines Matching refs:li
32 _dwarf_lineno_add_file(Dwarf_LineInfo li, uint8_t **p, const char *compdir, in _dwarf_lineno_add_file() argument
52 if (lf->lf_dirndx > li->li_inclen) { in _dwarf_lineno_add_file()
68 incdir = li->li_incdirs[lf->lf_dirndx - 1]; in _dwarf_lineno_add_file()
90 STAILQ_INSERT_TAIL(&li->li_lflist, lf, lf_next); in _dwarf_lineno_add_file()
91 li->li_lflen++; in _dwarf_lineno_add_file()
99 _dwarf_lineno_run_program(Dwarf_CU cu, Dwarf_LineInfo li, uint8_t *p, in _dwarf_lineno_run_program() argument
114 is_stmt = li->li_defstmt; \ in _dwarf_lineno_run_program()
127 ln->ln_li = li; \ in _dwarf_lineno_run_program()
136 STAILQ_INSERT_TAIL(&li->li_lnlist, ln, ln_next);\ in _dwarf_lineno_run_program()
137 li->li_lnlen++; \ in _dwarf_lineno_run_program()
140 #define LINE(x) (li->li_lbase + (((x) - li->li_opbase) % li->li_lrange)) in _dwarf_lineno_run_program()
141 #define ADDRESS(x) ((((x) - li->li_opbase) / li->li_lrange) * li->li_minlen) in _dwarf_lineno_run_program()
175 ret = _dwarf_lineno_add_file(li, &p, compdir, in _dwarf_lineno_run_program()
185 } else if (*p > 0 && *p < li->li_opbase) { in _dwarf_lineno_run_program()
198 li->li_minlen; in _dwarf_lineno_run_program()
251 STAILQ_FOREACH_SAFE(ln, &li->li_lnlist, ln_next, tln) { in _dwarf_lineno_run_program()
252 STAILQ_REMOVE(&li->li_lnlist, ln, _Dwarf_Line, ln_next); in _dwarf_lineno_run_program()
271 Dwarf_LineInfo li; in _dwarf_lineno_init() local
318 if ((li = calloc(1, sizeof(struct _Dwarf_LineInfo))) == NULL) { in _dwarf_lineno_init()
326 li->li_length = length; in _dwarf_lineno_init()
328 li->li_version = dbg->read(ds->ds_data, &offset, 2); /* FIXME: verify version */ in _dwarf_lineno_init()
329 li->li_hdrlen = dbg->read(ds->ds_data, &offset, dwarf_size); in _dwarf_lineno_init()
331 li->li_minlen = dbg->read(ds->ds_data, &offset, 1); in _dwarf_lineno_init()
332 if (li->li_version == 4) in _dwarf_lineno_init()
333 li->li_maxop = dbg->read(ds->ds_data, &offset, 1); in _dwarf_lineno_init()
334 li->li_defstmt = dbg->read(ds->ds_data, &offset, 1); in _dwarf_lineno_init()
335 li->li_lbase = dbg->read(ds->ds_data, &offset, 1); in _dwarf_lineno_init()
336 li->li_lrange = dbg->read(ds->ds_data, &offset, 1); in _dwarf_lineno_init()
337 li->li_opbase = dbg->read(ds->ds_data, &offset, 1); in _dwarf_lineno_init()
338 STAILQ_INIT(&li->li_lflist); in _dwarf_lineno_init()
339 STAILQ_INIT(&li->li_lnlist); in _dwarf_lineno_init()
341 if ((int)li->li_hdrlen - 5 < li->li_opbase - 1) { in _dwarf_lineno_init()
347 if ((li->li_oplen = malloc(li->li_opbase)) == NULL) { in _dwarf_lineno_init()
357 for (i = 1; i < li->li_opbase; i++) in _dwarf_lineno_init()
358 li->li_oplen[i] = dbg->read(ds->ds_data, &offset, 1); in _dwarf_lineno_init()
370 li->li_inclen = length; in _dwarf_lineno_init()
380 if ((li->li_incdirs = malloc(length * sizeof(char *))) == in _dwarf_lineno_init()
392 li->li_incdirs[i++] = (char *) p; in _dwarf_lineno_init()
403 ret = _dwarf_lineno_add_file(li, &p, compdir, error, dbg); in _dwarf_lineno_init()
416 if (p - ds->ds_data - hdroff != li->li_hdrlen) { in _dwarf_lineno_init()
425 ret = _dwarf_lineno_run_program(cu, li, p, ds->ds_data + endoff, compdir, in _dwarf_lineno_init()
430 cu->cu_lineinfo = li; in _dwarf_lineno_init()
436 STAILQ_FOREACH_SAFE(lf, &li->li_lflist, lf_next, tlf) { in _dwarf_lineno_init()
437 STAILQ_REMOVE(&li->li_lflist, lf, _Dwarf_LineFile, lf_next); in _dwarf_lineno_init()
443 if (li->li_oplen) in _dwarf_lineno_init()
444 free(li->li_oplen); in _dwarf_lineno_init()
445 if (li->li_incdirs) in _dwarf_lineno_init()
446 free(li->li_incdirs); in _dwarf_lineno_init()
447 free(li); in _dwarf_lineno_init()
453 _dwarf_lineno_cleanup(Dwarf_LineInfo li) in _dwarf_lineno_cleanup() argument
458 if (li == NULL) in _dwarf_lineno_cleanup()
460 STAILQ_FOREACH_SAFE(lf, &li->li_lflist, lf_next, tlf) { in _dwarf_lineno_cleanup()
461 STAILQ_REMOVE(&li->li_lflist, lf, in _dwarf_lineno_cleanup()
467 STAILQ_FOREACH_SAFE(ln, &li->li_lnlist, ln_next, tln) { in _dwarf_lineno_cleanup()
468 STAILQ_REMOVE(&li->li_lnlist, ln, _Dwarf_Line, in _dwarf_lineno_cleanup()
472 if (li->li_oplen) in _dwarf_lineno_cleanup()
473 free(li->li_oplen); in _dwarf_lineno_cleanup()
474 if (li->li_incdirs) in _dwarf_lineno_cleanup()
475 free(li->li_incdirs); in _dwarf_lineno_cleanup()
476 if (li->li_lnarray) in _dwarf_lineno_cleanup()
477 free(li->li_lnarray); in _dwarf_lineno_cleanup()
478 if (li->li_lfnarray) in _dwarf_lineno_cleanup()
479 free(li->li_lfnarray); in _dwarf_lineno_cleanup()
480 free(li); in _dwarf_lineno_cleanup()
487 Dwarf_LineInfo li; in _dwarf_lineno_gen_program() local
502 is_stmt = li->li_defstmt; \ in _dwarf_lineno_gen_program()
506 li = dbg->dbgp_lineinfo; in _dwarf_lineno_gen_program()
507 maddr = (255 - li->li_opbase) / li->li_lrange; in _dwarf_lineno_gen_program()
511 STAILQ_FOREACH(ln, &li->li_lnlist, ln_next) { in _dwarf_lineno_gen_program()
526 addr0 = (ln->ln_addr - address) / li->li_minlen; in _dwarf_lineno_gen_program()
568 addr0 = (ln->ln_addr - address) / li->li_minlen; in _dwarf_lineno_gen_program()
578 assert(li->li_lbase <= 0); in _dwarf_lineno_gen_program()
579 if (line0 >= li->li_lbase && in _dwarf_lineno_gen_program()
580 line0 <= li->li_lbase + li->li_lrange - 1) { in _dwarf_lineno_gen_program()
581 spc = (line0 - li->li_lbase) + in _dwarf_lineno_gen_program()
582 (li->li_lrange * addr0) + li->li_opbase; in _dwarf_lineno_gen_program()
601 spc = (line0 - li->li_lbase) + in _dwarf_lineno_gen_program()
602 (li->li_lrange * (addr0 - maddr)) + li->li_opbase; in _dwarf_lineno_gen_program()
653 Dwarf_LineInfo li; in _dwarf_lineno_gen() local
662 li = dbg->dbgp_lineinfo; in _dwarf_lineno_gen()
663 if (STAILQ_EMPTY(&li->li_lnlist)) in _dwarf_lineno_gen()
666 li->li_length = 0; in _dwarf_lineno_gen()
667 li->li_version = 2; in _dwarf_lineno_gen()
668 li->li_hdrlen = 0; in _dwarf_lineno_gen()
669 li->li_minlen = _dwarf_get_minlen(dbg); in _dwarf_lineno_gen()
670 li->li_defstmt = 1; in _dwarf_lineno_gen()
671 li->li_lbase = -5; in _dwarf_lineno_gen()
672 li->li_lrange = 14; in _dwarf_lineno_gen()
673 li->li_opbase = 10; in _dwarf_lineno_gen()
689 RCHECK(WRITE_VALUE(li->li_version, 2)); in _dwarf_lineno_gen()
693 RCHECK(WRITE_VALUE(li->li_hdrlen, 4)); in _dwarf_lineno_gen()
696 RCHECK(WRITE_VALUE(li->li_minlen, 1)); in _dwarf_lineno_gen()
702 RCHECK(WRITE_VALUE(li->li_defstmt, 1)); in _dwarf_lineno_gen()
708 RCHECK(WRITE_VALUE(li->li_lbase, 1)); in _dwarf_lineno_gen()
709 RCHECK(WRITE_VALUE(li->li_lrange, 1)); in _dwarf_lineno_gen()
712 RCHECK(WRITE_VALUE(li->li_opbase, 1)); in _dwarf_lineno_gen()
718 for (i = 0; (Dwarf_Unsigned) i < li->li_inclen; i++) in _dwarf_lineno_gen()
719 RCHECK(WRITE_STRING(li->li_incdirs[i])); in _dwarf_lineno_gen()
723 STAILQ_FOREACH(lf, &li->li_lflist, lf_next) { in _dwarf_lineno_gen()
732 li->li_hdrlen = ds->ds_size - offset - 4; in _dwarf_lineno_gen()
733 dbg->write(ds->ds_data, &offset, li->li_hdrlen, 4); in _dwarf_lineno_gen()
739 li->li_length = ds->ds_size - 4; in _dwarf_lineno_gen()
741 dbg->write(ds->ds_data, &offset, li->li_length, 4); in _dwarf_lineno_gen()
763 Dwarf_LineInfo li; in _dwarf_lineno_pro_cleanup() local
772 li = dbg->dbgp_lineinfo; in _dwarf_lineno_pro_cleanup()
773 STAILQ_FOREACH_SAFE(lf, &li->li_lflist, lf_next, tlf) { in _dwarf_lineno_pro_cleanup()
774 STAILQ_REMOVE(&li->li_lflist, lf, _Dwarf_LineFile, in _dwarf_lineno_pro_cleanup()
780 STAILQ_FOREACH_SAFE(ln, &li->li_lnlist, ln_next, tln) { in _dwarf_lineno_pro_cleanup()
781 STAILQ_REMOVE(&li->li_lnlist, ln, _Dwarf_Line, ln_next); in _dwarf_lineno_pro_cleanup()
784 if (li->li_incdirs) { in _dwarf_lineno_pro_cleanup()
785 for (i = 0; (Dwarf_Unsigned) i < li->li_inclen; i++) in _dwarf_lineno_pro_cleanup()
786 free(li->li_incdirs[i]); in _dwarf_lineno_pro_cleanup()
787 free(li->li_incdirs); in _dwarf_lineno_pro_cleanup()
789 free(li); in _dwarf_lineno_pro_cleanup()