• Home
  • Raw
  • Download

Lines Matching refs:dl

1113 static void disasm_line__init_ins(struct disasm_line *dl, struct arch *arch, struct map_symbol *ms)  in disasm_line__init_ins()  argument
1115 dl->ins.ops = ins__find(arch, dl->ins.name); in disasm_line__init_ins()
1117 if (!dl->ins.ops) in disasm_line__init_ins()
1120 if (dl->ins.ops->parse && dl->ins.ops->parse(arch, &dl->ops, ms) < 0) in disasm_line__init_ins()
1121 dl->ins.ops = NULL; in disasm_line__init_ins()
1198 struct disasm_line *dl = NULL; in disasm_line__new() local
1204 dl = zalloc(disasm_line_size(nr)); in disasm_line__new()
1205 if (!dl) in disasm_line__new()
1208 annotation_line__init(&dl->al, args, nr); in disasm_line__new()
1209 if (dl->al.line == NULL) in disasm_line__new()
1213 if (disasm_line__parse(dl->al.line, &dl->ins.name, &dl->ops.raw) < 0) in disasm_line__new()
1216 disasm_line__init_ins(dl, args->arch, &args->ms); in disasm_line__new()
1219 return dl; in disasm_line__new()
1222 zfree(&dl->al.line); in disasm_line__new()
1224 free(dl); in disasm_line__new()
1228 void disasm_line__free(struct disasm_line *dl) in disasm_line__free() argument
1230 if (dl->ins.ops && dl->ins.ops->free) in disasm_line__free()
1231 dl->ins.ops->free(&dl->ops); in disasm_line__free()
1233 ins__delete(&dl->ops); in disasm_line__free()
1234 zfree(&dl->ins.name); in disasm_line__free()
1235 annotation_line__exit(&dl->al); in disasm_line__free()
1236 free(dl); in disasm_line__free()
1239 int disasm_line__scnprintf(struct disasm_line *dl, char *bf, size_t size, bool raw, int max_ins_nam… in disasm_line__scnprintf() argument
1241 if (raw || !dl->ins.ops) in disasm_line__scnprintf()
1242 return scnprintf(bf, size, "%-*s %s", max_ins_name, dl->ins.name, dl->ops.raw); in disasm_line__scnprintf()
1244 return ins__scnprintf(&dl->ins, bf, size, &dl->ops, max_ins_name); in disasm_line__scnprintf()
1344 static int disasm_line__print(struct disasm_line *dl, u64 start, int addr_fmt_width) in disasm_line__print() argument
1346 s64 offset = dl->al.offset; in disasm_line__print()
1352 color_fprintf(stdout, annotate__asm_color(br), "%s", dl->al.line); in disasm_line__print()
1363 struct disasm_line *dl = container_of(al, struct disasm_line, al); in annotation_line__print() local
1437 disasm_line__print(dl, start, addr_fmt_width); in annotation_line__print()
1485 struct disasm_line *dl; in symbol__parse_objdump_line() local
1514 dl = disasm_line__new(args); in symbol__parse_objdump_line()
1517 if (dl == NULL) in symbol__parse_objdump_line()
1520 if (!disasm_line__has_local_offset(dl)) { in symbol__parse_objdump_line()
1521 dl->ops.target.offset = dl->ops.target.addr - in symbol__parse_objdump_line()
1523 dl->ops.target.offset_avail = true; in symbol__parse_objdump_line()
1527 if (dl->ins.ops && ins__is_call(&dl->ins) && !dl->ops.target.sym) { in symbol__parse_objdump_line()
1529 .addr = dl->ops.target.addr, in symbol__parse_objdump_line()
1535 dl->ops.target.sym = target.ms.sym; in symbol__parse_objdump_line()
1538 annotation_line__add(&dl->al, &notes->src->source); in symbol__parse_objdump_line()
1552 struct disasm_line *dl; in delete_last_nop() local
1555 dl = list_entry(list->prev, struct disasm_line, al.node); in delete_last_nop()
1557 if (dl->ins.ops) { in delete_last_nop()
1558 if (dl->ins.ops != &nop_ops) in delete_last_nop()
1561 if (!strstr(dl->al.line, " nop ") && in delete_last_nop()
1562 !strstr(dl->al.line, " nopl ") && in delete_last_nop()
1563 !strstr(dl->al.line, " nopw ")) in delete_last_nop()
1567 list_del_init(&dl->al.node); in delete_last_nop()
1568 disasm_line__free(dl); in delete_last_nop()
1779 struct disasm_line *dl; in symbol__disassemble_bpf() local
1807 dl = disasm_line__new(args); in symbol__disassemble_bpf()
1808 if (dl) { in symbol__disassemble_bpf()
1809 annotation_line__add(&dl->al, in symbol__disassemble_bpf()
1818 dl = disasm_line__new(args); in symbol__disassemble_bpf()
1819 if (dl) in symbol__disassemble_bpf()
1820 annotation_line__add(&dl->al, &notes->src->source); in symbol__disassemble_bpf()
1846 struct disasm_line *dl; in symbol__disassemble_bpf_image() local
1851 dl = disasm_line__new(args); in symbol__disassemble_bpf_image()
1852 if (dl) in symbol__disassemble_bpf_image()
1853 annotation_line__add(&dl->al, &notes->src->source); in symbol__disassemble_bpf_image()
2585 static size_t disasm_line__fprintf(struct disasm_line *dl, FILE *fp) in disasm_line__fprintf() argument
2589 if (dl->al.offset == -1) in disasm_line__fprintf()
2590 return fprintf(fp, "%s\n", dl->al.line); in disasm_line__fprintf()
2592 printed = fprintf(fp, "%#" PRIx64 " %s", dl->al.offset, dl->ins.name); in disasm_line__fprintf()
2594 if (dl->ops.raw[0] != '\0') { in disasm_line__fprintf()
2596 dl->ops.raw); in disasm_line__fprintf()
2613 bool disasm_line__is_valid_local_jump(struct disasm_line *dl, struct symbol *sym) in disasm_line__is_valid_local_jump() argument
2615 if (!dl || !dl->ins.ops || !ins__is_jump(&dl->ins) || in disasm_line__is_valid_local_jump()
2616 !disasm_line__has_local_offset(dl) || dl->ops.target.offset < 0 || in disasm_line__is_valid_local_jump()
2617 dl->ops.target.offset >= (s64)symbol__size(sym)) in disasm_line__is_valid_local_jump()
2633 struct disasm_line *dl; in annotation__mark_jump_targets() local
2635 dl = disasm_line(al); in annotation__mark_jump_targets()
2637 if (!disasm_line__is_valid_local_jump(dl, sym)) in annotation__mark_jump_targets()
2640 al = notes->offsets[dl->ops.target.offset]; in annotation__mark_jump_targets()
2851 static void disasm_line__write(struct disasm_line *dl, struct annotation *notes, in disasm_line__write() argument
2856 if (dl->ins.ops && dl->ins.ops->scnprintf) { in disasm_line__write()
2857 if (ins__is_jump(&dl->ins)) { in disasm_line__write()
2860 if (dl->ops.target.outside) in disasm_line__write()
2862 fwd = dl->ops.target.offset > dl->al.offset; in disasm_line__write()
2865 } else if (ins__is_call(&dl->ins)) { in disasm_line__write()
2869 } else if (ins__is_ret(&dl->ins)) { in disasm_line__write()
2879 disasm_line__scnprintf(dl, bf, size, !notes->options->use_offset, notes->widths.max_ins_name); in disasm_line__write()