The existing ctf_lookup_by_symbol and ctf_arc_lookup_symbol functions suffice to look up the types of symbols if the caller already has a symbol number. But the caller often doesn't have one of those and only knows the name of the symbol: also, in object files, the caller might not have a useful symbol number in any sense (and neither does libctf: the 'symbol number' we use in that case literally starts at 0 for the lexicographically first-sorted symbol in the symtypetab and counts those symbols, so it corresponds to nothing useful). This means that even though object files have a symtypetab (generated by the compiler or by ld -r), the only way we can look up anything in it is to iterate over all symbols in turn with ctf_symbol_next until we find the one we want. This is unhelpful and pointlessly inefficient. So add a pair of functions to look up symbols by name in a dict and in a whole archive: ctf_lookup_by_symbol_name and ctf_arc_lookup_symbol_name. These are identical to the existing functions except that they take symbol names rather than symbol numbers. To avoid insane repetition, we do some refactoring in the process, so that both ctf_lookup_by_symbol and ctf_arc_lookup_symbol turn into thin wrappers around internal functions that do both lookup by symbol index and lookup by name. This massively reduces code duplication because even the existing lookup-by-index stuff wants to use a name sometimes (when looking up in indexed sections), and the new lookup-by-name stuff has to turn it into an index sometimes (when looking up in non-indexed sections): doing it this way lets us share most of that. The actual name->index lookup is done by ctf_lookup_symbol_idx. We do not anticipate this lookup to be as heavily used as ld.so symbol lookup by many orders of magnitude, so using the ELF symbol hashes would probably take more time to read them than is saved by using the hashes, and it adds a lot of complexity. Instead, do a linear search for the symbol name, caching all the name -> index mappings as we go, so that future searches are likely to hit in the cache. To avoid having to repeat this search over and over in a CTF archive when ctf_arc_lookup_symbol_name is used, have cached archive lookups (the sort done by ctf_arc_lookup_symbol* and the ctf_archive_next iterator) pick out the first dict they cache in a given archive and store it in a new ctf_archive field, ctfi_crossdict_cache. This can be used to store cross-dictionary cached state that depends on things like the ELF symbol table rather than the contents of any one dict. ctf_lookup_symbol_idx then caches its name->index mappings in the dictionary named in the crossdict cache, if any, so that ctf_lookup_symbol_idx in other dicts in the same archive benefit from the previous linear search, and the symtab only needs to be scanned at most once. (Note that if you call ctf_lookup_by_symbol_name in one specific dict, and then follow it with a ctf_arc_lookup_symbol_name, the former will not use the crossdict cache because it's only populated by the dict opens in ctf_arc_lookup_symbol_name. This is harmless except for a small one-off waste of memory and time: it's only a cache, after all. We can fix this later by using the archive caching machinery more aggressively.) In ctf-archive, we do similar things, turning ctf_arc_lookup_symbol into a wrapper around a new function that does both index -> ID and name -> ID lookups across all dicts in an archive. We add a new ctfi_symnamedicts cache that maps symbol names to the ctf_dict_t * that it was found in (so that linear searches for symbols don't need to be repeated): but we also *remove* a cache, the ctfi_syms cache that was memoizing the actual ctf_id_t returned from every call to ctf_arc_lookup_symbol. This is pointless: all it saves is one call to ctf_lookup_by_symbol, and that's basically an array lookup and nothing more so isn't worth caching. (Equally, given that symbol -> index mappings are cached by ctf_lookup_by_symbol_name, those calls are nearly free after the first call, so there's no point caching the ctf_id_t in that case either.) We fix up one test that was doing manual symbol lookup to use ctf_arc_lookup_symbol instead, and enhance it to check that the caching layer is not totally broken: we also add a new test to do lookups in a .o file, and another to do lookups in an archive with conflicted types and make sure that sort of multi-dict lookup is actually working. include/ChangeLog 2021-02-17 Nick Alcock <nick.alcock@oracle.com> * ctf-api.h (ctf_arc_lookup_symbol_name): New. (ctf_lookup_by_symbol_name): Likewise. libctf/ChangeLog 2021-02-17 Nick Alcock <nick.alcock@oracle.com> * ctf-impl.h (ctf_dict_t) <ctf_symhash>: New. <ctf_symhash_latest>: Likewise. (struct ctf_archive_internal) <ctfi_crossdict_cache>: New. <ctfi_symnamedicts>: New. <ctfi_syms>: Remove. (ctf_lookup_symbol_name): Remove. * ctf-lookup.c (ctf_lookup_symbol_name): Propagate errors from parent properly. Make static. (ctf_lookup_symbol_idx): New, linear search for the symbol name, cached in the crossdict cache's ctf_symhash (if available), or this dict's (otherwise). (ctf_try_lookup_indexed): Allow the symname to be passed in. (ctf_lookup_by_symbol): Turn into a wrapper around... (ctf_lookup_by_sym_or_name): ... this, supporting name lookup too, using ctf_lookup_symbol_idx in non-writable dicts. Special-case name lookup in dynamic dicts without reported symbols, which have no symtab or dynsymidx but where name lookup should still work. (ctf_lookup_by_symbol_name): New, another wrapper. * ctf-archive.c (enosym): Note that this is present in ctfi_symnamedicts too. (ctf_arc_close): Adjust for removal of ctfi_syms. Free the ctfi_symnamedicts. (ctf_arc_flush_caches): Likewise. (ctf_dict_open_cached): Memoize the first cached dict in the crossdict cache. (ctf_arc_lookup_symbol): Turn into a wrapper around... (ctf_arc_lookup_sym_or_name): ... this. No longer cache ctf_id_t lookups: just call ctf_lookup_by_symbol as needed (but still cache the dicts those lookups succeed in). Add lookup-by-name support, with dicts of successful lookups cached in ctfi_symnamedicts. Refactor the caching code a bit. (ctf_arc_lookup_symbol_name): New, another wrapper. * ctf-open.c (ctf_dict_close): Free the ctf_symhash. * libctf.ver (LIBCTF_1.2): New version. Add ctf_lookup_by_symbol_name, ctf_arc_lookup_symbol_name. * testsuite/libctf-lookup/enum-symbol.c (main): Use ctf_arc_lookup_symbol rather than looking up the name ourselves. Fish it out repeatedly, to make sure that symbol caching isn't broken. (symidx_64): Remove. (symidx_32): Remove. * testsuite/libctf-lookup/enum-symbol-obj.lk: Test symbol lookup in an unlinked object file (indexed symtypetab sections only). * testsuite/libctf-writable/symtypetab-nonlinker-writeout.c (try_maybe_reporting): Check symbol types via ctf_lookup_by_symbol_name as well as ctf_symbol_next. * testsuite/libctf-lookup/conflicting-type-syms.*: New test of lookups in a multi-dict archive.
390 lines
14 KiB
Plaintext
390 lines
14 KiB
Plaintext
2021-02-17 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-impl.h (ctf_dict_t) <ctf_symhash>: New.
|
||
<ctf_symhash_latest>: Likewise.
|
||
(struct ctf_archive_internal) <ctfi_crossdict_cache>: New.
|
||
<ctfi_symnamedicts>: New.
|
||
<ctfi_syms>: Remove.
|
||
(ctf_lookup_symbol_name): Remove.
|
||
* ctf-lookup.c (ctf_lookup_symbol_name): Propagate errors from
|
||
parent properly. Make static.
|
||
(ctf_lookup_symbol_idx): New, linear search for the symbol name,
|
||
cached in the crossdict cache's ctf_symhash (if available), or
|
||
this dict's (otherwise).
|
||
(ctf_try_lookup_indexed): Allow the symname to be passed in.
|
||
(ctf_lookup_by_symbol): Turn into a wrapper around...
|
||
(ctf_lookup_by_sym_or_name): ... this, supporting name lookup too,
|
||
using ctf_lookup_symbol_idx in non-writable dicts. Special-case
|
||
name lookup in dynamic dicts without reported symbols, which have
|
||
no symtab or dynsymidx but where name lookup should still work.
|
||
(ctf_lookup_by_symbol_name): New, another wrapper.
|
||
* ctf-archive.c (enosym): Note that this is present in
|
||
ctfi_symnamedicts too.
|
||
(ctf_arc_close): Adjust for removal of ctfi_syms. Free the
|
||
ctfi_symnamedicts.
|
||
(ctf_arc_flush_caches): Likewise.
|
||
(ctf_dict_open_cached): Memoize the first cached dict in the
|
||
crossdict cache.
|
||
(ctf_arc_lookup_symbol): Turn into a wrapper around...
|
||
(ctf_arc_lookup_sym_or_name): ... this. No longer cache
|
||
ctf_id_t lookups: just call ctf_lookup_by_symbol as needed (but
|
||
still cache the dicts those lookups succeed in). Add
|
||
lookup-by-name support, with dicts of successful lookups cached in
|
||
ctfi_symnamedicts. Refactor the caching code a bit.
|
||
(ctf_arc_lookup_symbol_name): New, another wrapper.
|
||
* ctf-open.c (ctf_dict_close): Free the ctf_symhash.
|
||
* libctf.ver (LIBCTF_1.2): New version. Add
|
||
ctf_lookup_by_symbol_name, ctf_arc_lookup_symbol_name.
|
||
* testsuite/libctf-lookup/enum-symbol.c (main): Use
|
||
ctf_arc_lookup_symbol rather than looking up the name ourselves.
|
||
Fish it out repeatedly, to make sure that symbol caching isn't
|
||
broken.
|
||
(symidx_64): Remove.
|
||
(symidx_32): Remove.
|
||
* testsuite/libctf-lookup/enum-symbol-obj.lk: Test symbol lookup
|
||
in an unlinked object file (indexed symtypetab sections only).
|
||
* testsuite/libctf-writable/symtypetab-nonlinker-writeout.c
|
||
(try_maybe_reporting): Check symbol types via
|
||
ctf_lookup_by_symbol_name as well as ctf_symbol_next.
|
||
* testsuite/libctf-lookup/conflicting-type-syms.*: New test of
|
||
lookups in a multi-dict archive.
|
||
|
||
2021-02-20 Alan Modra <amodra@gmail.com>
|
||
|
||
* testsuite/config/default.exp (ld_L_opt): Define.
|
||
* testsuite/lib/ctf-lib.exp (load_common_lib): Delete. Instead load
|
||
ld-lib.exp.
|
||
(run_host_cmd, run_host_cmd_yesno, check_compiler_available): Delete.
|
||
(compile_one_cc, check_ctf_available): Delete.
|
||
|
||
2021-02-03 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* configure.ac (ac_cv_libctf_bfd_elf): Include string.h.
|
||
* configure: Regenerated.
|
||
|
||
2021-02-03 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* configure.ac (EXPECT): Check for, in order to define...
|
||
(TCL_TRY): ... this, if Tcl supports try/catch.
|
||
* Makefile.am (TCL_TRY): Run the testsuite only if set.
|
||
* configure: Regenerated.
|
||
* Makefile.in: Likewise.
|
||
|
||
2021-02-02 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* configure.ac (CTF_LIBADD): Remove explicit -lintl population in
|
||
favour of LIBINTL.
|
||
* Makefile.am (libctf_nobfd_la_LIBADD): No longer explicitly
|
||
include $(LIBINTL).
|
||
(check-DEJAGNU): Pass down to tests as well.
|
||
* configure: Regenerated.
|
||
* Makefile.in: Likewise.
|
||
|
||
2021-01-27 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-string.c (ctf_str_add): Treat adding a NULL as adding "".
|
||
(ctf_str_add_ref): Likewise.
|
||
(ctf_str_add_external): Likewise.
|
||
* ctf-types.c (ctf_type_name_raw): Always return "" for offset 0.
|
||
* ctf-dedup.c (ctf_dedup_multiple_input_dicts): Don't armour
|
||
against NULL name.
|
||
(ctf_dedup_maybe_synthesize_forward): Likewise.
|
||
|
||
2021-01-27 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-create.c (ctf_serialize): Fix shadowing.
|
||
|
||
2021-01-27 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-create.c (ctf_add_encoded): Add check for non-empty name.
|
||
(ctf_add_forward): Likewise.
|
||
(ctf_add_typedef): Likewise.
|
||
|
||
2021-01-27 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-open.c (init_types): Rip out code to check anonymous typedef
|
||
nodes.
|
||
* ctf-create.c (ctf_add_reftype): Likewise.
|
||
* ctf-lookup.c (refresh_pptrtab): Likewise.
|
||
|
||
2021-01-27 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-impl.c (_libctf_nonnull_): Add parameters.
|
||
(LCTF_LINKING): New flag.
|
||
(ctf_dict_t) <ctf_link_flags>: Mention it.
|
||
* ctf-link.c (ctf_link): Keep LCTF_LINKING set across call.
|
||
(ctf_write): Likewise, including in child dictionaries.
|
||
(ctf_link_shuffle_syms): Make sure ctf_dynsyms is NULL if there
|
||
are no reported symbols.
|
||
* ctf-create.c (symtypetab_delete_nonstatic_vars): Make sure
|
||
the variable has been reported as a symbol by the linker.
|
||
(symtypetab_skippable): Mention relationship between SYMFP and the
|
||
flags.
|
||
(symtypetab_density): Adjust nonnullity. Exit early if no symbols
|
||
were reported and force-indexing is off (i.e., we are doing a
|
||
final link).
|
||
(ctf_serialize): Handle the !LCTF_LINKING case by writing out an
|
||
indexed, sorted symtypetab (and allow SYMFP to be NULL in this
|
||
case). Turn sorting off if this is a non-final link. Only delete
|
||
nonstatic vars if we are filtering symbols and the linker has
|
||
reported some.
|
||
* testsuite/libctf-regression/nonstatic-var-section-ld-r*:
|
||
New test of variable and symtypetab section population when
|
||
ld -r is used.
|
||
* testsuite/libctf-regression/nonstatic-var-section-ld-executable.lk:
|
||
Likewise, when ld of an executable is used.
|
||
* testsuite/libctf-regression/nonstatic-var-section-ld.lk:
|
||
Likewise, when ld -shared alone is used.
|
||
* testsuite/libctf-regression/nonstatic-var-section-ld*.c:
|
||
Lookup programs for the above.
|
||
* testsuite/libctf-writable/symtypetab-nonlinker-writeout.*: New
|
||
test, testing survival of symbols across ctf_write paths.
|
||
* testsuite/lib/ctf-lib.exp (run_lookup_test): New option,
|
||
nonshared, suppressing linking of the SOURCE with -shared.
|
||
|
||
2021-01-19 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-create.c (membadd): Transform ""-named members into
|
||
NULL-named ones.
|
||
* testsuite/libctf-regression/type-add-unnamed-struct*: New test.
|
||
|
||
2021-01-19 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-lookup.c (ctf_lookup_by_name_internal): Do not return the
|
||
base type if looking up a nonexistent pointer type.
|
||
* testsuite/libctf-regression/pptrtab*: Test it.
|
||
|
||
2021-01-13 Alan Modra <amodra@gmail.com>
|
||
|
||
* Makefile.in: Regenerate.
|
||
|
||
2021-01-12 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
PR binutils/26792
|
||
* configure.ac: Use GNU_MAKE_JOBSERVER.
|
||
* aclocal.m4: Regenerated.
|
||
* configure: Likewise.
|
||
|
||
2021-01-11 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
PR ld/27173
|
||
* configure: Regenerated.
|
||
|
||
2021-01-09 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
* configure: Regenerated.
|
||
|
||
2021-01-09 Nick Clifton <nickc@redhat.com>
|
||
|
||
* 2.36 release branch crated.
|
||
|
||
2021-01-09 Alan Modra <amodra@gmail.com>
|
||
|
||
* configure: Regenerate.
|
||
|
||
2021-01-07 Samuel Thibault <samuel.thibault@gnu.org>
|
||
|
||
* configure: Regenerate.
|
||
|
||
2021-01-05 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* testsuite/libctf-lookup/struct-iteration.c (main):
|
||
ctf_member_count returns an int.
|
||
|
||
2021-01-05 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* Makefile.am (BASEDIR): New.
|
||
(BFDDIR): Likewise.
|
||
(check-DEJAGNU): Add development.exp to prerequisites.
|
||
(development.exp): New.
|
||
(CONFIG_STATUS_DEPENDENCIES): New.
|
||
(EXTRA_DEJAGNU_SITE_CONFIG): Likewise.
|
||
(DISTCLEANFILES): Likewise.
|
||
* Makefile.in: Regenerated.
|
||
* testsuite/lib/ctf-lib.exp (check_ctf_available): Return boolean.
|
||
* testsuite/libctf-lookup/lookup.exp: Call check_ctf_available.
|
||
* testsuite/libctf-regression/regression.exp: Likewise.
|
||
|
||
2021-01-05 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-types.c (ctf_type_aname): Print forwards to unions and enums
|
||
properly.
|
||
|
||
2021-01-05 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-impl.h (ctf_dict_t) <ctf_pptrtab>: New.
|
||
<ctf_pptrtab_len>: New.
|
||
<ctf_pptrtab_typemax>: New.
|
||
* ctf-create.c (ctf_serialize): Update accordingly.
|
||
(ctf_add_reftype): Note that we don't need to update pptrtab here,
|
||
despite updating ptrtab.
|
||
* ctf-open.c (ctf_dict_close): Destroy the pptrtab.
|
||
(ctf_import): Likewise.
|
||
(ctf_import_unref): Likewise.
|
||
* ctf-lookup.c (grow_pptrtab): New.
|
||
(refresh_pptrtab): New, update a pptrtab.
|
||
(ctf_lookup_by_name): Turn into a wrapper around (and rename to)...
|
||
(ctf_lookup_by_name_internal): ... this: construct the pptrtab, and
|
||
use it in addition to the parent's ptrtab when parent dicts are
|
||
searched.
|
||
* testsuite/libctf-regression/regression.exp: New testsuite for
|
||
regression tests.
|
||
* testsuite/libctf-regression/pptrtab*: New test.
|
||
* testsuite/libctf-writable/writable.exp: New testsuite for tests of
|
||
writable CTF dicts.
|
||
* testsuite/libctf-writable/pptrtab*: New test.
|
||
|
||
2021-01-05 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-archive.c (ctf_archive_iter): Remove outdated comment.
|
||
|
||
2021-01-05 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-impl.h (struct ctf_next) <u.ctn_next>: Move to...
|
||
<ctn_next>: ... here.
|
||
* ctf-util.c (ctf_next_destroy): Unconditionally destroy it.
|
||
* ctf-lookup.c (ctf_symbol_next): Adjust accordingly.
|
||
* ctf-types.c (ctf_member_iter): Reimplement in terms of...
|
||
(ctf_member_next): ... this. Support recursive unnamed member
|
||
iteration (off by default).
|
||
(ctf_member_info): Look up members in unnamed sub-structs.
|
||
* ctf-dedup.c (ctf_dedup_rhash_type): Adjust ctf_member_next call.
|
||
(ctf_dedup_emit_struct_members): Likewise.
|
||
* testsuite/libctf-lookup/struct-iteration-ctf.c: Test empty unnamed
|
||
members, and a normal member after the end.
|
||
* testsuite/libctf-lookup/struct-iteration.c: Verify that
|
||
ctf_member_count is consistent with the number of successful returns
|
||
from a non-recursive ctf_member_next.
|
||
* testsuite/libctf-lookup/struct-iteration-*: New, test iteration
|
||
over struct members.
|
||
* testsuite/libctf-lookup/struct-lookup.c: New test.
|
||
* testsuite/libctf-lookup/struct-lookup.lk: New test.
|
||
|
||
2021-01-05 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-link.c (ctf_link_warn_outdated_inputs): New.
|
||
(ctf_link_write): Call it.
|
||
|
||
2021-01-05 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* testsuite/libctf-lookup/enum-symbol.lk: New symbol-lookup test.
|
||
* testsuite/libctf-lookup/enum-symbol-ctf.c: New CTF input.
|
||
* testsuite/libctf-lookup/enum-symbol.c: New lookup test.
|
||
|
||
2021-01-05 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* Makefile.am (EXPECT): New.
|
||
(RUNTEST): Likewise.
|
||
(RUNTESTFLAGS): Likewise.
|
||
(CC_FOR_TARGET): Likewise.
|
||
(check-DEJAGNU): Likewise.
|
||
(AUTOMAKE_OPTIONS): Add dejagnu.
|
||
* Makefile.in: Regenerated.
|
||
* testsuite/config/default.exp: New.
|
||
* testsuite/lib/ctf-lib.exp: Likewise.
|
||
* testsuite/libctf-lookup/enum.lk: New test.
|
||
* testsuite/libctf-lookup/enum-ctf.c: New CTF input.
|
||
* testsuite/libctf-lookup/enum.c: New lookup test.
|
||
* testsuite/libctf-lookup/ambiguous-struct*.c: New test.
|
||
* testsuite/libctf-lookup/lookup.exp: New.
|
||
|
||
2021-01-05 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* configure.ac (BFD_LIBADD): Remove.
|
||
(BFD_DEPENDENCIES): Likewise. Remove associated cases.
|
||
(SHARED_LIBADD): Rename to...
|
||
(CTF_LIBADD): ... this. Stick in a suitable libiberty even when
|
||
linking statically.
|
||
* Makefile.am (libctf_nobfd_la_LIBADD): Adjust accordingly.
|
||
libctf uses libintl.
|
||
(libctf_la_LIBADD): Reference libbfd.la directly, not via
|
||
BFD_LIBADD.
|
||
(libctf_la_DEPENDENCIES): Remove.
|
||
* Makefile.in: Regenerate.
|
||
* configure: Likewise.
|
||
|
||
2021-01-05 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-decl.c (ctf_decl_push): Exclude slices from the decl stack.
|
||
* ctf-types.c (ctf_type_aname): No longer deal with slices here.
|
||
* ctf-dump.c (ctf_dump_membstate_t) <cdm_toplevel_indent>: Constify.
|
||
(CTF_FT_REFS): New.
|
||
(CTF_FT_BITFIELD): Likewise.
|
||
(CTF_FT_ID): Likewise.
|
||
(ctf_dump_member): Do not do indentation here. Migrate the
|
||
type-printing parts of this into...
|
||
(ctf_dump_format_type): ... here, to be shared by all type printers.
|
||
Get the errno value for non-representable types right. Do not print
|
||
bitfield info for non-bitfields. Improve the format and indentation
|
||
of other type output. Shuffle spacing around to make all indentation
|
||
either 'width of column' or 4 chars.
|
||
(ctf_dump_label): Pass CTF_FT_REFS to ctf_dump_format_type.
|
||
(ctf_dump_objts): Likewise. Spacing shuffle.
|
||
(ctf_dump_var): Likewise.
|
||
(type_hex_digits): Migrate down in the file, to above its new user.
|
||
(ctf_dump_type): Indent here instead. Pass CTF_FT_REFS to
|
||
ctf_dump_format_type. Don't trim off excess linefeeds now we no
|
||
longer generate them. Dump enumerated types.
|
||
|
||
2021-01-05 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-types.c (ctf_type_resolve): Improve comment.
|
||
(ctf_type_size): Yield ECTF_INCOMPLETE when applied to forwards.
|
||
Emit errors into the right dict.
|
||
(ctf_type_align): Likewise.
|
||
* ctf-create.c (ctf_add_member_offset): Yield ECTF_INCOMPLETE
|
||
when adding a member without explicit offset when this member, or
|
||
the previous member, is incomplete.
|
||
* ctf-dump.c (ctf_dump_format_type): Do not try to print the size of
|
||
forwards.
|
||
(ctf_dump_member): Do not try to print their alignment.
|
||
|
||
2021-01-05 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-dump.c (ctf_dump_objts): Dump by calling ctf_dump_format_type.
|
||
(ctf_dump_format_type): Don't emit the size for function objects.
|
||
Dump the element type of arrays like we dump the pointed-to type of
|
||
pointers, etc.
|
||
|
||
2021-01-05 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-dump.c (ctf_dump_format_type): Add 0x to hex type IDs.
|
||
(ctf_dump_header): Add 0x to the hex magic number.
|
||
(ctf_dump_str): Add 0x to the hex string offsets.
|
||
(ctf_dump_membstate_t) <cdm_toplevel_indent>: New.
|
||
(ctf_dump_type): Adjust. Free it when we're done.
|
||
(type_hex_digits): New.
|
||
(ctf_dump_member): Align output depending on the width of the type
|
||
ID being generated. Use printf padding, not a loop, to generate
|
||
indentation.
|
||
|
||
2021-01-05 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-decl.c (ctf_decl_push): Don't print array decls backwards.
|
||
|
||
2021-01-04 Nicolas Boulenguez <nicolas@debian.org>
|
||
|
||
PR 27117
|
||
* configure.ac: Make AC_CONFIG_MACRO_DIR consistent with
|
||
ACLOCAL_AMFLAGS -I dirs.
|
||
* configure: Regenerate.
|
||
|
||
2021-01-01 Alan Modra <amodra@gmail.com>
|
||
|
||
Update year range in copyright notice of all files.
|
||
|
||
For older changes see ChangeLog-2020
|
||
|
||
Copyright (C) 2021 Free Software Foundation, Inc.
|
||
|
||
Copying and distribution of this file, with or without modification,
|
||
are permitted in any medium without royalty provided the copyright
|
||
notice and this notice are preserved.
|
||
|
||
Local Variables:
|
||
mode: change-log
|
||
left-margin: 8
|
||
fill-column: 74
|
||
version-control: never
|
||
End:
|