/* Copyright (C) 2019-2020 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_1.0 {
    global:
	/* In libctf and libctf-nobfd.  */

	ctf_bufopen;
	ctf_simple_open;
	ctf_create;
	ctf_close;
	ctf_file_close;

	ctf_cuname;
	ctf_cuname_set;
	ctf_parent_file;
	ctf_parent_name;
	ctf_parent_name_set;
	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_variable;

	ctf_type_resolve;
	ctf_type_lname;
	ctf_type_name;
	ctf_type_aname;
	ctf_type_aname_raw;
	ctf_type_size;
	ctf_type_align;
	ctf_type_kind;
	ctf_type_reference;
	ctf_type_pointer;
	ctf_type_encoding;
	ctf_type_visit;
	ctf_type_cmp;
	ctf_type_compat;

	ctf_member_info;
	ctf_array_info;

	ctf_enum_name;
	ctf_enum_value;

	ctf_label_set;
	ctf_label_get;

	ctf_label_topmost;
	ctf_label_info;

	ctf_member_iter;
	ctf_enum_iter;
	ctf_type_iter;
	ctf_type_iter_all;
	ctf_label_iter;
	ctf_variable_iter;

	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_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_arc_write;
	ctf_arc_write_fd;
	ctf_arc_open;
	ctf_arc_bufopen;
	ctf_arc_close;
	ctf_arc_open_by_name;
	ctf_arc_open_by_name_sections;
	ctf_archive_iter;
	ctf_archive_raw_iter;
	ctf_get_arc;

	ctf_dump;

	ctf_setdebug;
	ctf_getdebug;

	/* Not yet part of the stable API.  */

	ctf_link_add_ctf;
	ctf_link_add_cu_mapping;
	ctf_link_set_memb_name_changer;
	ctf_link;
	ctf_link_add_strtab;
	ctf_link_shuffle_syms;
	ctf_link_write;

	/* In libctf alone.  */

	ctf_fdopen;
	ctf_open;
	ctf_bfdopen;
	ctf_bfdopen_ctfsect;
    local:
	*;
};
