libctf: create, types: conflicting types

The conflicting type kind is a CTF-specific prefix kind consisting purely of
an optional translation unit name.  It takes the place of the old hidden
bit: we have already seen it used to prefix types added with a
CTF_ADD_NONROOT flag.  The deduplicator will also use them to label
conflicting types from different TUs smushed into the same dict by the
CU-mapping mechanism: unlike the hidden bit, with this scheme users can tell
which CUs the conflicting types came from.

New API:

+int ctf_type_conflicting (ctf_dict_t *, ctf_id_t, const char **cuname);
+int ctf_set_conflicting (ctf_dict_t *, ctf_id_t, const char *);

(Frankly I expect ctf_set_conflicting to be used only by deduplicators and
things like that, but if we provide an option to query something we should
also provide an option to produce it...)
This commit is contained in:
Nick Alcock
2025-04-25 11:23:46 +01:00
parent fb8917ac21
commit d5dd8997b3
4 changed files with 96 additions and 1 deletions

View File

@@ -77,6 +77,7 @@ LIBCTF_2.0 {
ctf_type_align;
ctf_type_kind;
ctf_type_kind_forwarded;
ctf_type_conflicting;
ctf_type_reference;
ctf_type_linkage;
ctf_type_pointer;
@@ -155,6 +156,7 @@ LIBCTF_2.0 {
ctf_add_member_bitfield;
ctf_set_array;
ctf_set_conflicting;
ctf_update;
ctf_discard;