libabigail/doc/manuals
Giuliano Procida 29de666641 abg-writer: Add support for stable hash type ids.
The type ids currently emitted by the XML writer are simply type-id-1,
type-id-2 etc. Additions or removals of types early in this sequence
result in cascading changes to many other XML elements.

This commit adds support for stable type ids in the form of hashes of
libabigail's internal type names. On fairly rare occasions (typically
involving unnamed types), the names of two distinct types can be the
same. In any case, if there is a hash collision the XML writer will
find the next unused id and so preserve uniqueness.

Diffs between large XML files produced using --type-id-style hash will
be much smaller and easier to review.

This also commit adds some test cases to verify that the hashing is
actually stable across architectures.

	* doc/manuals/abidw.rst: Replace stray documentation of
	--named-type-ids with documention of new --type-id-style
	option.
	* include/abg-writer.h (type_id_style_kind): Add new enum.
	(set_type_id_style): Add new write_context setter.
	(set_common_options): Set type id style in write context.
	* include/abg-hash.h (fnv_hash): Declare new 32-bit FNV-1a
        hash function in abigail::hashing namespace.
	* src/abg-hash.h (fnv_hash): Define new 32-bit FNV-1a hash
        function in abigail::hashing namespace.
	* src/abg-writer.cc (write_context): Add m_type_id_style
        member to record type style to use, defaulting to
        SEQUENCE_TYPE_ID_STYLE; add m_used_type_id_hashes to record
        already-used hashes.
	(write_context::get_type_id_style): Add new getter.
	(write_context::set_type_id_style): Add new setter.
	(get_id_for_type): Add support for HASH_TYPE_ID_STYLE style.
	(set_type_id_style): Add new helper function.
	* tools/abidw.cc (options): Add type_id_style member.
	(display_usage): Add description of --type-id-style option.
	(parse_command_line): Parse --type-id-style option.
	* tests/data/Makefile.am: Add new hash type id ABI files.
	* tests/test-read-dwarf.cc: (InOutSpec): Add type_id_style
	member.
	(in_out_specs): Set type_id_style to SEQUENCE_TYPE_ID_STYLE in
        existing test specifications. Duplicate first 9 test cases
        with type_id_style set to HASH_TYPE_ID_STYLE.
	* tests/data/test-read-dwarf/test0.hash.abi: New ABI XML file
	with hash type ids.
	* tests/data/test-read-dwarf/test1.hash.abi: Ditto.
	* tests/data/test-read-dwarf/test2.so.hash.abi: Ditto.
	* tests/data/test-read-dwarf/test3.so.hash.abi: Ditto.
	* tests/data/test-read-dwarf/test4.so.hash.abi: Ditto.
	* tests/data/test-read-dwarf/test5.o.hash.abi: Ditto.
	* tests/data/test-read-dwarf/test6.so.hash.abi: Ditto.
	* tests/data/test-read-dwarf/test7.so.hash.abi: Ditto.
	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.hash.abi:
	Ditto.

Signed-off-by: Giuliano Procida <gprocida@google.com>
Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2020-06-16 10:13:01 +02:00
..
abicompat.rst Add several shortcuts to options for abicompat 2016-05-08 12:29:33 +02:00
abidiff.rst Add --header-file option to add individual public header files. 2020-04-14 17:17:28 +02:00
abidw.rst abg-writer: Add support for stable hash type ids. 2020-06-16 10:13:01 +02:00
abilint.rst Add --header-file option to add individual public header files. 2020-04-14 17:17:28 +02:00
abipkgdiff.rst Add more leaf change reporting. 2020-03-13 17:58:30 +01:00
conf.py Bug 19428 - New fedabipkgdiff utility 2016-05-13 00:42:36 +02:00
fedabipkgdiff.rst Add a --suppressions option to fedabipkgdiff 2017-10-16 14:45:32 +02:00
index.rst Update the manual for the suppression specification initial work 2014-10-15 22:32:56 +02:00
kmidiff.rst Some documentation fixes 2018-12-07 11:21:50 +01:00
libabigail-concepts.rst doc: Fix sufficient suppression property lists. 2020-05-13 12:11:11 +02:00
libabigail-overview.rst Fix some wording in the Libabigail overview manual page 2016-05-30 16:24:53 +02:00
libabigail-tools.rst Update & cleanup the tools manuals summary 2017-12-11 14:30:04 +01:00
Makefile.am Add documentation for the kmidiff tool 2017-07-03 17:45:45 +02:00