diff --git a/libctf/ctf-open.c b/libctf/ctf-open.c index 3ba78c89426..56b1084a6d6 100644 --- a/libctf/ctf-open.c +++ b/libctf/ctf-open.c @@ -364,7 +364,12 @@ ctf_set_base (ctf_dict_t *fp, const ctf_header_t *hp, unsigned char *base) /* Note: before conversion, these will be set to values that will be immediately invalidated by the conversion process, but the conversion - process will call ctf_set_base() again to fix things up. */ + process will call ctf_set_base() again to fix things up. + + These labels are explicitly constrained from being deduplicated (even though + .ctf is usually a duplicated name), because they are the key to identifying + the parent dict (and determining that this dict is a child) in the first + place. */ if (hp->cth_parlabel != 0) fp->ctf_parlabel = ctf_strptr (fp, hp->cth_parlabel); diff --git a/libctf/ctf-serialize.c b/libctf/ctf-serialize.c index 19ab8abf63e..52ae41d33ef 100644 --- a/libctf/ctf-serialize.c +++ b/libctf/ctf-serialize.c @@ -1048,9 +1048,9 @@ ctf_preserialize (ctf_dict_t *fp) hdrp = (ctf_header_t *) buf; if ((fp->ctf_flags & LCTF_CHILD) && (fp->ctf_parname != NULL)) - ctf_str_add_ref (fp, fp->ctf_parname, &hdrp->cth_parname); + ctf_str_add_no_dedup_ref (fp, fp->ctf_parname, &hdrp->cth_parname); if (fp->ctf_cuname != NULL) - ctf_str_add_ref (fp, fp->ctf_cuname, &hdrp->cth_cuname); + ctf_str_add_no_dedup_ref (fp, fp->ctf_cuname, &hdrp->cth_cuname); if (ctf_emit_symtypetab_sects (fp, &symstate, &t, objt_size, func_size, objtidx_size, funcidx_size) < 0) diff --git a/libctf/ctf-string.c b/libctf/ctf-string.c index dc72555c38f..f171f12b494 100644 --- a/libctf/ctf-string.c +++ b/libctf/ctf-string.c @@ -202,7 +202,9 @@ ctf_str_free_atom (void *a) pulled in.) Note that the *final strtab* may be entirely empty, if all its strings are - shared with the parent: the atoms table is a superset. */ + shared with the parent: the atoms table is a superset. (But this will never + happen in practice, because some header fields are explicitly never + deduplicated.) */ int ctf_str_create_atoms (ctf_dict_t *fp) {