forked from Imagelibrary/binutils-gdb
Variable handling in BTF and CTFv4 works quite differently from in CTFv3. Rather than a separate section containing sorted, bsearchable variables, they are simply named entities like types, stored in CTF_K_VARs. As a first stage towards migrating to this, delete most references to the ctf_varent_t and ctf_dvdef_t, including the DVD lookup code, all the linking code, and quite a lot of the serialization code. Note: CTF_LINK_OMIT_VARIABLES_SECTION, and the whole "delete variables that already exist in the symtypetabs section" stuff, has yet to be reimplemented. We can implement CTF_LINK_OMIT_VARIABLES_SECTION by simply excising all CTF_K_VARs at deduplication time if requested. (Note: symtypetabs should still point directly at the type, not at the CTF_K_VAR.) (Symtypetabs in general need a bit more thought -- perhaps we can now store them in a separate .ctf.symtypetab section with its own little four-entry header for the symtypetabs and their indexes, making .ctf even more like .BTF; the only difference would then be that .ctf could include prefix types, CTF_K_FLOAT, and external string refs. For later discussion.) We also add ctf_lookup_by_kind() at this stage (because it is hopelessly diff-entangled with ctf_lookup_variable): this looks up a type of a particular kind, without needing a per-kind lookup function for it, nor needing to hack around adding string prefixes (so you can do ctf_lookup_by_kind (fp, CTF_K_STRUCT, "foo") rather than having to do ctf_lookup_by_name (fp, "struct foo"): often this is more convenient, and anything that reduces string buffer manipulation in C is good.)
195 lines
3.7 KiB
Plaintext
195 lines
3.7 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_type_info;
|
|
ctf_func_type_args;
|
|
|
|
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_reference;
|
|
ctf_type_pointer;
|
|
ctf_type_encoding;
|
|
ctf_type_visit;
|
|
ctf_type_cmp;
|
|
ctf_type_compat;
|
|
|
|
ctf_member_info;
|
|
ctf_member_next;
|
|
ctf_array_info;
|
|
ctf_member_count;
|
|
|
|
ctf_enum_name;
|
|
ctf_enum_value;
|
|
|
|
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_variable_iter;
|
|
ctf_variable_next;
|
|
|
|
ctf_next_create;
|
|
ctf_next_destroy;
|
|
ctf_next_copy;
|
|
|
|
ctf_add_array;
|
|
ctf_add_const;
|
|
ctf_add_enum;
|
|
ctf_add_enum_encoded;
|
|
ctf_add_float;
|
|
ctf_add_forward;
|
|
ctf_add_function;
|
|
ctf_add_integer;
|
|
ctf_add_pointer;
|
|
ctf_add_type;
|
|
ctf_add_typedef;
|
|
ctf_add_restrict;
|
|
ctf_add_slice;
|
|
ctf_add_struct;
|
|
ctf_add_union;
|
|
ctf_add_struct_sized;
|
|
ctf_add_union_sized;
|
|
ctf_add_unknown;
|
|
ctf_add_volatile;
|
|
|
|
ctf_add_enumerator;
|
|
ctf_add_member;
|
|
ctf_add_member_offset;
|
|
ctf_add_member_encoded;
|
|
ctf_add_variable;
|
|
|
|
ctf_set_array;
|
|
|
|
ctf_update;
|
|
ctf_discard;
|
|
ctf_snapshot;
|
|
ctf_rollback;
|
|
ctf_write;
|
|
ctf_write_mem;
|
|
ctf_gzwrite;
|
|
ctf_compress_write;
|
|
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:
|
|
*;
|
|
};
|