Lines Matching +full:arc +full:- +full:hs

1 // SPDX-License-Identifier: GPL-2.0-only
12 #include <subcmd/run-command.h>
15 #include "annotate-data.h"
16 #include "build-id.h"
21 #include "dwarf-regs.h"
35 /* These can be referred from the arch-dependent code */
57 regcomp(&file_lineno, "^/[^:]+:([0-9]+)", REG_EXTENDED); in symbol__init_regexpr()
65 if (arch->nr_instructions_allocated == 0 && arch->instructions) in arch__grow_instructions()
68 new_nr_allocated = arch->nr_instructions_allocated + 128; in arch__grow_instructions()
69 new_instructions = realloc(arch->instructions, new_nr_allocated * sizeof(struct ins)); in arch__grow_instructions()
71 return -1; in arch__grow_instructions()
74 arch->instructions = new_instructions; in arch__grow_instructions()
75 arch->nr_instructions_allocated = new_nr_allocated; in arch__grow_instructions()
79 new_nr_allocated = arch->nr_instructions + 128; in arch__grow_instructions()
82 return -1; in arch__grow_instructions()
84 memcpy(new_instructions, arch->instructions, arch->nr_instructions); in arch__grow_instructions()
92 if (arch->nr_instructions == arch->nr_instructions_allocated && in arch__associate_ins_ops()
94 return -1; in arch__associate_ins_ops()
96 ins = &arch->instructions[arch->nr_instructions]; in arch__associate_ins_ops()
97 ins->name = strdup(name); in arch__associate_ins_ops()
98 if (!ins->name) in arch__associate_ins_ops()
99 return -1; in arch__associate_ins_ops()
101 ins->ops = ops; in arch__associate_ins_ops()
102 arch->nr_instructions++; in arch__associate_ins_ops()
108 #include "arch/arc/annotate/instructions.c"
122 .name = "arc",
198 return strcmp(name, arch->name); in arch__key_cmp()
206 return strcmp(aa->name, ab->name); in arch__cmp()
231 return !strcmp(arch->name, name); in arch__is()
238 zfree(&ops->source.raw); in ins_ops__delete()
239 zfree(&ops->source.name); in ins_ops__delete()
240 zfree(&ops->target.raw); in ins_ops__delete()
241 zfree(&ops->target.name); in ins_ops__delete()
247 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, ops->raw); in ins__raw_scnprintf()
253 if (ins->ops->scnprintf) in ins__scnprintf()
254 return ins->ops->scnprintf(ins, bf, size, ops, max_ins_name); in ins__scnprintf()
261 if (!arch || !arch->ins_is_fused) in ins__is_fused()
264 return arch->ins_is_fused(arch, ins1, ins2); in ins__is_fused()
271 struct map *map = ms->map; in call__parse()
276 ops->target.addr = strtoull(ops->raw, &endptr, 16); in call__parse()
284 if (arch->objdump.skip_functions_char && in call__parse()
285 strchr(name, arch->objdump.skip_functions_char)) in call__parse()
286 return -1; in call__parse()
290 return -1; in call__parse()
293 ops->target.name = strdup(name); in call__parse()
296 if (ops->target.name == NULL) in call__parse()
297 return -1; in call__parse()
299 target.addr = map__objdump_2mem(map, ops->target.addr); in call__parse()
301 if (maps__find_ams(ms->maps, &target) == 0 && in call__parse()
302 map__rip_2objdump(target.ms.map, map__map_ip(target.ms.map, target.addr)) == ops->target.addr) in call__parse()
303 ops->target.sym = target.ms.sym; in call__parse()
312 /* Indirect call can use a non-rip register and offset: callq *0x8(%rbx). in call__parse()
315 ops->target.addr = strtoull(endptr, NULL, 16); in call__parse()
323 if (ops->target.sym) in call__scnprintf()
324 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, ops->target.sym->name); in call__scnprintf()
326 if (ops->target.addr == 0) in call__scnprintf()
329 if (ops->target.name) in call__scnprintf()
330 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, ops->target.name); in call__scnprintf()
332 return scnprintf(bf, size, "%-*s *%" PRIx64, max_ins_name, ins->name, ops->target.addr); in call__scnprintf()
342 return ins->ops == &call_ops || ins->ops == &s390_call_ops || ins->ops == &loongarch_call_ops; in ins__is_call()
347 * ffff200008446e70: b.cs ffff2000084470f4 <generic_exec_single+0x314> // b.hs, b.nlast
354 if (ops->jump.raw_comment && c > ops->jump.raw_comment) in validate_comma()
357 if (ops->jump.raw_func_start && c > ops->jump.raw_func_start) in validate_comma()
366 struct map *map = ms->map; in jump__parse()
367 struct symbol *sym = ms->sym; in jump__parse()
371 const char *c = strchr(ops->raw, ','); in jump__parse()
374 ops->jump.raw_comment = strchr(ops->raw, arch->objdump.comment_char); in jump__parse()
375 ops->jump.raw_func_start = strchr(ops->raw, '<'); in jump__parse()
396 ops->target.addr = strtoull(c, NULL, 16); in jump__parse()
397 if (!ops->target.addr) { in jump__parse()
402 ops->target.addr = strtoull(c, NULL, 16); in jump__parse()
406 ops->target.addr = strtoull(ops->raw, NULL, 16); in jump__parse()
409 target.addr = map__objdump_2mem(map, ops->target.addr); in jump__parse()
410 start = map__unmap_ip(map, sym->start); in jump__parse()
411 end = map__unmap_ip(map, sym->end); in jump__parse()
413 ops->target.outside = target.addr < start || target.addr > end; in jump__parse()
422 * cpp_named_operator2name is marked as being 32-bytes long, but it in in jump__parse()
424 * routine that looks for >= current->start and < next_symbol->start, in jump__parse()
433 if (maps__find_ams(ms->maps, &target) == 0 && in jump__parse()
434 map__rip_2objdump(target.ms.map, map__map_ip(target.ms.map, target.addr)) == ops->target.addr) in jump__parse()
435 ops->target.sym = target.ms.sym; in jump__parse()
437 if (!ops->target.outside) { in jump__parse()
438 ops->target.offset = target.addr - start; in jump__parse()
439 ops->target.offset_avail = true; in jump__parse()
441 ops->target.offset_avail = false; in jump__parse()
452 if (!ops->target.addr || ops->target.offset < 0) in jump__scnprintf()
455 if (ops->target.outside && ops->target.sym != NULL) in jump__scnprintf()
456 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, ops->target.sym->name); in jump__scnprintf()
458 c = strchr(ops->raw, ','); in jump__scnprintf()
465 /* check for 3-op insn */ in jump__scnprintf()
470 /* mirror arch objdump's space-after-comma style */ in jump__scnprintf()
475 return scnprintf(bf, size, "%-*s %.*s%" PRIx64, max_ins_name, in jump__scnprintf()
476 ins->name, c ? c - ops->raw : 0, ops->raw, in jump__scnprintf()
477 ops->target.offset); in jump__scnprintf()
483 * The ops->jump.raw_comment and ops->jump.raw_func_start belong to the in jump__delete()
496 return ins->ops == &jump_ops || ins->ops == &loongarch_jump_ops; in ins__is_jump()
511 return -1; in comment__symbol()
529 ops->locked.ops = zalloc(sizeof(*ops->locked.ops)); in lock__parse()
530 if (ops->locked.ops == NULL) in lock__parse()
533 if (disasm_line__parse(ops->raw, &ops->locked.ins.name, &ops->locked.ops->raw) < 0) in lock__parse()
536 ops->locked.ins.ops = ins__find(arch, ops->locked.ins.name, 0); in lock__parse()
538 if (ops->locked.ins.ops == NULL) in lock__parse()
541 if (ops->locked.ins.ops->parse && in lock__parse()
542 ops->locked.ins.ops->parse(arch, ops->locked.ops, ms, NULL) < 0) in lock__parse()
548 zfree(&ops->locked.ops); in lock__parse()
557 if (ops->locked.ins.ops == NULL) in lock__scnprintf()
560 printed = scnprintf(bf, size, "%-*s ", max_ins_name, ins->name); in lock__scnprintf()
561 return printed + ins__scnprintf(&ops->locked.ins, bf + printed, in lock__scnprintf()
562 size - printed, ops->locked.ops, max_ins_name); in lock__scnprintf()
567 struct ins *ins = &ops->locked.ins; in lock__delete()
569 if (ins->ops && ins->ops->free) in lock__delete()
570 ins->ops->free(ops->locked.ops); in lock__delete()
572 ins_ops__delete(ops->locked.ops); in lock__delete()
574 zfree(&ops->locked.ops); in lock__delete()
575 zfree(&ops->locked.ins.name); in lock__delete()
576 zfree(&ops->target.raw); in lock__delete()
577 zfree(&ops->target.name); in lock__delete()
597 if (arch->objdump.register_char == 0) in check_multi_regs()
600 if (arch->objdump.memory_ref_char) { in check_multi_regs()
601 op = strchr(op, arch->objdump.memory_ref_char); in check_multi_regs()
606 while ((op = strchr(op, arch->objdump.register_char)) != NULL) { in check_multi_regs()
617 char *s = strchr(ops->raw, ','), *target, *comment, prev; in mov__parse()
620 return -1; in mov__parse()
628 if (strchr(ops->raw, '(')) { in mov__parse()
630 s = strchr(ops->raw, ')'); in mov__parse()
632 return -1; in mov__parse()
636 ops->source.raw = strdup(ops->raw); in mov__parse()
639 if (ops->source.raw == NULL) in mov__parse()
640 return -1; in mov__parse()
642 ops->source.multi_regs = check_multi_regs(arch, ops->source.raw); in mov__parse()
645 comment = strchr(s, arch->objdump.comment_char); in mov__parse()
648 s = comment - 1; in mov__parse()
650 s = strchr(s, '\0') - 1; in mov__parse()
653 --s; in mov__parse()
658 ops->target.raw = strdup(target); in mov__parse()
661 if (ops->target.raw == NULL) in mov__parse()
664 ops->target.multi_regs = check_multi_regs(arch, ops->target.raw); in mov__parse()
670 comment__symbol(ops->source.raw, comment + 1, &ops->source.addr, &ops->source.name); in mov__parse()
671 comment__symbol(ops->target.raw, comment + 1, &ops->target.addr, &ops->target.name); in mov__parse()
676 zfree(&ops->source.raw); in mov__parse()
677 return -1; in mov__parse()
683 return scnprintf(bf, size, "%-*s %s,%s", max_ins_name, ins->name, in mov__scnprintf()
684 ops->source.name ?: ops->source.raw, in mov__scnprintf()
685 ops->target.name ?: ops->target.raw); in mov__scnprintf()
702 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, in arithmetic__scnprintf()
703 ops->raw); in arithmetic__scnprintf()
708 * "mem_ref" is set for ops->source which is later used to
709 * fill the objdump->memory_ref-char field. This ops is currently
715 * - Add to Minus One Extended XO-form ( Ex: addme, addmeo )
716 * - Subtract From Minus One Extended XO-form ( Ex: subfme )
717 * - Add to Zero Extended XO-form ( Ex: addze, addzeo )
718 * - Subtract From Zero Extended XO-form ( Ex: subfze )
723 int opcode = PPC_OP(dl->raw.raw_insn); in arithmetic__parse()
725 ops->source.mem_ref = false; in arithmetic__parse()
729 ops->source.multi_regs = true; in arithmetic__parse()
732 ops->target.mem_ref = false; in arithmetic__parse()
733 ops->target.multi_regs = false; in arithmetic__parse()
746 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, in load_store__scnprintf()
747 ops->raw); in load_store__scnprintf()
752 * "mem_ref" is set for ops->source which is later used to
753 * fill the objdump->memory_ref-char field. This ops is currently
760 ops->source.mem_ref = true; in load_store__parse()
761 ops->source.multi_regs = false; in load_store__parse()
763 if (PPC_OP(dl->raw.raw_insn) == 31) in load_store__parse()
764 ops->source.multi_regs = true; in load_store__parse()
766 ops->target.mem_ref = false; in load_store__parse()
767 ops->target.multi_regs = false; in load_store__parse()
782 target = s = ops->raw; in dec__parse()
789 ops->target.raw = strdup(target); in dec__parse()
792 if (ops->target.raw == NULL) in dec__parse()
793 return -1; in dec__parse()
795 comment = strchr(s, arch->objdump.comment_char); in dec__parse()
800 comment__symbol(ops->target.raw, comment + 1, &ops->target.addr, &ops->target.name); in dec__parse()
808 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, in dec__scnprintf()
809 ops->target.name ?: ops->target.raw); in dec__scnprintf()
820 return scnprintf(bf, size, "%-*s", max_ins_name, "nop"); in nop__scnprintf()
833 return ins->ops == &nop_ops; in ins__is_nop()
838 return ins->ops == &ret_ops; in ins__is_ret()
843 return ins->ops == &lock_ops; in ins__is_lock()
850 return strcmp(name, ins->name); in ins__key_cmp()
858 return strcmp(ia->name, ib->name); in ins__cmp()
863 const int nmemb = arch->nr_instructions; in ins__sort()
865 qsort(arch->instructions, nmemb, sizeof(struct ins), ins__cmp); in ins__sort()
871 const int nmemb = arch->nr_instructions; in __ins__find()
885 if (!arch->sorted_instructions) { in __ins__find()
887 arch->sorted_instructions = true; in __ins__find()
890 ins = bsearch(name, arch->instructions, nmemb, sizeof(struct ins), ins__key_cmp); in __ins__find()
892 return ins->ops; in __ins__find()
894 if (arch->insn_suffix) { in __ins__find()
902 suffix = name[len - 1]; in __ins__find()
903 if (strchr(arch->insn_suffix, suffix) == NULL) in __ins__find()
907 tmp[len - 1] = '\0'; /* remove the suffix and check again */ in __ins__find()
909 ins = bsearch(tmp, arch->instructions, nmemb, sizeof(struct ins), ins__key_cmp); in __ins__find()
911 return ins ? ins->ops : NULL; in __ins__find()
918 if (!ops && arch->associate_instruction_ops) in ins__find()
919 ops = arch->associate_instruction_ops(arch, name); in ins__find()
926 dl->ins.ops = ins__find(arch, dl->ins.name, dl); in disasm_line__init_ins()
928 if (!dl->ins.ops) in disasm_line__init_ins()
931 if (dl->ins.ops->parse && dl->ins.ops->parse(arch, &dl->ops, ms, dl) < 0) in disasm_line__init_ins()
932 dl->ins.ops = NULL; in disasm_line__init_ins()
940 return -1; in disasm_line__parse()
960 return -1; in disasm_line__parse()
977 char *line = dl->al.line; in disasm_line__parse_powerpc()
978 const char **namep = &dl->ins.name; in disasm_line__parse_powerpc()
979 char **rawp = &dl->ops.raw; in disasm_line__parse_powerpc()
985 if (args->options->disassembler_used) in disasm_line__parse_powerpc()
989 return -1; in disasm_line__parse_powerpc()
998 return -1; in disasm_line__parse_powerpc()
1002 sscanf(tmp_raw_insn, "%x", &dl->raw.raw_insn); in disasm_line__parse_powerpc()
1004 dl->raw.raw_insn = be32_to_cpu(dl->raw.raw_insn); in disasm_line__parse_powerpc()
1013 al->offset = args->offset; in annotation_line__init()
1014 al->line = strdup(args->line); in annotation_line__init()
1015 al->line_nr = args->line_nr; in annotation_line__init()
1016 al->fileloc = args->fileloc; in annotation_line__init()
1017 al->data_nr = nr; in annotation_line__init()
1022 zfree_srcline(&al->path); in annotation_line__exit()
1023 zfree(&al->line); in annotation_line__exit()
1024 zfree(&al->cycles); in annotation_line__exit()
1025 zfree(&al->br_cntr); in annotation_line__exit()
1032 return (sizeof(struct disasm_line) + (sizeof(al->data[0]) * nr)); in disasm_line_size()
1039 * -------------------------------------------
1041 * -------------------------------------------
1049 struct annotation *notes = symbol__annotation(args->ms.sym); in disasm_line__new()
1050 int nr = notes->src->nr_events; in disasm_line__new()
1056 annotation_line__init(&dl->al, args, nr); in disasm_line__new()
1057 if (dl->al.line == NULL) in disasm_line__new()
1060 if (args->offset != -1) { in disasm_line__new()
1061 if (arch__is(args->arch, "powerpc")) { in disasm_line__new()
1064 } else if (disasm_line__parse(dl->al.line, &dl->ins.name, &dl->ops.raw) < 0) in disasm_line__new()
1067 disasm_line__init_ins(dl, args->arch, &args->ms); in disasm_line__new()
1073 zfree(&dl->al.line); in disasm_line__new()
1081 if (dl->ins.ops && dl->ins.ops->free) in disasm_line__free()
1082 dl->ins.ops->free(&dl->ops); in disasm_line__free()
1084 ins_ops__delete(&dl->ops); in disasm_line__free()
1085 zfree(&dl->ins.name); in disasm_line__free()
1086 annotation_line__exit(&dl->al); in disasm_line__free()
1092 if (raw || !dl->ins.ops) in disasm_line__scnprintf()
1093 return scnprintf(bf, size, "%-*s %s", max_ins_name, dl->ins.name, dl->ops.raw); in disasm_line__scnprintf()
1095 return ins__scnprintf(&dl->ins, bf, size, &dl->ops, max_ins_name); in disasm_line__scnprintf()
1099 * symbol__parse_objdump_line() parses objdump output (with -d --no-show-raw)
1114 * The offset will be a relative offset from the start of the symbol and -1
1122 struct map *map = args->ms.map; in symbol__parse_objdump_line()
1126 s64 line_ip, offset = -1; in symbol__parse_objdump_line()
1140 u64 start = map__rip_2objdump(map, sym->start), in symbol__parse_objdump_line()
1141 end = map__rip_2objdump(map, sym->end); in symbol__parse_objdump_line()
1143 offset = line_ip - start; in symbol__parse_objdump_line()
1145 offset = -1; in symbol__parse_objdump_line()
1150 args->offset = offset; in symbol__parse_objdump_line()
1151 args->line = parsed_line; in symbol__parse_objdump_line()
1152 args->line_nr = *line_nr; in symbol__parse_objdump_line()
1153 args->fileloc = *fileloc; in symbol__parse_objdump_line()
1154 args->ms.sym = sym; in symbol__parse_objdump_line()
1160 return -1; in symbol__parse_objdump_line()
1163 dl->ops.target.offset = dl->ops.target.addr - in symbol__parse_objdump_line()
1164 map__rip_2objdump(map, sym->start); in symbol__parse_objdump_line()
1165 dl->ops.target.offset_avail = true; in symbol__parse_objdump_line()
1169 if (dl->ins.ops && ins__is_call(&dl->ins) && !dl->ops.target.sym) { in symbol__parse_objdump_line()
1171 .addr = dl->ops.target.addr, in symbol__parse_objdump_line()
1175 if (!maps__find_ams(args->ms.maps, &target) && in symbol__parse_objdump_line()
1176 target.ms.sym->start == target.al_addr) in symbol__parse_objdump_line()
1177 dl->ops.target.sym = target.ms.sym; in symbol__parse_objdump_line()
1180 annotation_line__add(&dl->al, &notes->src->source); in symbol__parse_objdump_line()
1187 struct list_head *list = &notes->src->source; in delete_last_nop()
1191 dl = list_entry(list->prev, struct disasm_line, al.node); in delete_last_nop()
1193 if (dl->ins.ops) { in delete_last_nop()
1194 if (!ins__is_nop(&dl->ins)) in delete_last_nop()
1197 if (!strstr(dl->al.line, " nop ") && in delete_last_nop()
1198 !strstr(dl->al.line, " nopl ") && in delete_last_nop()
1199 !strstr(dl->al.line, " nopw ")) in delete_last_nop()
1203 list_del_init(&dl->al.node); in delete_last_nop()
1210 struct dso *dso = map__dso(ms->map); in symbol__strerror_disassemble()
1225 build_id__snprintf(dso__bid(dso), bf + 15, sizeof(bf) - 15); in symbol__strerror_disassemble()
1232 " perf buildid-cache -vu vmlinux\n\n" in symbol__strerror_disassemble()
1234 " --vmlinux vmlinux\n", build_id_msg ?: ""); in symbol__strerror_disassemble()
1250 scnprintf(buf, buflen, "The %s BPF file has no BTF section, compile with -g or use pahole -J.", in symbol__strerror_disassemble()
1291 * old style build-id cache has name of XX/XXXXXXX.. while in dso__disassemble_filename()
1293 * extract the build-id part of dirname in the new style only. in dso__disassemble_filename()
1296 if (pos && strlen(pos) < SBUILD_ID_SIZE - 2) in dso__disassemble_filename()
1302 len = readlink(build_id_path, linkname, sizeof(linkname) - 1); in dso__disassemble_filename()
1311 * If we don't have build-ids or the build-id file isn't in the in dso__disassemble_filename()
1341 struct map *map = args->ms.map; in symbol__disassemble_raw()
1343 u64 start = map__rip_2objdump(map, sym->start); in symbol__disassemble_raw()
1344 u64 end = map__rip_2objdump(map, sym->end); in symbol__disassemble_raw()
1345 u64 len = end - start; in symbol__disassemble_raw()
1354 if (args->options->objdump_path) in symbol__disassemble_raw()
1355 return -1; in symbol__disassemble_raw()
1363 count = dso__data_read_offset(dso, NULL, sym->start, buf, len); in symbol__disassemble_raw()
1372 start, sym->name); in symbol__disassemble_raw()
1374 args->offset = -1; in symbol__disassemble_raw()
1375 args->line = disasm_buf; in symbol__disassemble_raw()
1376 args->line_nr = 0; in symbol__disassemble_raw()
1377 args->fileloc = NULL; in symbol__disassemble_raw()
1378 args->ms.sym = sym; in symbol__disassemble_raw()
1384 annotation_line__add(&dl->al, &notes->src->source); in symbol__disassemble_raw()
1390 args->offset = offset; in symbol__disassemble_raw()
1391 sprintf(args->line, "%x", line[i]); in symbol__disassemble_raw()
1396 annotation_line__add(&dl->al, &notes->src->source); in symbol__disassemble_raw()
1402 struct list_head *list = &notes->src->source; in symbol__disassemble_raw()
1408 list_del_init(&dl->al.node); in symbol__disassemble_raw()
1411 count = -1; in symbol__disassemble_raw()
1419 count = -1; in symbol__disassemble_raw()
1460 len = i - src; in expand_tabs()
1467 num_tabs--; in expand_tabs()
1472 len = line_len - src; in expand_tabs()
1488 args->offset = -1; in symbol__disassemble_bpf_image()
1489 args->line = strdup("to be implemented"); in symbol__disassemble_bpf_image()
1490 args->line_nr = 0; in symbol__disassemble_bpf_image()
1491 args->fileloc = NULL; in symbol__disassemble_bpf_image()
1494 annotation_line__add(&dl->al, &notes->src->source); in symbol__disassemble_bpf_image()
1496 zfree(&args->line); in symbol__disassemble_bpf_image()
1504 struct map *map = args->ms.map; in symbol__disassemble_objdump()
1515 "-c", in symbol__disassemble_objdump()
1517 "--", in symbol__disassemble_objdump()
1531 "%s %s%s --start-address=0x%016" PRIx64 in symbol__disassemble_objdump()
1532 " --stop-address=0x%016" PRIx64 in symbol__disassemble_objdump()
1533 " %s -d %s %s %s %c%s%c %s%s -C \"$1\"", in symbol__disassemble_objdump()
1534 opts->objdump_path ?: "objdump", in symbol__disassemble_objdump()
1535 opts->disassembler_style ? "-M " : "", in symbol__disassemble_objdump()
1536 opts->disassembler_style ?: "", in symbol__disassemble_objdump()
1537 map__rip_2objdump(map, sym->start), in symbol__disassemble_objdump()
1538 map__rip_2objdump(map, sym->end), in symbol__disassemble_objdump()
1539 opts->show_linenr ? "-l" : "", in symbol__disassemble_objdump()
1540 opts->show_asm_raw ? "" : "--no-show-raw-insn", in symbol__disassemble_objdump()
1541 opts->annotate_src ? "-S" : "", in symbol__disassemble_objdump()
1542 opts->prefix ? "--prefix " : "", in symbol__disassemble_objdump()
1543 opts->prefix ? '"' : ' ', in symbol__disassemble_objdump()
1544 opts->prefix ?: "", in symbol__disassemble_objdump()
1545 opts->prefix ? '"' : ' ', in symbol__disassemble_objdump()
1546 opts->prefix_strip ? "--prefix-strip=" : "", in symbol__disassemble_objdump()
1547 opts->prefix_strip ?: ""); in symbol__disassemble_objdump()
1562 objdump_process.out = -1; in symbol__disassemble_objdump()
1563 objdump_process.err = -1; in symbol__disassemble_objdump()
1567 err = -1; in symbol__disassemble_objdump()
1578 err = -1; in symbol__disassemble_objdump()
1623 err = -1; in symbol__disassemble_objdump()
1646 struct annotation_options *options = args->options; in symbol__disassemble()
1647 struct map *map = args->ms.map; in symbol__disassemble()
1659 symfs_filename, sym->name, map__unmap_ip(map, sym->start), in symbol__disassemble()
1660 map__unmap_ip(map, sym->end)); in symbol__disassemble()
1662 pr_debug("annotating [%p] %30s : [%p] %30s\n", dso, dso__long_name(dso), sym, sym->name); in symbol__disassemble()
1667 kce.addr = map__rip_2objdump(map, sym->start); in symbol__disassemble()
1669 kce.len = sym->end - sym->start; in symbol__disassemble()
1670 kce.offs = sym->start; in symbol__disassemble()
1680 return -1; in symbol__disassemble()
1693 if (arch__is(args->arch, "powerpc")) { in symbol__disassemble()
1708 if (options->annotate_src && !options->hide_src_code) { in symbol__disassemble()
1714 err = -1; in symbol__disassemble()
1715 for (u8 i = 0; i < ARRAY_SIZE(options->disassemblers) && err != 0; i++) { in symbol__disassemble()
1716 enum perf_disassembler dis = options->disassemblers[i]; in symbol__disassemble()
1720 args->options->disassembler_used = PERF_DISASM_LLVM; in symbol__disassemble()
1724 args->options->disassembler_used = PERF_DISASM_CAPSTONE; in symbol__disassemble()
1728 args->options->disassembler_used = PERF_DISASM_OBJDUMP; in symbol__disassemble()
1733 args->options->disassembler_used = PERF_DISASM_UNKNOWN; in symbol__disassemble()