Commit Graph
9 Commits
Author SHA1 Message Date
Ian Lance Taylor 5f4a6d4941 libbacktrace: set table field for zstd RLE sequence
Patch from Ivan Molodetskikh.

	* elf.c (elf_zstd_unpack_seq_decode): Set table field for RLE
	sequence.
	* zstdtest.c (tests): Add rle-sequence-tables test.
2026-06-27 09:09:58 -07:00
Ian Lance Taylor 058d953bb7 libbacktrace: support window size in zstd decompression
Reportedly this occurs on AerynOS.

Patch from Ivan Molodetskikh.

	* elf.c (elf_zstd_decompress_frame): Support a compressed block
	that does not set the single segment flag.
	* zstdtest.c (tests): Add tests without single segment.
2026-06-27 08:53:22 -07:00
Ian Lance Taylor 96664e69b1 libbacktrace: support multiple zstd frames
Based on patch by GitHub user ofats.

	* elf.c (elf_zstd_decompress_frame): New static function,
	broken out of elf_zstd_decompress.
	(elf_zstd_decompress): Call elf_zstd_decompress_frame in a loop.
	* zstdtest.c (test_large): Compress the file in chunks.
2026-05-03 18:30:11 -07:00
Ian Lance Taylor ab3c042b80 libbacktrace: don't use ZSTD_CLEVEL_DEFAULT
PR 117812 reports that testing GCC with zstd 1.3.4 fails because
ZSTD_CLEVEL_DEFAULT is not defined, so avoid using it.

	PR libbacktrace/117812
	* zstdtest.c (test_large): Use 3 rather than ZSTD_CLEVEL_DEFAULT
2026-05-03 18:30:08 -07:00
Jakub Jelinek 42962d2cfb Update copyright years. 2026-05-03 18:21:13 -07:00
Jakub Jelinek bdd324c192 Update copyright years. 2026-05-03 18:20:27 -07:00
Ian Lance Taylor 8c05bcb94f libbacktrace: update copyright years 2024-07-11 18:14:01 -07:00
Richard Biener 9ae4f4ae44 [libbacktrace] fix up broken test
zstdtest has some inline data where some testcases lack the
uncompressed length field.  Thus it computes that but still
ends up allocating memory for the uncompressed buffer based on
that (zero) length.  Oops.  Causes memory corruption if the
allocator returns non-NULL.

libbacktrace/
	* zstdtest.c (test_samples): Properly compute the allocation
	size for the uncompressed data.
2023-08-03 11:47:58 -07:00
Ian Lance Taylor c992dd8a9b libbacktrace: support zstd decompression
Support decompressing --compress-debug-sections=zstd.
	* configure.ac: Check for zstd library and
	--compress-debug-sections=zstd linker option.
	* Makefile.am (zstdtest_*): New targets.
	(zstdtest_alloc_*, ctestzstd_*): New targets.
	(BUILDTESTS): Add zstdtest, zstdtest_alloc, ctestzstd as
	appropriate.
	* elf.c (ELFCOMPRESS_ZSTD): Define.
	(elf_fetch_bits): Rename from elf_zlib_fetch.  Update uses.
	(elf_fetch_bits_backward): New static function.
	(ZLIB_HUFFMAN_*): Rename from HUFFMAN_*.  Update uses.
	(ZLIB_TABLE_*): Rename from ZDEBUG_TABLE_*.  Update uses.
	(ZSTD_TABLE_*): Define.
	(struct elf_zstd_fse_entry): Define.
	(elf_zstd_read_fse): New static function.
	(elf_zstd_build_fse): Likewise.
	(lit): Define if BACKTRACE_GENERATE_ZSTD_FSE_TABLES.
	(match, offset, next, print_table, main): Likewise.
	(elf_zstd_lit_table): New static const array.
	(elf_zstd_match_table, elf_zstd_offset_table): Likewise.
	(elf_zstd_read_huff): New static function.
	(struct elf_zstd_seq_decode): Define.
	(elf_zstd_unpack_seq_decode): New static function.
	(ZSTD_LIT_*): Define.
	(struct elf_zstd_literals): Define.
	(elf_zstd_literal_output): New static function.
	(ZSTD_LITERAL_LENGTH_BASELINE_OFFSET): Define.
	(elf_zstd_literal_length_baseline): New static const array.
	(elf_zstd_literal_length_bits): Likewise.
	(ZSTD_MATCH_LENGTH_BASELINE_OFFSET): Define.
	(elf_zstd_match_length_baseline): New static const array.
	(elf_zstd_match_length_bits): Likewise.
	(elf_zstd_decompress): New static function.
	(ZDEBUG_TABLE_SIZE): New definition.
	(elf_uncompress_chdr): Support ELF_COMPRESS_ZSTD.
	(backtrace_uncompress_zstd): New function.
	(elf_add): Use ZLIB_TABLE_SIZE for zlib-gnu sections.
	* internal.h (backtrace_uncompress_zstd): Declare.
	* zstdtest.c: New file.
	* configure, config.h.in, Makefile.in: Regenerate.
2022-12-07 16:27:12 -08:00