/* Implementation header.
- Copyright (C) 2019-2021 Free Software Foundation, Inc.
+ Copyright (C) 2019-2022 Free Software Foundation, Inc.
This file is part of libctf.
#include <stddef.h>
#include <stdio.h>
#include <stdint.h>
+#include <string.h>
#include <limits.h>
#include <ctype.h>
#include <elf.h>
ctf_dynhash_t *ctf_link_inputs; /* Inputs to this link. */
ctf_dynhash_t *ctf_link_outputs; /* Additional outputs from this link. */
+ /* If a link input CU, points at the corresponding per-CU output (if any);
+ if an output, points at the input (if any). */
+ ctf_dict_t *ctf_link_in_out;
+
/* Map input types to output types for ctf_add_type. Key is a
ctf_link_type_key_t: value is a type ID. */
ctf_dynhash_t *ctf_link_type_mapping;
ctf_id_t ctn_type;
ssize_t ctn_size;
ssize_t ctn_increment;
+ const ctf_type_t *ctn_tp;
uint32_t ctn_n;
/* Some iterators contain other iterators, in addition to their other
members, and the structure, variable and enum members, etc. */
union
{
- const ctf_member_t *ctn_mp;
- const ctf_lmember_t *ctn_lmp;
+ unsigned char *ctn_vlen;
const ctf_enum_t *ctn_en;
const ctf_dvdef_t *ctn_dvd;
ctf_next_hkv_t *ctn_sorted_hkv;
extern int ctf_hash_eq_type_key (const void *, const void *);
extern int ctf_hash_eq_type_id_key (const void *, const void *);
-extern int ctf_dynset_eq_string (const void *, const void *);
-
typedef void (*ctf_hash_free_fun) (void *);
typedef void (*ctf_hash_iter_f) (void *key, void *value, void *arg);
extern const ctf_preamble_t *ctf_arc_bufpreamble (const ctf_sect_t *);
extern void *ctf_set_open_errno (int *, int);
extern unsigned long ctf_set_errno (ctf_dict_t *, int);
+extern void ctf_flip_header (ctf_header_t *);
+extern int ctf_flip (ctf_dict_t *, ctf_header_t *, unsigned char *, int);
extern ctf_dict_t *ctf_simple_open_internal (const char *, size_t, const char *,
size_t, size_t,