mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 09:08:59 +00:00
libctf: dedup: add strtab deduplicator
This is a pretty simple two-phase process (count duplicates that are actually going to end up in the strtab and aren't e.g. strings without refs, strings with external refs etc, and move them into the parent) with one wrinkle: we sorta-abuse the csa_external_offset field in the deduplicated child atom (normally used to indicate that this string is located in the ELF strtab) to indicate that this atom is in the *parent*. If you think of "external" as meaning simply "is in some other strtab, we don't care which one", this still makes enough sense to not need to change the name, I hope. This is still not called from anywhere, so strings are (still!) not deduplicated, and none of the dedup machinery added in earlier commits does anything yet. libctf/ * ctf-dedup.c (ctf_dedup_emit_struct_members): Note that strtab dedup happens (well) after struct member emission. (ctf_dedup_strings): New. * ctf-impl.h (ctf_dedup_strings): Declare.
This commit is contained in:
@@ -739,6 +739,7 @@ extern int ctf_dedup (ctf_dict_t *, ctf_dict_t **, uint32_t ninputs,
|
||||
extern ctf_dict_t **ctf_dedup_emit (ctf_dict_t *, ctf_dict_t **,
|
||||
uint32_t ninputs, uint32_t *parents,
|
||||
uint32_t *noutputs, int cu_mapped);
|
||||
extern int ctf_dedup_strings (ctf_dict_t *fp);
|
||||
extern void ctf_dedup_fini (ctf_dict_t *, ctf_dict_t **, uint32_t);
|
||||
extern ctf_id_t ctf_dedup_type_mapping (ctf_dict_t *fp, ctf_dict_t *src_fp,
|
||||
ctf_id_t src_type);
|
||||
|
||||
Reference in New Issue
Block a user