Lines Matching refs:sec
40 struct section *sec, unsigned long offset) in find_insn() argument
45 if (insn->sec == sec && insn->offset == offset) in find_insn()
56 if (!next || &next->list == &file->insn_list || next->sec != insn->sec) in next_insn_same_sec()
79 return find_insn(file, func->cfunc->sec, func->cfunc->offset); in next_insn_same_func()
83 for (insn = find_insn(file, func->sec, func->offset); \
88 for (insn = find_insn(file, func->sec, func->offset); \
90 insn->sec == func->sec && \
97 insn->sec == func->sec && insn->offset >= func->offset; \
120 rela->sym->sec == func->sec && in ignore_func()
181 insn = find_insn(file, func->sec, func->offset); in __dead_end_function()
259 struct section *sec; in decode_instructions() local
265 for_each_sec(file, sec) { in decode_instructions()
267 if (!(sec->sh.sh_flags & SHF_EXECINSTR)) in decode_instructions()
270 if (strcmp(sec->name, ".altinstr_replacement") && in decode_instructions()
271 strcmp(sec->name, ".altinstr_aux") && in decode_instructions()
272 strncmp(sec->name, ".discard.", 9)) in decode_instructions()
273 sec->text = true; in decode_instructions()
275 for (offset = 0; offset < sec->len; offset += insn->len) { in decode_instructions()
285 insn->sec = sec; in decode_instructions()
288 ret = arch_decode_instruction(file->elf, sec, offset, in decode_instructions()
289 sec->len - offset, in decode_instructions()
298 insn->sec, insn->offset, insn->type); in decode_instructions()
307 list_for_each_entry(func, &sec->symbol_list, list) { in decode_instructions()
311 if (!find_insn(file, sec, func->offset)) { in decode_instructions()
335 struct section *sec; in add_dead_ends() local
351 sec = find_section_by_name(file->elf, ".rela.discard.unreachable"); in add_dead_ends()
352 if (!sec) in add_dead_ends()
355 list_for_each_entry(rela, &sec->rela_list, list) { in add_dead_ends()
357 WARN("unexpected relocation symbol type in %s", sec->name); in add_dead_ends()
360 insn = find_insn(file, rela->sym->sec, rela->addend); in add_dead_ends()
363 else if (rela->addend == rela->sym->sec->len) { in add_dead_ends()
366 if (insn->sec == rela->sym->sec) { in add_dead_ends()
374 rela->sym->sec->name, rela->addend); in add_dead_ends()
379 rela->sym->sec->name, rela->addend); in add_dead_ends()
393 sec = find_section_by_name(file->elf, ".rela.discard.reachable"); in add_dead_ends()
394 if (!sec) in add_dead_ends()
397 list_for_each_entry(rela, &sec->rela_list, list) { in add_dead_ends()
399 WARN("unexpected relocation symbol type in %s", sec->name); in add_dead_ends()
402 insn = find_insn(file, rela->sym->sec, rela->addend); in add_dead_ends()
405 else if (rela->addend == rela->sym->sec->len) { in add_dead_ends()
408 if (insn->sec == rela->sym->sec) { in add_dead_ends()
416 rela->sym->sec->name, rela->addend); in add_dead_ends()
421 rela->sym->sec->name, rela->addend); in add_dead_ends()
437 struct section *sec; in add_ignores() local
440 for_each_sec(file, sec) { in add_ignores()
441 list_for_each_entry(func, &sec->symbol_list, list) { in add_ignores()
462 struct section *sec; in add_nospec_ignores() local
466 sec = find_section_by_name(file->elf, ".rela.discard.nospec"); in add_nospec_ignores()
467 if (!sec) in add_nospec_ignores()
470 list_for_each_entry(rela, &sec->rela_list, list) { in add_nospec_ignores()
472 WARN("unexpected relocation symbol type in %s", sec->name); in add_nospec_ignores()
476 insn = find_insn(file, rela->sym->sec, rela->addend); in add_nospec_ignores()
506 rela = find_rela_by_dest_range(insn->sec, insn->offset, in add_jump_destinations()
509 dest_sec = insn->sec; in add_jump_destinations()
512 dest_sec = rela->sym->sec; in add_jump_destinations()
514 } else if (rela->sym->sec->idx) { in add_jump_destinations()
515 dest_sec = rela->sym->sec; in add_jump_destinations()
539 if (!strcmp(insn->sec->name, ".altinstr_replacement")) in add_jump_destinations()
543 insn->sec, insn->offset, dest_sec->name, in add_jump_destinations()
587 rela = find_rela_by_dest_range(insn->sec, insn->offset, in add_call_destinations()
591 insn->call_dest = find_symbol_by_offset(insn->sec, in add_call_destinations()
596 insn->sec, insn->offset); in add_call_destinations()
603 insn->call_dest = find_symbol_by_offset(rela->sym->sec, in add_call_destinations()
608 insn->sec, insn->offset, in add_call_destinations()
609 rela->sym->sec->name, in add_call_destinations()
671 fake_jump->sec = special_alt->new_sec; in handle_group_alt()
718 insn->sec, insn->offset); in handle_group_alt()
750 orig_insn->sec, orig_insn->offset); in handle_jump_alt()
848 if (rela->sym->sec == pfunc->sec && in add_switch_table()
852 alt_insn = find_insn(file, rela->sym->sec, rela->addend); in add_switch_table()
873 insn->sec, insn->offset); in add_switch_table()
938 insn->sec == func->sec && in find_switch_table()
954 text_rela = find_rela_by_dest_range(insn->sec, insn->offset, in find_switch_table()
1051 struct section *sec; in add_switch_table_alts() local
1058 for_each_sec(file, sec) { in add_switch_table_alts()
1059 list_for_each_entry(func, &sec->symbol_list, list) { in add_switch_table_alts()
1074 struct section *sec, *relasec; in read_unwind_hints() local
1081 sec = find_section_by_name(file->elf, ".discard.unwind_hints"); in read_unwind_hints()
1082 if (!sec) in read_unwind_hints()
1085 relasec = sec->rela; in read_unwind_hints()
1091 if (sec->len % sizeof(struct unwind_hint)) { in read_unwind_hints()
1098 for (i = 0; i < sec->len / sizeof(struct unwind_hint); i++) { in read_unwind_hints()
1099 hint = (struct unwind_hint *)sec->data->d_buf + i; in read_unwind_hints()
1101 rela = find_rela_by_dest(sec, i * sizeof(*hint)); in read_unwind_hints()
1107 insn = find_insn(file, rela->sym->sec, rela->addend); in read_unwind_hints()
1154 insn->sec, insn->offset, hint->sp_reg); in read_unwind_hints()
1168 struct section *sec; in read_retpoline_hints() local
1172 sec = find_section_by_name(file->elf, ".rela.discard.retpoline_safe"); in read_retpoline_hints()
1173 if (!sec) in read_retpoline_hints()
1176 list_for_each_entry(rela, &sec->rela_list, list) { in read_retpoline_hints()
1178 WARN("unexpected relocation symbol type in %s", sec->name); in read_retpoline_hints()
1182 insn = find_insn(file, rela->sym->sec, rela->addend); in read_retpoline_hints()
1191 insn->sec, insn->offset); in read_retpoline_hints()
1388 WARN_FUNC("undefined stack state", insn->sec, insn->offset); in update_insn_state()
1526 insn->sec, insn->offset); in update_insn_state()
1537 insn->sec, insn->offset); in update_insn_state()
1613 insn->sec, insn->offset); in update_insn_state()
1693 insn->sec, insn->offset); in update_insn_state()
1712 insn->sec, insn->offset); in update_insn_state()
1725 insn->sec, insn->offset); in update_insn_state()
1739 insn->sec, insn->offset, in insn_state_match()
1750 insn->sec, insn->offset, in insn_state_match()
1758 insn->sec, insn->offset, state1->type, state2->type); in insn_state_match()
1764 insn->sec, insn->offset, in insn_state_match()
1785 struct section *sec; in validate_branch() local
1790 sec = insn->sec; in validate_branch()
1794 sec, insn->offset); in validate_branch()
1811 sec, insn->offset); in validate_branch()
1837 sec, insn->offset); in validate_branch()
1853 sec, insn->offset); in validate_branch()
1880 sec, insn->offset); in validate_branch()
1906 sec, insn->offset); in validate_branch()
1923 sec, insn->offset); in validate_branch()
1936 sec, insn->offset); in validate_branch()
1945 sec, insn->offset); in validate_branch()
1966 WARN("%s: unexpected end of section", sec->name); in validate_branch()
2016 if (!strcmp(insn->sec->name, ".init.text") && !module) in validate_retpoline()
2020 insn->sec, insn->offset, in validate_retpoline()
2056 if (!strcmp(insn->sec->name, ".fixup") || in ignore_unreachable_insn()
2057 !strcmp(insn->sec->name, ".altinstr_replacement") || in ignore_unreachable_insn()
2058 !strcmp(insn->sec->name, ".altinstr_aux")) in ignore_unreachable_insn()
2095 struct section *sec; in validate_functions() local
2108 for_each_sec(file, sec) { in validate_functions()
2109 list_for_each_entry(func, &sec->symbol_list, list) { in validate_functions()
2113 insn = find_insn(file, sec, func->offset); in validate_functions()
2136 WARN_FUNC("unreachable instruction", insn->sec, insn->offset); in validate_reachable_instructions()