From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by sourceware.org (Postfix) with ESMTPS id C8B2B3858C50 for ; Tue, 27 Sep 2022 13:54:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C8B2B3858C50 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=suse.cz Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.cz Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id E229121E3A; Tue, 27 Sep 2022 13:54:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1664286860; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=s/ogmXzga7b4Gk/oa8H+Cc1KR3EYy+t1f9Ee/yZXmx8=; b=KCUkfuSt2+MgupijLe2gKlRXsHq7GDLnS6Z7PYRa6/5abBL+YHzehHBx3WkvssO/SRaNLO x6btFmg6/p9xT6g4Qp4re+NeFCBLb3S7gg6iQulmjrLQIMedYbpePnD04YklegAeMwmoOi FAc1mc9n9ajSf6TKXhCLAMey2+QIzGs= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1664286860; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=s/ogmXzga7b4Gk/oa8H+Cc1KR3EYy+t1f9Ee/yZXmx8=; b=lnSuybnGH1LQSVZOpmgtH71Br3NXiFE6Btr0wPMAPs6Xdmds14PDjYS3e5vxaA/k+lg/v0 CT63XboepbBdLACQ== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id CA635139BE; Tue, 27 Sep 2022 13:54:20 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id F+dyMIwAM2PiMQAAMHmgww (envelope-from ); Tue, 27 Sep 2022 13:54:20 +0000 Message-ID: <371a05eb-ea48-9626-8375-ce100706c617@suse.cz> Date: Tue, 27 Sep 2022 15:54:20 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.0 Subject: Re: [PATCH] support -gz=zstd for both linker and assembler Content-Language: en-US From: =?UTF-8?Q?Martin_Li=c5=a1ka?= To: gcc-patches@gcc.gnu.org References: <19677278-9d77-d0ab-1257-225f2d33e6cd@suse.cz> Cc: Richard Biener In-Reply-To: <19677278-9d77-d0ab-1257-225f2d33e6cd@suse.cz> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-13.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: PING^1 On 9/22/22 14:51, Martin Li=C5=A1ka wrote: > Hi. >=20 > Tested with Fangrui's patch set sent to binutils ML and mold linker. >=20 > $ gcc -g -gz=3Dzstd a.c --save-temps --verbose 2>&1 | grep debug-sectio= ns > /home/marxin/Programming/binutils/objdir/gas/as-new -v --gdwarf-5 --co= mpress-debug-sections=3Dzstd --64 -o a.o a.s > /home/marxin/bin/gcc/libexec/gcc/x86_64-pc-linux-gnu/13.0.0/collect2 -= plugin /home/marxin/bin/gcc/libexec/gcc/x86_64-pc-linux-gnu/13.0.0/liblto= _plugin.so -plugin-opt=3D/home/marxin/bin/gcc/libexec/gcc/x86_64-pc-linux= -gnu/13.0.0/lto-wrapper -plugin-opt=3D-fresolution=3Da.res -plugin-opt=3D= -pass-through=3D-lgcc -plugin-opt=3D-pass-through=3D-lgcc_s -plugin-opt=3D= -pass-through=3D-lc -plugin-opt=3D-pass-through=3D-lgcc -plugin-opt=3D-pa= ss-through=3D-lgcc_s --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/= ld-linux-x86-64.so.2 --compress-debug-sections=3Dzstd /lib/../lib64/crt1.= o /lib/../lib64/crti.o /home/marxin/bin/gcc/lib64/gcc/x86_64-pc-linux-gnu= /13.0.0/crtbegin.o -L/home/marxin/bin/gcc/lib64/gcc/x86_64-pc-linux-gnu/1= 3.0.0 -L/home/marxin/bin/gcc/lib64/gcc/x86_64-pc-linux-gnu/13.0.0/../../.= =2E/../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/home/marxin/bin/gcc/l= ib64/gcc/x86_64-pc-linux-gnu/13.0.0/../../.. a.o -lgcc --as-needed -lgcc_= s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /home/marxi= n/bin/gcc/lib64/gcc/x86_64-pc-linux-gnu/13.0.0/crtend.o /lib/../lib64/crt= n.o >=20 > $ gdb a.out > ... > BFD: /home/marxin/Programming/testcases/a.out: unable to initialize dec= ompress status for section .debug_abbrev > BFD: /home/marxin/Programming/testcases/a.out: unable to initialize dec= ompress status for section .debug_abbrev > "/home/marxin/Programming/testcases/a.out": not in executable format: f= ile format not recognized >=20 > So it's really compressed with zstd. I'm going to write ChangeLog entry= for zlib-gnu once this gets merged as well. >=20 > Ready to be installed? > Thanks, > Martin >=20 > PR driver/106897 >=20 > gcc/ChangeLog: >=20 > * common.opt: Add -gz=3Dzstd value. > * configure.ac: Detect --compress-debug-sections=3Dzstd > for both linker and assembler. > * configure: Regenerate. > * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Handle -gz=3Dzstd. > (ASM_COMPRESS_DEBUG_SPEC): Likewise. > --- > gcc/common.opt | 5 ++++- > gcc/configure | 11 +++++++++-- > gcc/configure.ac | 11 +++++++++-- > gcc/gcc.cc | 15 +++++++++++++++ > 4 files changed, 37 insertions(+), 5 deletions(-) >=20 > diff --git a/gcc/common.opt b/gcc/common.opt > index 06ef768ab78..68370db816b 100644 > --- a/gcc/common.opt > +++ b/gcc/common.opt > @@ -3419,7 +3419,10 @@ EnumValue > Enum(compressed_debug_sections) String(zlib) Value(1) > =20 > EnumValue > -Enum(compressed_debug_sections) String(zlib-gnu) Value(2) > +Enum(compressed_debug_sections) String(zstd) Value(2) > + > +EnumValue > +Enum(compressed_debug_sections) String(zlib-gnu) Value(3) > =20 > gz > Common Driver > diff --git a/gcc/configure b/gcc/configure > index 70a013e9a30..ce4e1859e1f 100755 > --- a/gcc/configure > +++ b/gcc/configure > @@ -29727,13 +29727,16 @@ else > if $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s 2>= &1 | grep -i warning > /dev/null > then > gcc_cv_as_compress_debug=3D0 > - # Since binutils 2.26, gas supports --compress-debug-sections=3Dzli= b, > - # defaulting to the ELF gABI format. > elif $gcc_cv_as --compress-debug-sections=3Dzlib -o conftest.o conf= test.s > /dev/null 2>&1 > then > gcc_cv_as_compress_debug=3D1 > gcc_cv_as_compress_debug_option=3D"--compress-debug-sections" > gcc_cv_as_no_compress_debug_option=3D"--nocompress-debug-sections= " > + # Since binutils 2.40, gas supports --compress-debug-sections=3Dz= std. > + if $gcc_cv_as --compress-debug-sections=3Dzstd -o conftest.o conf= test.s > /dev/null 2>&1 > + then > + gcc_cv_as_compress_debug=3D2 > + fi > else > gcc_cv_as_compress_debug=3D0 > fi > @@ -30251,6 +30254,10 @@ $as_echo_n "checking linker for compressed deb= ug sections... " >&6; } > if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\' > /dev/null; then > gcc_cv_ld_compress_debug=3D1 > gcc_cv_ld_compress_debug_option=3D"--compress-debug-sections" > + # Detect zstd debug section compression support > + if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\<= zstd\>' > /dev/null; then > + gcc_cv_ld_compress_debug=3D2 > + fi > else > case "${target}" in > *-*-solaris2*) > diff --git a/gcc/configure.ac b/gcc/configure.ac > index 96e10d7c194..b6bafa8b7d6 100644 > --- a/gcc/configure.ac > +++ b/gcc/configure.ac > @@ -5732,13 +5732,16 @@ gcc_GAS_CHECK_FEATURE([compressed debug section= s], > if $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s 2>= &1 | grep -i warning > /dev/null > then > gcc_cv_as_compress_debug=3D0 > - # Since binutils 2.26, gas supports --compress-debug-sections=3Dzli= b, > - # defaulting to the ELF gABI format. > elif $gcc_cv_as --compress-debug-sections=3Dzlib -o conftest.o conf= test.s > /dev/null 2>&1 > then > gcc_cv_as_compress_debug=3D1 > gcc_cv_as_compress_debug_option=3D"--compress-debug-sections" > gcc_cv_as_no_compress_debug_option=3D"--nocompress-debug-sections= " > + # Since binutils 2.40, gas supports --compress-debug-sections=3Dz= std. > + if $gcc_cv_as --compress-debug-sections=3Dzstd -o conftest.o conf= test.s > /dev/null 2>&1 > + then > + gcc_cv_as_compress_debug=3D2 > + fi > else > gcc_cv_as_compress_debug=3D0 > fi]) > @@ -6127,6 +6130,10 @@ AC_MSG_CHECKING(linker for compressed debug sect= ions) > if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\' > /dev/null; then > gcc_cv_ld_compress_debug=3D1 > gcc_cv_ld_compress_debug_option=3D"--compress-debug-sections" > + # Detect zstd debug section compression support > + if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\<= zstd\>' > /dev/null; then > + gcc_cv_ld_compress_debug=3D2 > + fi > else > changequote(,)dnl > case "${target}" in > diff --git a/gcc/gcc.cc b/gcc/gcc.cc > index 7578988efa9..2ffbbc0bf2a 100644 > --- a/gcc/gcc.cc > +++ b/gcc/gcc.cc > @@ -835,6 +835,14 @@ proper position among the other output files. */ > #define LINK_COMPRESS_DEBUG_SPEC \ > " %{gz|gz=3Dzlib:" LD_COMPRESS_DEBUG_OPTION "=3Dzlib}" \ > " %{gz=3Dnone:" LD_COMPRESS_DEBUG_OPTION "=3Dnone}" \ > + " %{gz*:%e-gz=3Dzstd is not supported in this configuration} " \ > + " %{gz=3Dzlib-gnu:}" /* Ignore silently zlib-gnu option value. */ > +#elif HAVE_LD_COMPRESS_DEBUG =3D=3D 2 > +/* ELF gABI style and ZSTD. */ > +#define LINK_COMPRESS_DEBUG_SPEC \ > + " %{gz|gz=3Dzlib:" LD_COMPRESS_DEBUG_OPTION "=3Dzlib}" \ > + " %{gz=3Dnone:" LD_COMPRESS_DEBUG_OPTION "=3Dnone}" \ > + " %{gz=3Dzstd:" LD_COMPRESS_DEBUG_OPTION "=3Dzstd}" \ > " %{gz=3Dzlib-gnu:}" /* Ignore silently zlib-gnu option value. */ > #else > #error Unknown value for HAVE_LD_COMPRESS_DEBUG. > @@ -890,6 +898,13 @@ proper position among the other output files. */ > " %{gz|gz=3Dzlib:" AS_COMPRESS_DEBUG_OPTION "=3Dzlib}" \ > " %{gz=3Dnone:" AS_COMPRESS_DEBUG_OPTION "=3Dnone}" \ > " %{gz=3Dzlib-gnu:}" /* Ignore silently zlib-gnu option value. */ > +#elif HAVE_AS_COMPRESS_DEBUG =3D=3D 2 > +/* ELF gABI style and ZSTD. */ > +#define ASM_COMPRESS_DEBUG_SPEC \ > + " %{gz|gz=3Dzlib:" AS_COMPRESS_DEBUG_OPTION "=3Dzlib}" \ > + " %{gz=3Dnone:" AS_COMPRESS_DEBUG_OPTION "=3Dnone}" \ > + " %{gz=3Dzstd:" AS_COMPRESS_DEBUG_OPTION "=3Dzstd}" \ > + " %{gz=3Dzlib-gnu:}" /* Ignore silently zlib-gnu option value. */ > #else > #error Unknown value for HAVE_AS_COMPRESS_DEBUG. > #endif