From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2001:67c:2178:6::1d]) by sourceware.org (Postfix) with ESMTPS id 24488385E010 for ; Tue, 4 Oct 2022 08:12:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 24488385E010 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=suse.cz Authentication-Results: sourceware.org; spf=fail 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-out2.suse.de (Postfix) with ESMTPS id 5F97D1F8D7; Tue, 4 Oct 2022 08:12:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1664871167; 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=E2tSxqqJ+gi7nu9P5KHknEqWB17g9YlZSdhJZ7O9Lf8=; b=cF/C2+IHryhMLYgorr/2uTxu78x96OmHpXJiAz0rhlI2FlTAZwYv+QnzIdFLYo5gKFOY8S d0Sbel42W6g21wos9SKLlBFepjVSImF2tWjCxI9J2HOOdSIOBAa4M8sgJkNH/d5zGkzUe1 WCiDqkcOiRu43CCZ2NkjjsYxi14uISY= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1664871167; 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=E2tSxqqJ+gi7nu9P5KHknEqWB17g9YlZSdhJZ7O9Lf8=; b=PN9enG/7vFpSaqV5NEMgnbOKbgx37jOz66Tobmg0N/eVZdsQkZAqvQfXG4nMZuSzxPNSqC 9VGwxifAnVJyL8Aw== 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 4927C139EF; Tue, 4 Oct 2022 08:12:47 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id OWDAEP/qO2MeSQAAMHmgww (envelope-from ); Tue, 04 Oct 2022 08:12:47 +0000 Message-ID: <373ed7fc-5b05-0049-7df0-35958fd2857c@suse.cz> Date: Tue, 4 Oct 2022 10:12:46 +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] compress .gnu.debuglto_.debug_* sections if requested To: Alan Modra Cc: binutils@sourceware.org, Fangrui Song References: <7e8f08f2-6c4f-0bfb-8cd0-bec1bf6fe5c2@suse.cz> Content-Language: en-US From: =?UTF-8?Q?Martin_Li=c5=a1ka?= In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-13.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_SOFTFAIL,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: On 10/4/22 10:07, Alan Modra wrote: > On Fri, Sep 30, 2022 at 09:19:49AM +0200, Martin Liška wrote: >> * write.c (compress_debug): Compress also ".gnu.debuglto_.debug_" >> if the compression algorithm is different from zlib-gnu. > > OK, choosing to skip compression for zlib-gnu is a reasonable approach > given that zlib-gnu has the clunky .debug_* to .zdebug_* section > renaming scheme. I'm going to commit your patch, but then enable > zlib-gnu with a followup patch of mine that doesn't rename the lto > debug sections. ld.bfd and the binutils work fine without renaming, > but there may be some other reason why zlib-gnu must have .zdebug > sections. If that turns out to be the case, my patch below can be > reverted. Makes sense. On the other hand, I would somehow slowly (but surely) make zlib-gnu obsolete. What do you think? For the future, people will likely move to the more modern and faster zstd compression algorithm. We're planning doing that once new binutils is released in openSUSE Tumbleweed. Cheers, Martin > > bfd/ > * elf.c (elf_fake_sections): Replace "." with ".z" in debug > section names only when name was ".d*", ie. ".debug_*". > (_bfd_elf_assign_file_positions_for_non_load): Likewise. > gas/ > * write.c (compress_debug): Compress .gnu.debuglto_.debug_* > for zlib-gnu too. Compress .gnu.linkonce.wi.*. > > diff --git a/bfd/elf.c b/bfd/elf.c > index 8cd257fc65c..420b524aae8 100644 > --- a/bfd/elf.c > +++ b/bfd/elf.c > @@ -3234,7 +3234,8 @@ elf_fake_sections (bfd *abfd, asection *asect, void *fsarg) > name = new_name; > } > } > - else if (asect->compress_status == COMPRESS_SECTION_DONE) > + else if (asect->compress_status == COMPRESS_SECTION_DONE > + && name[1] == 'd') > { > /* PR binutils/18087: Compression does not always make a > section smaller. So only rename the section when > @@ -3246,7 +3247,6 @@ elf_fake_sections (bfd *abfd, asection *asect, void *fsarg) > arg->failed = true; > return; > } > - BFD_ASSERT (name[1] != 'z'); > name = new_name; > } > } > @@ -6689,7 +6689,8 @@ _bfd_elf_assign_file_positions_for_non_load (bfd *abfd) > return false; > > if (sec->compress_status == COMPRESS_SECTION_DONE > - && (abfd->flags & BFD_COMPRESS_GABI) == 0) > + && (abfd->flags & BFD_COMPRESS_GABI) == 0 > + && name[1] == 'd') > { > /* If section is compressed with zlib-gnu, convert > section name from .debug_* to .zdebug_*. */ > diff --git a/gas/write.c b/gas/write.c > index b8d5253006c..30f6c110908 100644 > --- a/gas/write.c > +++ b/gas/write.c > @@ -1473,7 +1473,7 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED) > char *header; > int x; > flagword flags = bfd_section_flags (sec); > - unsigned int header_size, compression_header_size; > + unsigned int header_size; > > if (seginfo == NULL > || sec->size < 32 > @@ -1482,8 +1482,8 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED) > > section_name = bfd_section_name (sec); > if (!startswith (section_name, ".debug_") > - && (!startswith (section_name, ".gnu.debuglto_.debug_") > - || flag_compress_debug == COMPRESS_DEBUG_GNU_ZLIB)) > + && !startswith (section_name, ".gnu.debuglto_.debug_") > + && !startswith (section_name, ".gnu.linkonce.wi.")) > return; > > bool use_zstd = abfd->flags & BFD_COMPRESS_ZSTD; > @@ -1492,16 +1492,9 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED) > return; > > if (flag_compress_debug == COMPRESS_DEBUG_GNU_ZLIB) > - { > - compression_header_size = 0; > - header_size = 12; > - } > + header_size = 12; > else > - { > - compression_header_size > - = bfd_get_compression_header_size (stdoutput, NULL); > - header_size = compression_header_size; > - } > + header_size = bfd_get_compression_header_size (stdoutput, NULL); > > /* Create a new frag to contain the compression header. */ > first_newf = frag_alloc (ob); > @@ -1609,7 +1602,8 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED) > bfd_update_compression_header (abfd, (bfd_byte *) header, sec); > x = bfd_set_section_size (sec, compressed_size); > gas_assert (x); > - if (!compression_header_size) > + if (flag_compress_debug == COMPRESS_DEBUG_GNU_ZLIB > + && section_name[1] == 'd') > { > compressed_name = concat (".z", section_name + 1, (char *) NULL); > bfd_rename_section (sec, compressed_name); > >