Lines Matching refs:path

305 static int sanity_check_usdt_elf(Elf *elf, const char *path)
311 pr_warn("usdt: unrecognized ELF kind %d for '%s'\n", elf_kind(elf), path);
318 pr_warn("usdt: attaching to 64-bit ELF binary '%s' is not supported\n", path);
324 pr_warn("usdt: attaching to 32-bit ELF binary '%s' is not supported\n", path);
329 pr_warn("usdt: unsupported ELF class for '%s'\n", path);
338 path, ehdr.e_type);
350 pr_warn("usdt: ELF endianness mismatch for '%s'\n", path);
400 static int parse_elf_segs(Elf *elf, const char *path, struct elf_seg **segs, size_t *seg_cnt)
422 i, path, (long)phdr.p_vaddr, (long)phdr.p_memsz, (long)phdr.p_offset,
442 pr_warn("usdt: failed to find PT_LOAD program headers in '%s'\n", path);
452 char path[PATH_MAX], line[PATH_MAX], mode[16];
461 * /proc/<pid>/root/<path>. They will be reported as just /<path> in
464 if (sscanf(lib_path, "/proc/%d/root%s", &tmp_pid, path) == 2 && pid == tmp_pid)
467 if (!realpath(lib_path, path)) {
468 pr_warn("usdt: failed to get absolute path of '%s' (err %d), using path as is...\n",
470 libbpf_strlcpy(path, lib_path, sizeof(path));
483 /* We need to handle lines with no path at the end:
493 /* to handle no path case (see above) we need to capture line
500 if (strcmp(line + i, path) != 0)
504 path, seg_start, seg_end, mode, seg_off);
528 lib_path, path, pid);
572 static int parse_usdt_note(Elf *elf, const char *path, GElf_Nhdr *nhdr,
578 static int collect_usdt_targets(struct usdt_manager *man, Elf *elf, const char *path, pid_t pid,
598 pr_warn("usdt: no USDT notes section (%s) found in '%s'\n", USDT_NOTE_SEC, path);
603 pr_warn("usdt: invalid USDT notes section (%s) in '%s'\n", USDT_NOTE_SEC, path);
607 err = parse_elf_segs(elf, path, &segs, &seg_cnt);
609 pr_warn("usdt: failed to process ELF program segments for '%s': %d\n", path, err);
627 err = parse_usdt_note(elf, path, &nhdr, data->d_buf, name_off, desc_off, &note);
674 usdt_provider, usdt_name, path, usdt_abs_ip);
680 path, seg->start, seg->end, usdt_provider, usdt_name,
709 err = parse_vma_segs(pid, path, &vma_segs, &vma_seg_cnt);
712 pid, path, err);
721 usdt_provider, usdt_name, path, usdt_rel_ip);
729 usdt_provider, usdt_name, ehdr.e_type == ET_EXEC ? "exec" : "lib ", path,
737 usdt_provider, usdt_name, path);
746 usdt_provider, usdt_name, path, note.sema_addr);
752 path, seg->start, seg->end, usdt_provider, usdt_name,
761 path, note.sema_addr, note.base_addr, usdt_sema_off,
956 pid_t pid, const char *path,
973 err = elf_open(path, &elf_fd);
977 err = sanity_check_usdt_elf(elf_fd.elf, path);
990 err = collect_usdt_targets(man, elf_fd.elf, path, pid, usdt_provider, usdt_name,
1051 spec_id, usdt_provider, usdt_name, path, err);
1059 spec_id, usdt_provider, usdt_name, path);
1063 path, err);
1075 uprobe_link = bpf_program__attach_uprobe_opts(prog, pid, path,
1080 i, usdt_provider, usdt_name, path, err);
1098 link->multi_link = bpf_program__attach_uprobe_multi(prog, pid, path,
1103 usdt_provider, usdt_name, path, err);
1133 static int parse_usdt_note(Elf *elf, const char *path, GElf_Nhdr *nhdr,