Go to file
Nick Alcock 36c771b179
libctf: fix CTF dict compression
Commit 483546ce4f ("libctf: make ctf_serialize() actually serialize")
accidentally broke dict compression.  There were two bugs:

 - ctf_arc_write_one_ctf was still making its own decision about
   whether to compress the dict via direct ctf_size comparison, which is
   unfortunate because now that it no longer calls ctf_serialize itself,
   ctf_size is always zero when it does this: it should let the writing
   functions decide on the threshold, which they contain code to do which is
   simply not used for lack of one trivial wrapper to write to an fd and
   also provide a compression threshold

 - ctf_write_mem, the function underlying all writing as of the commit
   above, was calling zlib's compressBound and avoiding compression if this
   returned a value larger than the input.  Unfortunately compressBound does
   not do a trial compression and determine whether the result is
   compressible: it just adds zlib header sizes to the value passed in, so
   our test would *always* have concluded that the value was incompressible!
   Avoid by simply always compressing if the raw size is larger than the
   threshold: zlib is quite clever enough to avoid actually compressing
   if the data is incompressible.

Add a testcase for this.

libctf/
	* ctf-impl.h (ctf_write_thresholded): New...
	* ctf-serialize.c (ctf_write_thresholded): ... defined here,
        a wrapper around...
        (ctf_write_mem): ... this.  Don't check compressibility.
	(ctf_compress_write): Reimplement as a ctf_write_thresholded
        wrapper.
	(ctf_write): Likewise.
	* ctf-archive.c (arc_write_one_ctf): Just call
        ctf_write_thresholded rather than trying to work out whether
        to compress.
	* testsuite/libctf-writable/ctf-compressed.*: New test.
2024-07-31 21:02:05 +01:00
bfd Automatic date update in version.in 2024-07-31 00:00:28 +00:00
binutils Updated translations for the bfd, binutils, gas, ld and opcodes directories 2024-07-29 11:57:25 +01:00
config Revert "Remove LIBINTL_DEP" 2024-06-20 21:15:27 +09:30
contrib
cpu Add markers for 2.43 branch/release 2024-07-20 12:43:19 +01:00
elfcpp Add markers for 2.43 branch/release 2024-07-20 12:43:19 +01:00
etc
gas x86: move ginsn stuff 2024-07-31 12:04:03 +02:00
gdb [gdb/testsuite] Fix trailing-text-in-parentheses duplicates 2024-07-31 15:04:25 +02:00
gdbserver [gdb/tdep] Fix arm thumb2 hw breakpoint 2024-07-27 10:05:20 +02:00
gdbsupport gdb, gdbserver, gdbsupport: use [[noreturn]] instead of ATTRIBUTE_NORETURN 2024-07-16 18:30:45 -04:00
gnulib autoupdate: replace obsolete macros AC_CONFIG_HEADER 2024-06-10 08:25:55 +09:30
gold PR32032 dwp segfaults on hello world binary 2024-07-29 16:25:59 +09:30
gprof Change version to 2.43.50 2024-07-20 13:16:33 +01:00
gprofng gprofng: 32018 Compilation of binutils 2.43 failed on CentOS 6 2024-07-30 12:06:26 -07:00
include microMIPS: Add MT ASE instruction set support 2024-07-26 18:01:09 +01:00
ld fix the framework error 2024-07-31 10:43:05 +09:30
libbacktrace autoupdate: regen after replacing obsolete macros 2024-06-10 08:25:56 +09:30
libctf libctf: fix CTF dict compression 2024-07-31 21:02:05 +01:00
libdecnumber
libiberty libiberty: sync with gcc 2024-07-12 22:47:58 +01:00
libsframe libsframe: remove runstatedir in Makefile.in 2024-07-10 10:24:45 +02:00
opcodes Updated translations for the bfd, binutils, gas, ld and opcodes directories 2024-07-29 11:57:25 +01:00
readline autoupdate: add square brackets around arguments of AC_INIT 2024-06-10 08:25:56 +09:30
sim regen sim/frv files for copyright update 2024-06-10 08:25:56 +09:30
texinfo
zlib autoupdate: regen after replacing obsolete macros 2024-06-10 08:25:56 +09:30
.cvsignore
.editorconfig
.gitattributes
.gitignore .gitignore: ignore .vscode 2024-05-30 12:09:35 +01:00
.pre-commit-config.yaml gdb: bump black version to 24.4.2 2024-05-16 11:34:40 -04:00
ar-lib
ChangeLog Add markers for 2.43 branch/release 2024-07-20 12:43:19 +01:00
compile
config-ml.in
config.guess Synchronize config.[sub|guess] with the latest versions from the config project. 2024-07-15 10:22:54 +01:00
config.rpath
config.sub Synchronize config.[sub|guess] with the latest versions from the config project. 2024-07-15 10:22:54 +01:00
configure RISC-V:[gprofng] Minimal support gprofng for riscv. 2024-07-10 15:16:03 -07:00
configure.ac RISC-V:[gprofng] Minimal support gprofng for riscv. 2024-07-10 15:16:03 -07:00
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.LIBGLOSS
COPYING.NEWLIB
depcomp
djunpack.bat
install-sh
libtool.m4
lt~obsolete.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS
Makefile.def
Makefile.in
Makefile.tpl
makefile.vms
missing
mkdep
mkinstalldirs
move-if-change
multilib.am
README
README-maintainer-mode
SECURITY.txt
setup.com
src-release.sh src-release.sh: don't take untracked files into account in the uncommitted changes check 2024-06-10 12:40:06 +01:00
symlink-tree
test-driver
ylwrap

		   README for GNU development tools

This directory contains various GNU compilers, assemblers, linkers, 
debuggers, etc., plus their support routines, definitions, and documentation.

If you are receiving this as part of a GDB release, see the file gdb/README.
If with a binutils release, see binutils/README;  if with a libg++ release,
see libg++/README, etc.  That'll give you info about this
package -- supported targets, how to use it, how to report bugs, etc.

It is now possible to automatically configure and build a variety of
tools with one command.  To build all of the tools contained herein,
run the ``configure'' script here, e.g.:

	./configure 
	make

To install them (by default in /usr/local/bin, /usr/local/lib, etc),
then do:
	make install

(If the configure script can't determine your type of computer, give it
the name as an argument, for instance ``./configure sun4''.  You can
use the script ``config.sub'' to test whether a name is recognized; if
it is, config.sub translates it to a triplet specifying CPU, vendor,
and OS.)

If you have more than one compiler on your system, it is often best to
explicitly set CC in the environment before running configure, and to
also set CC when running make.  For example (assuming sh/bash/ksh):

	CC=gcc ./configure
	make

A similar example using csh:

	setenv CC gcc
	./configure
	make

Much of the code and documentation enclosed is copyright by
the Free Software Foundation, Inc.  See the file COPYING or
COPYING.LIB in the various directories, for a description of the
GNU General Public License terms under which you can copy the files.

REPORTING BUGS: Again, see gdb/README, binutils/README, etc., for info
on where and how to report problems.