forked from Imagelibrary/binutils-gdb
The CTF serialization machinery decides whether to write out a dict as BTF or CTF (or, in LIBCTF_BTM_BTF mode, whether to write out a dict or fail with ECTF_NOTBTF) in part by looking at the type kinds in the dictionary. It is possible that you'd like to extend this check and ban specific type kinds from the dictionary (possibly even if it's CTF); it's also possible that you'd like to *not* fail even if a CTF-only kind is found, but rather replace it with a still-valid stub (CTF_K_UNKNOWN / BTF_KIND_UNKNOWN) and keep going. (The kernel's btfarchive machinery does this to ensure that the compiler and previous link stages have emitted only valid BTF type kinds.) ctf_write_suppress_kind supports both these use cases: +int ctf_write_suppress_kind (ctf_dict_t *fp, int kind, int prohibited); This commit adds only the core population code: the actual suppression is spread across the serializer and will be added in the next commits.
221 lines
4.2 KiB
Plaintext
221 lines
4.2 KiB
Plaintext
/* Copyright (C) 2019-2025 Free Software Foundation, Inc.
|
|
|
|
This file is part of libctf.
|
|
|
|
libctf is free software; you can redistribute it and/or modify it under
|
|
the terms of the GNU General Public License as published by the Free
|
|
Software Foundation; either version 3, or (at your option) any later
|
|
version.
|
|
|
|
This program is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
See the GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; see the file COPYING. If not see
|
|
<http://www.gnu.org/licenses/>. */
|
|
|
|
LIBCTF_2.0 {
|
|
global:
|
|
/* In libctf and libctf-nobfd. */
|
|
|
|
ctf_dict_open;
|
|
ctf_dict_open_sections;
|
|
ctf_bufopen;
|
|
ctf_simple_open;
|
|
ctf_create;
|
|
ctf_close;
|
|
ctf_ref;
|
|
ctf_dict_close;
|
|
ctf_file_close;
|
|
|
|
ctf_cuname;
|
|
ctf_cuname_set;
|
|
ctf_parent_file;
|
|
ctf_parent_name;
|
|
ctf_parent_name_set;
|
|
ctf_parent_dict;
|
|
ctf_type_isparent;
|
|
ctf_type_ischild;
|
|
|
|
ctf_import;
|
|
ctf_setmodel;
|
|
ctf_getmodel;
|
|
|
|
ctf_setspecific;
|
|
ctf_getspecific;
|
|
|
|
ctf_errno;
|
|
ctf_errmsg;
|
|
ctf_version;
|
|
|
|
ctf_func_info;
|
|
ctf_func_args;
|
|
ctf_func_arg_names;
|
|
ctf_func_type_info;
|
|
ctf_func_type_args;
|
|
ctf_func_type_arg_names;
|
|
|
|
ctf_lookup_by_name;
|
|
ctf_lookup_by_symbol;
|
|
ctf_lookup_by_kind;
|
|
ctf_symbol_next;
|
|
ctf_lookup_by_symbol_name;
|
|
ctf_arc_lookup_symbol;
|
|
ctf_arc_lookup_symbol_name;
|
|
|
|
ctf_lookup_variable;
|
|
|
|
ctf_type_resolve;
|
|
ctf_type_lname;
|
|
ctf_type_name;
|
|
ctf_type_name_raw;
|
|
ctf_type_aname;
|
|
ctf_type_aname_raw;
|
|
ctf_type_size;
|
|
ctf_type_align;
|
|
ctf_type_kind;
|
|
ctf_type_kind_forwarded;
|
|
ctf_type_conflicting;
|
|
ctf_type_reference;
|
|
ctf_type_linkage;
|
|
ctf_type_pointer;
|
|
ctf_type_encoding;
|
|
ctf_type_visit;
|
|
ctf_type_cmp;
|
|
ctf_type_compat;
|
|
ctf_type_data;
|
|
ctf_tag;
|
|
ctf_decl_tag;
|
|
|
|
ctf_member_info;
|
|
ctf_member_next;
|
|
ctf_array_info;
|
|
ctf_member_count;
|
|
ctf_struct_bitfield;
|
|
|
|
ctf_enum_name;
|
|
ctf_enum_value;
|
|
ctf_enum_unsigned_value;
|
|
ctf_enum_unsigned;
|
|
ctf_lookup_enumerator;
|
|
ctf_lookup_enumerator_next;
|
|
ctf_arc_lookup_enumerator_next;
|
|
|
|
ctf_member_iter;
|
|
ctf_enum_iter;
|
|
ctf_enum_next;
|
|
ctf_type_iter;
|
|
ctf_type_next;
|
|
ctf_type_iter_all;
|
|
ctf_type_kind_iter;
|
|
ctf_type_kind_next;
|
|
ctf_variable_iter;
|
|
ctf_variable_next;
|
|
ctf_datasec_iter;
|
|
ctf_datasec_next;
|
|
ctf_tag_next;
|
|
|
|
ctf_next_create;
|
|
ctf_next_destroy;
|
|
ctf_next_copy;
|
|
|
|
ctf_add_array;
|
|
ctf_add_const;
|
|
ctf_add_decl_tag;
|
|
ctf_add_decl_type_tag;
|
|
ctf_add_enum;
|
|
ctf_add_enum_encoded;
|
|
ctf_add_enum64;
|
|
ctf_add_enum64_encoded;
|
|
ctf_add_float;
|
|
ctf_add_btf_float;
|
|
ctf_add_forward;
|
|
ctf_add_function;
|
|
ctf_add_function_linkage;
|
|
ctf_add_integer;
|
|
ctf_add_pointer;
|
|
ctf_add_type;
|
|
ctf_add_typedef;
|
|
ctf_add_type_tag;
|
|
ctf_add_restrict;
|
|
ctf_add_section_variable;
|
|
ctf_add_slice;
|
|
ctf_add_struct;
|
|
ctf_add_union;
|
|
ctf_add_struct_sized;
|
|
ctf_add_union_sized;
|
|
ctf_add_unknown;
|
|
ctf_add_variable;
|
|
ctf_add_volatile;
|
|
|
|
ctf_add_enumerator;
|
|
ctf_add_member;
|
|
ctf_add_member_offset;
|
|
ctf_add_member_encoded;
|
|
ctf_add_member_bitfield;
|
|
|
|
ctf_set_array;
|
|
ctf_set_conflicting;
|
|
|
|
ctf_update;
|
|
ctf_discard;
|
|
ctf_snapshot;
|
|
ctf_rollback;
|
|
ctf_write;
|
|
ctf_write_mem;
|
|
ctf_gzwrite;
|
|
ctf_compress_write;
|
|
ctf_write_suppress_kind;
|
|
ctf_sect_size;
|
|
ctf_getdatasect;
|
|
ctf_getsymsect;
|
|
ctf_getstrsect;
|
|
ctf_symsect_endianness;
|
|
ctf_arc_symsect_endianness;
|
|
|
|
ctf_arc_write;
|
|
ctf_arc_write_fd;
|
|
ctf_arc_bufopen;
|
|
ctf_arc_close;
|
|
ctf_arc_open_by_name;
|
|
ctf_arc_open_by_name_sections;
|
|
ctf_archive_count;
|
|
ctf_archive_iter;
|
|
ctf_archive_next;
|
|
ctf_archive_raw_iter;
|
|
ctf_get_arc;
|
|
ctf_arc_flush_caches;
|
|
|
|
ctf_dump;
|
|
|
|
ctf_setdebug;
|
|
ctf_getdebug;
|
|
ctf_errwarning_next;
|
|
|
|
ctf_link_add_ctf;
|
|
ctf_link_add_cu_mapping;
|
|
ctf_link_set_memb_name_changer;
|
|
ctf_link_set_variable_filter;
|
|
ctf_link;
|
|
ctf_link_add_strtab;
|
|
ctf_link_shuffle_syms;
|
|
ctf_link_write;
|
|
|
|
ctf_link_add_linker_symbol;
|
|
ctf_add_objt_sym;
|
|
ctf_add_func_sym;
|
|
|
|
ctf_dict_set_flag;
|
|
ctf_dict_get_flag;
|
|
|
|
ctf_fdopen; /* libctf only. */
|
|
ctf_open; /* libctf only. */
|
|
ctf_arc_open; /* libctf only. */
|
|
ctf_bfdopen; /* libctf only. */
|
|
ctf_bfdopen_ctfsect; /* libctf only. */
|
|
local:
|
|
*;
|
|
};
|