Narrow Linux symbol CRCs to 32 bits

MODVERSIONS CRCs are 32-bit hashes of strings representing C type
elements or typed symbols. The hashes are calculated using a 32-bit
CRC, hence the name. The kernel module loading code (implicitly)
truncates any provided CRC value to 32 bits before comparing it with
anything.

When support was added to libabigail, values up to 64 bits wide were
supported. This change narrows libabigail's concept of Linux CRC to 32
bits. No tests are affected.

	* include/abg-ir.h (elf_symbol::elf_symbol): Change CRC type
	from optional<uint64_t> to optional<uint32_t>.
	(elf_symbol::create): Likewise.
	(elf_symbol::get_crc): Likewise.
	(elf_symbol::set_crc): Likewise.
	* src/abg-ir.cc (elf_symbol::priv) Change CRC type from
	optional<uint64_t> to optional<uint32_t>.
	(elf_symbol::priv::priv): Likewise.
	(elf_symbol::elf_symbol): Likewise.
	(elf_symbol::create): Likewise.
	(elf_symbol::get_crc): Likewise.
	(elf_symbol::set_crc): Likewise.
	* src/abg-reporter-priv.cc (maybe_report_diff_for_symbol):
	Change CRC type from optional<uint64_t> to
	optional<uint32_t>.
	* src/abg-symtab-reader.cc (symtab::load_): Change crc_values
	value type from uint64_t to uint32_t.

Change-Id: I388b423d7d29946ff2d7e7bb574caac222a853a4
Signed-off-by: Giuliano Procida <gprocida@google.com>
(cherry picked from commit 3cb34e65df668c1c107b06a9dc378713e527184b)
4 files changed