Lines Matching refs:relo
5103 const struct bpf_core_relo *relo, in bpf_core_calc_field_relo() argument
5118 if (relo->kind == BPF_FIELD_EXISTS) { in bpf_core_calc_field_relo()
5131 if (relo->kind == BPF_FIELD_BYTE_OFFSET) { in bpf_core_calc_field_relo()
5139 } else if (relo->kind == BPF_FIELD_BYTE_SIZE) { in bpf_core_calc_field_relo()
5146 prog->name, relo->kind, relo->insn_off / 8); in bpf_core_calc_field_relo()
5168 prog->name, relo->kind, relo->insn_off / 8); in bpf_core_calc_field_relo()
5190 switch (relo->kind) { in bpf_core_calc_field_relo()
5228 static int bpf_core_calc_type_relo(const struct bpf_core_relo *relo, in bpf_core_calc_type_relo() argument
5240 switch (relo->kind) { in bpf_core_calc_type_relo()
5262 static int bpf_core_calc_enumval_relo(const struct bpf_core_relo *relo, in bpf_core_calc_enumval_relo() argument
5269 switch (relo->kind) { in bpf_core_calc_enumval_relo()
5319 const struct bpf_core_relo *relo, in bpf_core_calc_relo() argument
5335 if (core_relo_is_field_based(relo->kind)) { in bpf_core_calc_relo()
5336 err = bpf_core_calc_field_relo(prog, relo, local_spec, in bpf_core_calc_relo()
5339 err = err ?: bpf_core_calc_field_relo(prog, relo, targ_spec, in bpf_core_calc_relo()
5381 } else if (core_relo_is_type_based(relo->kind)) { in bpf_core_calc_relo()
5382 err = bpf_core_calc_type_relo(relo, local_spec, &res->orig_val); in bpf_core_calc_relo()
5383 err = err ?: bpf_core_calc_type_relo(relo, targ_spec, &res->new_val); in bpf_core_calc_relo()
5384 } else if (core_relo_is_enumval_based(relo->kind)) { in bpf_core_calc_relo()
5385 err = bpf_core_calc_enumval_relo(relo, local_spec, &res->orig_val); in bpf_core_calc_relo()
5386 err = err ?: bpf_core_calc_enumval_relo(relo, targ_spec, &res->new_val); in bpf_core_calc_relo()
5397 prog->name, relo_idx, core_relo_kind_str(relo->kind), in bpf_core_calc_relo()
5398 relo->kind, relo->insn_off / 8); in bpf_core_calc_relo()
5469 const struct bpf_core_relo *relo, in bpf_core_patch_insn() argument
5478 if (relo->insn_off % BPF_INSN_SZ) in bpf_core_patch_insn()
5480 insn_idx = relo->insn_off / BPF_INSN_SZ; in bpf_core_patch_insn()
5723 const struct bpf_core_relo *relo, in bpf_core_apply_relo() argument
5730 const void *type_key = u32_as_hash_key(relo->type_id); in bpf_core_apply_relo()
5739 local_id = relo->type_id; in bpf_core_apply_relo()
5748 spec_str = btf__name_by_offset(local_btf, relo->access_str_off); in bpf_core_apply_relo()
5752 err = bpf_core_parse_spec(local_btf, local_id, spec_str, relo->kind, &local_spec); in bpf_core_apply_relo()
5762 relo_idx, core_relo_kind_str(relo->kind), relo->kind); in bpf_core_apply_relo()
5767 if (relo->kind == BPF_TYPE_ID_LOCAL) { in bpf_core_apply_relo()
5778 prog->name, relo_idx, core_relo_kind_str(relo->kind), relo->kind); in bpf_core_apply_relo()
5816 err = bpf_core_calc_relo(prog, relo, relo_idx, &local_spec, &cand_spec, &cand_res); in bpf_core_apply_relo()
5873 err = bpf_core_calc_relo(prog, relo, relo_idx, &local_spec, NULL, &targ_res); in bpf_core_apply_relo()
5880 err = bpf_core_patch_insn(prog, relo, relo_idx, &targ_res); in bpf_core_apply_relo()
5883 prog->name, relo_idx, relo->insn_off, err); in bpf_core_apply_relo()
6006 struct reloc_desc *relo = &prog->reloc_desc[i]; in bpf_object__relocate_data() local
6007 struct bpf_insn *insn = &prog->insns[relo->insn_idx]; in bpf_object__relocate_data()
6010 switch (relo->type) { in bpf_object__relocate_data()
6013 insn[0].imm = obj->maps[relo->map_idx].fd; in bpf_object__relocate_data()
6014 relo->processed = true; in bpf_object__relocate_data()
6018 insn[1].imm = insn[0].imm + relo->sym_off; in bpf_object__relocate_data()
6019 insn[0].imm = obj->maps[relo->map_idx].fd; in bpf_object__relocate_data()
6020 relo->processed = true; in bpf_object__relocate_data()
6023 ext = &obj->externs[relo->sym_off]; in bpf_object__relocate_data()
6037 relo->processed = true; in bpf_object__relocate_data()
6044 prog->name, i, relo->type); in bpf_object__relocate_data()
6196 const struct reloc_desc *relo = elem; in cmp_relo_by_insn_idx() local
6198 if (insn_idx == relo->insn_idx) in cmp_relo_by_insn_idx()
6200 return insn_idx < relo->insn_idx ? -1 : 1; in cmp_relo_by_insn_idx()
6216 struct reloc_desc *relo; in bpf_object__reloc_code() local
6228 relo = find_prog_insn_relo(prog, insn_idx); in bpf_object__reloc_code()
6229 if (relo && relo->type != RELO_CALL) { in bpf_object__reloc_code()
6231 prog->name, insn_idx, relo->type); in bpf_object__reloc_code()
6234 if (relo) { in bpf_object__reloc_code()
6242 sub_insn_idx = relo->sym_off / BPF_INSN_SZ + insn->imm + 1; in bpf_object__reloc_code()
6305 if (relo) in bpf_object__reloc_code()
6306 relo->processed = true; in bpf_object__reloc_code()