From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 60196 invoked by alias); 2 Oct 2018 15:13:58 -0000 Mailing-List: contact gnu-gabi-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Post: List-Help: List-Subscribe: Sender: gnu-gabi-owner@sourceware.org Received: (qmail 59834 invoked by uid 89); 2 Oct 2018 15:13:57 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Checked: by ClamAV 0.100.1 on sourceware.org X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_PASS autolearn=ham version=3.3.2 spammy=H*f:sk:NvFg2Yx, H*f:iapPZ, H*f:sk:4COg@ma, H*i:sk:4COg@ma X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_PASS autolearn=ham version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on sourceware.org X-Spam-Level: X-Spam-User: qpsmtpd, 2 recipients X-HELO: mx1.suse.de Received: from mx2.suse.de (HELO mx1.suse.de) (195.135.220.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 02 Oct 2018 15:13:56 +0000 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 17B09ACFB; Tue, 2 Oct 2018 15:13:54 +0000 (UTC) Date: Mon, 01 Jan 2018 00:00:00 -0000 From: Michael Matz To: "H.J. Lu" cc: Rich Felker , Cary Coutant , Carlos O'Donell , Florian Weimer , Szabolcs Nagy , Jan Beulich , Binutils , gnu-gabi@sourceware.org Subject: Re: RFC: Add GNU_PROPERTY_NEED_PHDRS In-Reply-To: Message-ID: References: User-Agent: Alpine 2.21 (LSU 202 2017-01-01) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-IsSubscribed: yes X-SW-Source: 2018-q4/txt/msg00002.txt.bz2 Hi, On Tue, 2 Oct 2018, H.J. Lu wrote: > A .note.gnu.property section will lead to a read-only data PT_LOAD segment > as the first PT_LOAD segment: Yes, and it's a hack. This section isn't necessary, it merely is the easiest (?) way you found to force ld to create the PT_LOAD segment you want. What about linker scripts that filter out all .note sections? You _still_ want the phdrs to be mapped in that case. You basically replace the current state (where the phdrs are mapped by accident) with a different state that still only works by accident. It would be better to make this work by design not accident. Ciao, Michael. > > [hjl@gnu-17 ld]$ readelf -WlS tmpdir/pr23428 > There are 16 section headers, starting at offset 0x2ed0: > > Section Headers: > [Nr] Name Type Address Off Size > ES Flg Lk Inf Al > [ 0] NULL 0000000000000000 000000 > 000000 00 0 0 0 > [ 1] .note.gnu.property NOTE 0000000000400158 000158 > 000030 00 A 0 0 8 > [ 2] .text PROGBITS 0000000000401000 001000 > 0000ea 00 AX 0 0 16 > [ 3] .rodata PROGBITS 0000000000402000 002000 > 000006 01 AMS 0 0 1 > [ 4] .comment PROGBITS 0000000000000000 002006 > 00002d 01 MS 0 0 1 > [ 5] .debug_aranges PROGBITS 0000000000000000 002040 > 000060 00 0 0 16 > [ 6] .debug_info PROGBITS 0000000000000000 0020a0 > 0002f7 00 0 0 1 > [ 7] .debug_abbrev PROGBITS 0000000000000000 002397 > 000137 00 0 0 1 > [ 8] .debug_line PROGBITS 0000000000000000 0024ce > 0001a7 00 0 0 1 > [ 9] .debug_frame PROGBITS 0000000000000000 002678 > 000040 00 0 0 8 > [10] .debug_str PROGBITS 0000000000000000 0026b8 > 0002a1 01 MS 0 0 1 > [11] .debug_loc PROGBITS 0000000000000000 002959 > 000295 00 0 0 1 > [12] .debug_ranges PROGBITS 0000000000000000 002bee > 000020 00 0 0 1 > [13] .symtab SYMTAB 0000000000000000 002c10 > 0001e0 18 14 14 8 > [14] .strtab STRTAB 0000000000000000 002df0 > 000030 00 0 0 1 > [15] .shstrtab STRTAB 0000000000000000 002e20 > 0000ab 00 0 0 1 > Key to Flags: > W (write), A (alloc), X (execute), M (merge), S (strings), I (info), > L (link order), O (extra OS processing required), G (group), T (TLS), > C (compressed), x (unknown), o (OS specific), E (exclude), > l (large), p (processor specific) > > Elf file type is EXEC (Executable file) > Entry point 0x4010c0 > There are 5 program headers, starting at offset 64 > > Program Headers: > Type Offset VirtAddr PhysAddr > FileSiz MemSiz Flg Align > LOAD 0x000000 0x0000000000400000 0x0000000000400000 > 0x000188 0x000188 R 0x1000 > LOAD 0x001000 0x0000000000401000 0x0000000000401000 > 0x0000ea 0x0000ea R E 0x1000 > LOAD 0x002000 0x0000000000402000 0x0000000000402000 > 0x000006 0x000006 R 0x1000 > NOTE 0x000158 0x0000000000400158 0x0000000000400158 > 0x000030 0x000030 R 0x8 > GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 > 0x000000 0x000000 RWE 0x10 > > Section to Segment mapping: > Segment Sections... > 00 .note.gnu.property > 01 .text > 02 .rodata > 03 .note.gnu.property > 04 > [hjl@gnu-17 ld]$ > > >