mirror of
https://github.com/netdata/libbpf.git
synced 2026-04-05 16:19:06 +08:00
libbpf: Add st_type argument to elf_resolve_syms_offsets function
We need to get offsets for static variables in following changes, so making elf_resolve_syms_offsets to take st_type value as argument and passing it to elf_sym_iter_new. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Acked-by: Andrii Nakryiko <andrii@kernel.org> Acked-by: Song Liu <song@kernel.org> Link: https://lore.kernel.org/bpf/20231125193130.834322-2-jolsa@kernel.org
This commit is contained in:
committed by
Andrii Nakryiko
parent
9c794e5ab4
commit
467dd7bda5
@@ -407,7 +407,8 @@ static int symbol_cmp(const void *a, const void *b)
|
|||||||
* size, that needs to be released by the caller.
|
* size, that needs to be released by the caller.
|
||||||
*/
|
*/
|
||||||
int elf_resolve_syms_offsets(const char *binary_path, int cnt,
|
int elf_resolve_syms_offsets(const char *binary_path, int cnt,
|
||||||
const char **syms, unsigned long **poffsets)
|
const char **syms, unsigned long **poffsets,
|
||||||
|
int st_type)
|
||||||
{
|
{
|
||||||
int sh_types[2] = { SHT_DYNSYM, SHT_SYMTAB };
|
int sh_types[2] = { SHT_DYNSYM, SHT_SYMTAB };
|
||||||
int err = 0, i, cnt_done = 0;
|
int err = 0, i, cnt_done = 0;
|
||||||
@@ -438,7 +439,7 @@ int elf_resolve_syms_offsets(const char *binary_path, int cnt,
|
|||||||
struct elf_sym_iter iter;
|
struct elf_sym_iter iter;
|
||||||
struct elf_sym *sym;
|
struct elf_sym *sym;
|
||||||
|
|
||||||
err = elf_sym_iter_new(&iter, elf_fd.elf, binary_path, sh_types[i], STT_FUNC);
|
err = elf_sym_iter_new(&iter, elf_fd.elf, binary_path, sh_types[i], st_type);
|
||||||
if (err == -ENOENT)
|
if (err == -ENOENT)
|
||||||
continue;
|
continue;
|
||||||
if (err)
|
if (err)
|
||||||
|
|||||||
@@ -11447,7 +11447,7 @@ bpf_program__attach_uprobe_multi(const struct bpf_program *prog,
|
|||||||
return libbpf_err_ptr(err);
|
return libbpf_err_ptr(err);
|
||||||
offsets = resolved_offsets;
|
offsets = resolved_offsets;
|
||||||
} else if (syms) {
|
} else if (syms) {
|
||||||
err = elf_resolve_syms_offsets(path, cnt, syms, &resolved_offsets);
|
err = elf_resolve_syms_offsets(path, cnt, syms, &resolved_offsets, STT_FUNC);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
return libbpf_err_ptr(err);
|
return libbpf_err_ptr(err);
|
||||||
offsets = resolved_offsets;
|
offsets = resolved_offsets;
|
||||||
|
|||||||
@@ -594,7 +594,8 @@ int elf_open(const char *binary_path, struct elf_fd *elf_fd);
|
|||||||
void elf_close(struct elf_fd *elf_fd);
|
void elf_close(struct elf_fd *elf_fd);
|
||||||
|
|
||||||
int elf_resolve_syms_offsets(const char *binary_path, int cnt,
|
int elf_resolve_syms_offsets(const char *binary_path, int cnt,
|
||||||
const char **syms, unsigned long **poffsets);
|
const char **syms, unsigned long **poffsets,
|
||||||
|
int st_type);
|
||||||
int elf_resolve_pattern_offsets(const char *binary_path, const char *pattern,
|
int elf_resolve_pattern_offsets(const char *binary_path, const char *pattern,
|
||||||
unsigned long **poffsets, size_t *pcnt);
|
unsigned long **poffsets, size_t *pcnt);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user