Lines Matching refs:subprog
6627 static int append_subprog_relos(struct bpf_program *main_prog, struct bpf_program *subprog) in append_subprog_relos() argument
6629 int new_cnt = main_prog->nr_reloc + subprog->nr_reloc; in append_subprog_relos()
6633 if (main_prog == subprog) in append_subprog_relos()
6642 if (subprog->nr_reloc) in append_subprog_relos()
6643 memcpy(relos + main_prog->nr_reloc, subprog->reloc_desc, in append_subprog_relos()
6644 sizeof(*relos) * subprog->nr_reloc); in append_subprog_relos()
6647 relos[i].insn_idx += subprog->sub_insn_off; in append_subprog_relos()
6656 static int save_subprog_offsets(struct bpf_program *main_prog, struct bpf_program *subprog) in save_subprog_offsets() argument
6667 main_prog->subprogs[cnt].sec_insn_off = subprog->sec_insn_off; in save_subprog_offsets()
6668 main_prog->subprogs[cnt].sub_insn_off = subprog->sub_insn_off; in save_subprog_offsets()
6676 struct bpf_program *subprog) in bpf_object__append_subprog_code() argument
6682 subprog->sub_insn_off = main_prog->insns_cnt; in bpf_object__append_subprog_code()
6684 new_cnt = main_prog->insns_cnt + subprog->insns_cnt; in bpf_object__append_subprog_code()
6693 memcpy(main_prog->insns + subprog->sub_insn_off, subprog->insns, in bpf_object__append_subprog_code()
6694 subprog->insns_cnt * sizeof(*insns)); in bpf_object__append_subprog_code()
6697 main_prog->name, subprog->insns_cnt, subprog->name); in bpf_object__append_subprog_code()
6700 err = append_subprog_relos(main_prog, subprog); in bpf_object__append_subprog_code()
6704 err = save_subprog_offsets(main_prog, subprog); in bpf_object__append_subprog_code()
6719 struct bpf_program *subprog; in bpf_object__reloc_code() local
6778 subprog = find_prog_by_sec_insn(obj, obj->efile.text_shndx, sub_insn_idx); in bpf_object__reloc_code()
6779 if (!subprog) { in bpf_object__reloc_code()
6795 if (subprog->sub_insn_off == 0) { in bpf_object__reloc_code()
6796 err = bpf_object__append_subprog_code(obj, main_prog, subprog); in bpf_object__reloc_code()
6799 err = bpf_object__reloc_code(obj, main_prog, subprog); in bpf_object__reloc_code()
6814 insn->imm = subprog->sub_insn_off - (prog->sub_insn_off + insn_idx) - 1; in bpf_object__reloc_code()
6817 prog->name, insn_idx, insn->imm, subprog->name, subprog->sub_insn_off); in bpf_object__reloc_code()
6907 struct bpf_program *subprog; in bpf_object__relocate_calls() local
6914 subprog = &obj->programs[i]; in bpf_object__relocate_calls()
6915 if (!prog_is_subprog(obj, subprog)) in bpf_object__relocate_calls()
6918 subprog->sub_insn_off = 0; in bpf_object__relocate_calls()
7018 struct bpf_program *subprog = &obj->programs[j]; in bpf_prog_assign_exc_cb() local
7020 if (!prog_is_subprog(obj, subprog)) in bpf_prog_assign_exc_cb()
7022 if (strcmp(name, subprog->name) != 0) in bpf_prog_assign_exc_cb()
7028 if (!subprog->sym_global || subprog->mark_btf_static) { in bpf_prog_assign_exc_cb()
7030 prog->name, subprog->name); in bpf_prog_assign_exc_cb()
7036 prog->name, subprog->name); in bpf_prog_assign_exc_cb()
7444 struct bpf_program *subprog = &obj->programs[prog->exception_cb_idx]; in bpf_object__relocate() local
7451 if (subprog->sub_insn_off == 0) { in bpf_object__relocate()
7452 err = bpf_object__append_subprog_code(obj, prog, subprog); in bpf_object__relocate()
7455 err = bpf_object__reloc_code(obj, prog, subprog); in bpf_object__relocate()