[PATCH 00/16] libctf: mostly cleanups and refactoring
Nick Alcock
nick.alcock@oracle.com
Sat Mar 6 00:40:07 GMT 2021
This series is mostly cleanups and refactoring in preparation for the
changes that will go into CTFv4, splitting serialization and dict writeout
into its own file and refactoring the representation of types in writable
dicts to use the same representation as used in written-out CTF dicts, and
to expand all CTF representations into their largest form for in-memory
processing, and to shrink them down to their smallest possible form only at
serialization time, so that code creating and querying types only needs to
handle one representation (the largest form used in written-out CTF dicts)
rather than three (the large form, the small form, and a form used only by
writable dicts). This will make it practical to add more compact
representations in v4.
There are also a couple of bugfixes, highly unlikely to be visible in any
current use case, since they mostly relate either to error-handling or to
writing out a dict and then doing something else with it, something the
linker does not do and neither will users who merely consume .ctf sections
produced by the linker.
Jammed in the middle is one top-level possible fix for bug 27482, which
might need review as it is top-level. (The reporter has not yet confirmed
that this fixes his bug, either, but it might!)
The usual great big pile of tests passed (including, now, just over a
thousand Gentoo packages successfully built with nary a CTF-related linker
warning).
Nick Alcock (16):
libctf: fix some tabdamage and move some code around
libctf: split serialization and file writeout into its own file
libctf: fix comment above ctf_dict_t
libctf: split up ctf_serialize
libctf: fix GNU style for do {} while
libctf: eliminate dtd_u, part 1: int/float/slice
libctf: eliminate dtd_u, part 2: arrays
libctf: eliminate dtd_u, part 3: functions
Add install dependencies for ld -> bfd and libctf -> bfd
libctf: don't lose track of all valid types upon serialization
libctf: do not corrupt strings across ctf_serialize
libctf: eliminate dtd_u, part 4: enums
libctf: eliminate dtd_u, part 5: structs / unions
libctf: types: unify code dealing with small-vs-large struct members
libctf: a couple of small error-handling fixes
libctf: support encodings for enums
Makefile.def | 6 +-
Makefile.in | 4 +-
ld/testsuite/ld-ctf/slice.c | 3 +
ld/testsuite/ld-ctf/slice.d | 4 +-
libctf/Makefile.am | 4 +-
libctf/Makefile.in | 44 +-
libctf/ctf-archive.c | 3 +-
libctf/ctf-create.c | 1893 +++--------------
libctf/ctf-dedup.c | 90 +-
libctf/ctf-dump.c | 8 +-
libctf/ctf-hash.c | 6 +
libctf/ctf-impl.h | 42 +-
libctf/ctf-link.c | 92 +-
libctf/ctf-lookup.c | 15 +-
libctf/ctf-open.c | 7 +-
libctf/ctf-serialize.c | 1419 ++++++++++++
libctf/ctf-string.c | 78 +-
libctf/ctf-types.c | 540 ++---
libctf/swap.h | 24 +-
.../testsuite/libctf-lookup/enum-many-ctf.c | 10 +
libctf/testsuite/libctf-lookup/enum-many.lk | 101 +
.../libctf-lookup/struct-iteration.c | 6 +-
.../type-add-unnamed-struct-ctf.c | 1 +
.../type-add-unnamed-struct.c | 4 +-
.../type-add-unnamed-struct.lk | 1 +
.../reserialize-strtab-corruption.c | 91 +
.../reserialize-strtab-corruption.lk | 5 +
28 files changed, 2414 insertions(+), 2095 deletions(-)
create mode 100644 libctf/ctf-serialize.c
create mode 100644 libctf/testsuite/libctf-lookup/enum-many-ctf.c
create mode 100644 libctf/testsuite/libctf-lookup/enum-many.lk
create mode 100644 libctf/testsuite/libctf-writable/reserialize-strtab-corruption.c
create mode 100644 libctf/testsuite/libctf-writable/reserialize-strtab-corruption.lk
--
2.30.0.252.gc27e85e57d
More information about the Binutils
mailing list