From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) by sourceware.org (Postfix) with ESMTP id 4262C3857C46 for ; Fri, 18 Sep 2020 12:07:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 4262C3857C46 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-498-neJdcy5wNBOfLnCHOAfdKw-1; Fri, 18 Sep 2020 08:07:46 -0400 X-MC-Unique: neJdcy5wNBOfLnCHOAfdKw-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E968A80B73A; Fri, 18 Sep 2020 12:07:44 +0000 (UTC) Received: from oldenburg2.str.redhat.com (ovpn-113-177.ams2.redhat.com [10.36.113.177]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 09A5D5DA30; Fri, 18 Sep 2020 12:07:43 +0000 (UTC) From: Florian Weimer To: Michael Matz Cc: Jozef Lawrynowicz , gnu-gabi@sourceware.org Subject: Re: [RFC] SHF_GNU_RETAIN ELF Section Flag References: <20200915120632.bs36vkrbvmsoyvnu@jozef-acer-manjaro> <877dsvjl71.fsf@oldenburg2.str.redhat.com> <20200915123155.xpow3oxpzycsq3ie@jozef-acer-manjaro> <87v9gfi5cf.fsf@oldenburg2.str.redhat.com> <87mu1ri4ie.fsf@oldenburg2.str.redhat.com> <20200915132955.gmklbme6h5x5izha@jozef-acer-manjaro> <30f44461-67b1-2428-7b0d-9a49520524b3@redhat.com> <20200915165255.fm53szwcabht77ig@jozef-acer-manjaro> <875z8dn9xj.fsf@oldenburg2.str.redhat.com> Date: Fri, 18 Sep 2020 14:07:42 +0200 In-Reply-To: (Michael Matz's message of "Wed, 16 Sep 2020 13:46:38 +0000 (UTC)") Message-ID: <87y2l770fl.fsf@oldenburg2.str.redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain X-Spam-Status: No, score=-8.0 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gnu-gabi@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gnu-gabi mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Sep 2020 12:07:51 -0000 * Michael Matz: > Hello, > > On Wed, 16 Sep 2020, Florian Weimer via Gnu-gabi wrote: > >> * Jozef Lawrynowicz: >> >> > I suppose the most compelling use cases for SHF_GNU_RETAIN are when the >> > dependency cannot be expressed with references to ELF sections. You >> > can't use SHF_GROUP because there is nothing to group the section with. >> >> But if there is nothing to group the section with, why would the link >> editor load the object? >> >> That's the part I don't understand. > > Hmm? By putting it on the command line: > > % ld --gc-sections needed.o > > should retain the RETAIN sections from needed.o, even if otherwise not > seemingly referenced. But this use case already works today with an implicit linker script, I think: $ cat needed-impl.S .section .data.need-to-be-kept symbol_to_be_retained: .long 0 $ cat needed.o /* GNU ld script */ INPUT (needed-impl.o) SECTIONS { .data : { KEEP (*(.data.need-to-be-kept)) } } $ gcc -c needed-impl.S $ gcc -shared -Wl,--gc-sections needed.o $ $ readelf -s a.out | grep symbol_to_be_retained 35: 0000000000004020 0 NOTYPE LOCAL DEFAULT 20 symbol_to_be_retained (Some polishing by a linker expert is certainly needed, but I hope you get the idea.) Thanks, Florian -- Red Hat GmbH, https://de.redhat.com/ , Registered seat: Grasbrunn, Commercial register: Amtsgericht Muenchen, HRB 153243, Managing Directors: Charles Cachera, Brian Klemm, Laurie Krebs, Michael O'Neill