Lines Matching refs:relo

3889 			/* Only do relo for section with exec instructions */
3894 pr_info("elf: skipping relo section(%d) %s for section(%d) %s\n",
3898 pr_info("elf: skipping relo section(%d) %s for section(%d) %s\n",
4446 pr_warn("prog '%s': invalid relo against '%s' for insns[%d].code 0x%x\n",
4462 pr_warn("prog '%s': extern relo failed to find extern for '%s' (%d)\n",
4490 pr_warn("prog '%s': bad call relo against '%s' in section '%s'\n",
4495 pr_warn("prog '%s': bad call relo against '%s' at offset %zu\n",
4506 pr_warn("prog '%s': invalid relo against '%s' in special section 0x%x; forgot to initialize global var?..\n",
4517 pr_warn("prog '%s': bad subprog addr relo against '%s' at offset %zu+%d\n",
4537 pr_warn("prog '%s': bad map relo against '%s' in section '%s'\n",
4553 pr_warn("prog '%s': map relo failed to find map for section '%s', off %zu\n",
4566 pr_warn("prog '%s': bad data relo against section '%s'\n",
4580 pr_warn("prog '%s': data relo failed to find map for section '%s'\n",
4671 pr_warn("sec '%s': failed to get relo #%d\n", relo_sec_name, i);
4678 pr_warn("sec '%s': symbol #%zu not found for relo #%d\n",
4684 pr_warn("sec '%s': corrupted symbol #%zu pointing to invalid section #%zu for relo #%d\n",
4690 pr_warn("sec '%s': invalid offset 0x%zx for relo #%d\n",
4712 pr_debug("sec '%s': relo #%d: insn #%u against '%s'\n",
4717 pr_debug("sec '%s': relo #%d: couldn't find program in section '%s' for insn #%u, probably overridden weak function, skipping...\n",
6111 struct reloc_desc *relos, *relo;
6117 relo = &relos[prog->nr_reloc];
6118 relo->type = RELO_CORE;
6119 relo->insn_idx = insn_idx;
6120 relo->core_relo = core_relo;
6128 struct reloc_desc *relo;
6132 relo = &prog->reloc_desc[i];
6133 if (relo->type != RELO_CORE || relo->insn_idx != insn_idx)
6136 return relo->core_relo;
6143 const struct bpf_core_relo *relo,
6154 __u32 local_id = relo->type_id;
6165 if (relo->kind != BPF_CORE_TYPE_ID_LOCAL &&
6169 pr_warn("prog '%s': relo #%d: target candidate search failed for [%d] %s %s: %ld\n",
6181 return bpf_core_calc_relo_insn(prog_name, relo, relo_idx, local_btf, cands, specs_scratch,
6268 pr_warn("prog '%s': relo #%d: failed to record relocation: %d\n",
6278 pr_warn("prog '%s': relo #%d: failed to relocate: %d\n",
6285 pr_warn("prog '%s': relo #%d: failed to patch insn #%u: %d\n",
6316 pr_debug("prog '%s': relo #%d: poisoning insn #%d that loads map #%d '%s'\n",
6344 pr_debug("prog '%s': relo #%d: poisoning insn #%d that calls kfunc '%s'\n",
6371 struct reloc_desc *relo = &prog->reloc_desc[i];
6372 struct bpf_insn *insn = &prog->insns[relo->insn_idx];
6376 switch (relo->type) {
6378 map = &obj->maps[relo->map_idx];
6381 insn[0].imm = relo->map_idx;
6386 poison_map_ldimm64(prog, i, relo->insn_idx, insn,
6387 relo->map_idx, map);
6391 map = &obj->maps[relo->map_idx];
6392 insn[1].imm = insn[0].imm + relo->sym_off;
6395 insn[0].imm = relo->map_idx;
6400 poison_map_ldimm64(prog, i, relo->insn_idx, insn,
6401 relo->map_idx, map);
6405 ext = &obj->externs[relo->ext_idx];
6427 ext = &obj->externs[relo->ext_idx];
6433 poison_kfunc_call(prog, i, relo->insn_idx, insn,
6434 relo->ext_idx, ext);
6439 pr_warn("prog '%s': relo #%d: bad insn\n",
6452 pr_warn("prog '%s': relo #%d: bad relo type %d\n",
6453 prog->name, i, relo->type);
6604 const struct reloc_desc *relo = elem;
6606 if (insn_idx == relo->insn_idx)
6608 return insn_idx < relo->insn_idx ? -1 : 1;
6686 struct reloc_desc *relo;
6699 relo = find_prog_insn_relo(prog, insn_idx);
6700 if (relo && relo->type == RELO_EXTERN_CALL)
6705 if (relo && relo->type != RELO_CALL && relo->type != RELO_SUBPROG_ADDR) {
6706 pr_warn("prog '%s': unexpected relo for insn #%zu, type %d\n",
6707 prog->name, insn_idx, relo->type);
6710 if (relo) {
6718 * for subprog addr relocation, the relo->sym_off + insn->imm is
6721 if (relo->type == RELO_CALL)
6722 sub_insn_idx = relo->sym_off / BPF_INSN_SZ + insn->imm + 1;
6724 sub_insn_idx = (relo->sym_off + insn->imm) / BPF_INSN_SZ;
6727 * RELO_SUBPROG_ADDR relo is always emitted even if both
6730 pr_warn("prog '%s': missing subprog addr relo for insn #%zu\n",
6959 * would increase and most of them will fail to find a relo.
6964 struct reloc_desc *relo = &prog->reloc_desc[j];
6965 struct bpf_insn *insn = &prog->insns[relo->insn_idx];
6968 if (relo->type == RELO_SUBPROG_ADDR)
7064 pr_warn(".maps relo #%d: failed to get ELF relo\n", i);
7070 pr_warn(".maps relo #%d: symbol %zx not found\n",
7076 pr_debug(".maps relo #%d: for %zd value %zd rel->r_offset %zu name %d ('%s')\n",
7091 pr_warn(".maps relo #%d: cannot find map '%s' at rel->r_offset %zu\n",
7101 pr_warn(".maps relo #%d: '%s' isn't a BTF-defined map\n",
7107 pr_warn(".maps relo #%d: hash-of-maps '%s' should have key size %zu.\n",
7113 pr_warn(".maps relo #%d: '%s' isn't a valid map reference\n",
7120 pr_warn(".maps relo #%d: '%s' isn't a valid program reference\n",
7127 pr_warn(".maps relo #%d: '%s' isn't an entry-point program\n",
7167 pr_debug(".maps relo #%d: map '%s' slot [%d] points to %s '%s'\n",
7561 const struct bpf_core_relo *relo;
7569 relo = find_relo_core(prog, insn_idx);
7570 if (!relo)
7573 err = bpf_core_parse_spec(prog->name, prog->obj->btf, relo, &spec);
7708 struct reloc_desc *relo = &prog->reloc_desc[i];
7709 struct extern_desc *ext = &obj->externs[relo->ext_idx];
7712 switch (relo->type) {
7720 true, kind, relo->insn_idx);
7725 relo->insn_idx);
7729 .insn_off = relo->insn_idx * 8,
7730 .type_id = relo->core_relo->type_id,
7731 .access_str_off = relo->core_relo->access_str_off,
7732 .kind = relo->core_relo->kind,