size_t nr_maps;
 
        bool loaded;
+       bool has_pseudo_calls;
 
        /*
         * Information when doing elf related work. Only valid if fd
                const char *name = NULL;
 
                prog = &obj->programs[pi];
-               if (prog->idx == obj->efile.text_shndx) {
-                       name = ".text";
-                       goto skip_search;
-               }
 
                for (si = 0; si < symbols->d_size / sizeof(GElf_Sym) && !name;
                     si++) {
                        }
                }
 
+               if (!name && prog->idx == obj->efile.text_shndx)
+                       name = ".text";
+
                if (!name) {
                        pr_warning("failed to find sym for prog %s\n",
                                   prog->section_name);
                        return -EINVAL;
                }
-skip_search:
+
                prog->name = strdup(name);
                if (!prog->name) {
                        pr_warning("failed to allocate memory for prog sym %s\n",
                        prog->reloc_desc[i].type = RELO_CALL;
                        prog->reloc_desc[i].insn_idx = insn_idx;
                        prog->reloc_desc[i].text_off = sym.st_value;
+                       obj->has_pseudo_calls = true;
                        continue;
                }
 
        return err;
 }
 
+static bool bpf_program__is_function_storage(struct bpf_program *prog,
+                                            struct bpf_object *obj)
+{
+       return prog->idx == obj->efile.text_shndx && obj->has_pseudo_calls;
+}
+
 static int
 bpf_object__load_progs(struct bpf_object *obj)
 {
        int err;
 
        for (i = 0; i < obj->nr_programs; i++) {
-               if (obj->programs[i].idx == obj->efile.text_shndx)
+               if (bpf_program__is_function_storage(&obj->programs[i], obj))
                        continue;
                err = bpf_program__load(&obj->programs[i],
                                        obj->license,
                bpf_program__set_expected_attach_type(prog,
                                                      expected_attach_type);
 
-               if (prog->idx != obj->efile.text_shndx && !first_prog)
+               if (!bpf_program__is_function_storage(prog, obj) && !first_prog)
                        first_prog = prog;
        }