forked from Minki/linux
2db6eab18b
Add minimal support for program extensions. bpf_object_open_opts() needs to be called with attach_prog_fd = target_prog_fd and BPF program extension needs to have in .c file section definition like SEC("freplace/func_to_be_replaced"). libbpf will search for "func_to_be_replaced" in the target_prog_fd's BTF and will pass it in attach_btf_id to the kernel. This approach works for tests, but more compex use case may need to request function name (and attach_btf_id that kernel sees) to be more dynamic. Such API will be added in future patches. Signed-off-by: Alexei Starovoitov <ast@kernel.org> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: John Fastabend <john.fastabend@gmail.com> Acked-by: Andrii Nakryiko <andriin@fb.com> Acked-by: Toke Høiland-Jørgensen <toke@redhat.com> Link: https://lore.kernel.org/bpf/20200121005348.2769920-3-ast@kernel.org
238 lines
5.3 KiB
Plaintext
238 lines
5.3 KiB
Plaintext
LIBBPF_0.0.1 {
|
|
global:
|
|
bpf_btf_get_fd_by_id;
|
|
bpf_create_map;
|
|
bpf_create_map_in_map;
|
|
bpf_create_map_in_map_node;
|
|
bpf_create_map_name;
|
|
bpf_create_map_node;
|
|
bpf_create_map_xattr;
|
|
bpf_load_btf;
|
|
bpf_load_program;
|
|
bpf_load_program_xattr;
|
|
bpf_map__btf_key_type_id;
|
|
bpf_map__btf_value_type_id;
|
|
bpf_map__def;
|
|
bpf_map__fd;
|
|
bpf_map__is_offload_neutral;
|
|
bpf_map__name;
|
|
bpf_map__next;
|
|
bpf_map__pin;
|
|
bpf_map__prev;
|
|
bpf_map__priv;
|
|
bpf_map__reuse_fd;
|
|
bpf_map__set_ifindex;
|
|
bpf_map__set_inner_map_fd;
|
|
bpf_map__set_priv;
|
|
bpf_map__unpin;
|
|
bpf_map_delete_elem;
|
|
bpf_map_get_fd_by_id;
|
|
bpf_map_get_next_id;
|
|
bpf_map_get_next_key;
|
|
bpf_map_lookup_and_delete_elem;
|
|
bpf_map_lookup_elem;
|
|
bpf_map_update_elem;
|
|
bpf_obj_get;
|
|
bpf_obj_get_info_by_fd;
|
|
bpf_obj_pin;
|
|
bpf_object__btf_fd;
|
|
bpf_object__close;
|
|
bpf_object__find_map_by_name;
|
|
bpf_object__find_map_by_offset;
|
|
bpf_object__find_program_by_title;
|
|
bpf_object__kversion;
|
|
bpf_object__load;
|
|
bpf_object__name;
|
|
bpf_object__next;
|
|
bpf_object__open;
|
|
bpf_object__open_buffer;
|
|
bpf_object__open_xattr;
|
|
bpf_object__pin;
|
|
bpf_object__pin_maps;
|
|
bpf_object__pin_programs;
|
|
bpf_object__priv;
|
|
bpf_object__set_priv;
|
|
bpf_object__unload;
|
|
bpf_object__unpin_maps;
|
|
bpf_object__unpin_programs;
|
|
bpf_perf_event_read_simple;
|
|
bpf_prog_attach;
|
|
bpf_prog_detach;
|
|
bpf_prog_detach2;
|
|
bpf_prog_get_fd_by_id;
|
|
bpf_prog_get_next_id;
|
|
bpf_prog_load;
|
|
bpf_prog_load_xattr;
|
|
bpf_prog_query;
|
|
bpf_prog_test_run;
|
|
bpf_prog_test_run_xattr;
|
|
bpf_program__fd;
|
|
bpf_program__is_kprobe;
|
|
bpf_program__is_perf_event;
|
|
bpf_program__is_raw_tracepoint;
|
|
bpf_program__is_sched_act;
|
|
bpf_program__is_sched_cls;
|
|
bpf_program__is_socket_filter;
|
|
bpf_program__is_tracepoint;
|
|
bpf_program__is_xdp;
|
|
bpf_program__load;
|
|
bpf_program__next;
|
|
bpf_program__nth_fd;
|
|
bpf_program__pin;
|
|
bpf_program__pin_instance;
|
|
bpf_program__prev;
|
|
bpf_program__priv;
|
|
bpf_program__set_expected_attach_type;
|
|
bpf_program__set_ifindex;
|
|
bpf_program__set_kprobe;
|
|
bpf_program__set_perf_event;
|
|
bpf_program__set_prep;
|
|
bpf_program__set_priv;
|
|
bpf_program__set_raw_tracepoint;
|
|
bpf_program__set_sched_act;
|
|
bpf_program__set_sched_cls;
|
|
bpf_program__set_socket_filter;
|
|
bpf_program__set_tracepoint;
|
|
bpf_program__set_type;
|
|
bpf_program__set_xdp;
|
|
bpf_program__title;
|
|
bpf_program__unload;
|
|
bpf_program__unpin;
|
|
bpf_program__unpin_instance;
|
|
bpf_prog_linfo__free;
|
|
bpf_prog_linfo__new;
|
|
bpf_prog_linfo__lfind_addr_func;
|
|
bpf_prog_linfo__lfind;
|
|
bpf_raw_tracepoint_open;
|
|
bpf_set_link_xdp_fd;
|
|
bpf_task_fd_query;
|
|
bpf_verify_program;
|
|
btf__fd;
|
|
btf__find_by_name;
|
|
btf__free;
|
|
btf__get_from_id;
|
|
btf__name_by_offset;
|
|
btf__new;
|
|
btf__resolve_size;
|
|
btf__resolve_type;
|
|
btf__type_by_id;
|
|
libbpf_attach_type_by_name;
|
|
libbpf_get_error;
|
|
libbpf_prog_type_by_name;
|
|
libbpf_set_print;
|
|
libbpf_strerror;
|
|
local:
|
|
*;
|
|
};
|
|
|
|
LIBBPF_0.0.2 {
|
|
global:
|
|
bpf_probe_helper;
|
|
bpf_probe_map_type;
|
|
bpf_probe_prog_type;
|
|
bpf_map__resize;
|
|
bpf_map_lookup_elem_flags;
|
|
bpf_object__btf;
|
|
bpf_object__find_map_fd_by_name;
|
|
bpf_get_link_xdp_id;
|
|
btf__dedup;
|
|
btf__get_map_kv_tids;
|
|
btf__get_nr_types;
|
|
btf__get_raw_data;
|
|
btf__load;
|
|
btf_ext__free;
|
|
btf_ext__func_info_rec_size;
|
|
btf_ext__get_raw_data;
|
|
btf_ext__line_info_rec_size;
|
|
btf_ext__new;
|
|
btf_ext__reloc_func_info;
|
|
btf_ext__reloc_line_info;
|
|
xsk_umem__create;
|
|
xsk_socket__create;
|
|
xsk_umem__delete;
|
|
xsk_socket__delete;
|
|
xsk_umem__fd;
|
|
xsk_socket__fd;
|
|
bpf_program__get_prog_info_linear;
|
|
bpf_program__bpil_addr_to_offs;
|
|
bpf_program__bpil_offs_to_addr;
|
|
} LIBBPF_0.0.1;
|
|
|
|
LIBBPF_0.0.3 {
|
|
global:
|
|
bpf_map__is_internal;
|
|
bpf_map_freeze;
|
|
btf__finalize_data;
|
|
} LIBBPF_0.0.2;
|
|
|
|
LIBBPF_0.0.4 {
|
|
global:
|
|
bpf_link__destroy;
|
|
bpf_object__load_xattr;
|
|
bpf_program__attach_kprobe;
|
|
bpf_program__attach_perf_event;
|
|
bpf_program__attach_raw_tracepoint;
|
|
bpf_program__attach_tracepoint;
|
|
bpf_program__attach_uprobe;
|
|
btf_dump__dump_type;
|
|
btf_dump__free;
|
|
btf_dump__new;
|
|
btf__parse_elf;
|
|
libbpf_num_possible_cpus;
|
|
perf_buffer__free;
|
|
perf_buffer__new;
|
|
perf_buffer__new_raw;
|
|
perf_buffer__poll;
|
|
xsk_umem__create;
|
|
} LIBBPF_0.0.3;
|
|
|
|
LIBBPF_0.0.5 {
|
|
global:
|
|
bpf_btf_get_next_id;
|
|
} LIBBPF_0.0.4;
|
|
|
|
LIBBPF_0.0.6 {
|
|
global:
|
|
bpf_get_link_xdp_info;
|
|
bpf_map__get_pin_path;
|
|
bpf_map__is_pinned;
|
|
bpf_map__set_pin_path;
|
|
bpf_object__open_file;
|
|
bpf_object__open_mem;
|
|
bpf_program__attach_trace;
|
|
bpf_program__get_expected_attach_type;
|
|
bpf_program__get_type;
|
|
bpf_program__is_tracing;
|
|
bpf_program__set_tracing;
|
|
bpf_program__size;
|
|
btf__find_by_name_kind;
|
|
libbpf_find_vmlinux_btf_id;
|
|
} LIBBPF_0.0.5;
|
|
|
|
LIBBPF_0.0.7 {
|
|
global:
|
|
btf_dump__emit_type_decl;
|
|
bpf_link__disconnect;
|
|
bpf_map__attach_struct_ops;
|
|
bpf_map_delete_batch;
|
|
bpf_map_lookup_and_delete_batch;
|
|
bpf_map_lookup_batch;
|
|
bpf_map_update_batch;
|
|
bpf_object__find_program_by_name;
|
|
bpf_object__attach_skeleton;
|
|
bpf_object__destroy_skeleton;
|
|
bpf_object__detach_skeleton;
|
|
bpf_object__load_skeleton;
|
|
bpf_object__open_skeleton;
|
|
bpf_probe_large_insn_limit;
|
|
bpf_prog_attach_xattr;
|
|
bpf_program__attach;
|
|
bpf_program__name;
|
|
bpf_program__is_extension;
|
|
bpf_program__is_struct_ops;
|
|
bpf_program__set_extension;
|
|
bpf_program__set_struct_ops;
|
|
btf__align_of;
|
|
libbpf_find_kernel_btf;
|
|
} LIBBPF_0.0.6;
|