From: Nick Alcock Date: Thu, 18 Mar 2021 12:37:52 +0000 (+0000) Subject: libctf: don't lose track of all valid types upon serialization X-Git-Tag: binutils-2_37~1415 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2a05d50e90c2c8219dd4119788548f64a934190e;p=thirdparty%2Fbinutils-gdb.git libctf: don't lose track of all valid types upon serialization One pattern which is rarely done in libctf but which is meant to work is this: ctf_create(); ctf_add_*(); // add stuff ctf_type_*() // look stuff up ctf_write_*(); ctf_add_*(); // should still work ctf_type_*() // so should this ctf_write_*(); // and this i.e., writing out a dict should not break it and you should be able to do everything you could do with it before, including writing it out again. Unfortunately this has been broken for a while because the field which indicates the maximum valid type ID was not preserved across serialization: so type additions after serialization would overwrite types (obviously disastrous) and type lookups would just fail. Fix trivial. libctf/ChangeLog 2021-03-18 Nick Alcock * ctf-serialize.c (ctf_serialize): Preserve ctf_typemax across serialization. --- diff --git a/libctf/ChangeLog b/libctf/ChangeLog index 3eff44c146a..c27464110fc 100644 --- a/libctf/ChangeLog +++ b/libctf/ChangeLog @@ -1,3 +1,8 @@ +2021-03-18 Nick Alcock + + * ctf-serialize.c (ctf_serialize): Preserve ctf_typemax across + serialization. + 2021-03-18 Nick Alcock * ctf-impl.h (ctf_dtdef_t) : Remove. diff --git a/libctf/ctf-serialize.c b/libctf/ctf-serialize.c index 460ae1a510e..17f11f67ffb 100644 --- a/libctf/ctf-serialize.c +++ b/libctf/ctf-serialize.c @@ -1113,6 +1113,7 @@ ctf_serialize (ctf_dict_t *fp) nfp->ctf_dynsyms = fp->ctf_dynsyms; nfp->ctf_ptrtab = fp->ctf_ptrtab; nfp->ctf_pptrtab = fp->ctf_pptrtab; + nfp->ctf_typemax = fp->ctf_typemax; nfp->ctf_dynsymidx = fp->ctf_dynsymidx; nfp->ctf_dynsymmax = fp->ctf_dynsymmax; nfp->ctf_ptrtab_len = fp->ctf_ptrtab_len;