From owner-freebsd-hackers@freebsd.org Mon Nov 16 13:27:43 2020 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 034892EF791 for ; Mon, 16 Nov 2020 13:27:43 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4CZVHc1q1Nz3NZM for ; Mon, 16 Nov 2020 13:27:40 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from tom.home (kib@localhost [127.0.0.1]) by kib.kiev.ua (8.16.1/8.16.1) with ESMTPS id 0AGDRVne076532 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO); Mon, 16 Nov 2020 15:27:34 +0200 (EET) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua 0AGDRVne076532 Received: (from kostik@localhost) by tom.home (8.16.1/8.16.1/Submit) id 0AGDRVqT076531; Mon, 16 Nov 2020 15:27:31 +0200 (EET) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Mon, 16 Nov 2020 15:27:31 +0200 From: Konstantin Belousov To: Paul Floyd Cc: FreeBSD Hackers Subject: Re: FreeBSD 12.2 extra RW program header Message-ID: References: <8ff8067a-3354-3587-4eda-1aa802f6c86b@wanadoo.fr> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <8ff8067a-3354-3587-4eda-1aa802f6c86b@wanadoo.fr> X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FORGED_GMAIL_RCVD,FREEMAIL_FROM, NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on tom.home X-Rspamd-Queue-Id: 4CZVHc1q1Nz3NZM X-Spamd-Bar: - Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=fail reason="No valid SPF, No valid DKIM" header.from=gmail.com (policy=none); spf=softfail (mx1.freebsd.org: 2001:470:d5e7:1::1 is neither permitted nor denied by domain of kostikbel@gmail.com) smtp.mailfrom=kostikbel@gmail.com X-Spamd-Result: default: False [-1.00 / 15.00]; ARC_NA(0.00)[]; FREEMAIL_ENVFROM(0.00)[gmail.com]; RCVD_TLS_ALL(0.00)[]; FROM_HAS_DN(0.00)[]; RBL_DBL_DONT_QUERY_IPS(0.00)[2001:470:d5e7:1::1:from]; FREEMAIL_FROM(0.00)[gmail.com]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[text/plain]; HAS_XAW(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; R_SPF_SOFTFAIL(0.00)[~all:c]; NEURAL_SPAM_SHORT(1.00)[0.998]; SPAMHAUS_ZRD(0.00)[2001:470:d5e7:1::1:from:127.0.2.255]; TO_MATCH_ENVRCPT_SOME(0.00)[]; TO_DN_ALL(0.00)[]; RCPT_COUNT_TWO(0.00)[2]; FREEMAIL_TO(0.00)[wanadoo.fr]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:6939, ipnet:2001:470::/32, country:US]; RCVD_COUNT_TWO(0.00)[2]; MAILMAN_DEST(0.00)[freebsd-hackers]; DMARC_POLICY_SOFTFAIL(0.10)[gmail.com : No valid SPF, No valid DKIM,none] X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Nov 2020 13:27:43 -0000 On Mon, Nov 16, 2020 at 02:07:32PM +0100, Paul Floyd wrote: > Hi > > > I see that FreeBSD 12.2 has added an extra RW program header. > > Can anyone explain what this does? (My initial guess is things like thread > mutexes and barriers). > > Full details: That's not full details, you stripped readelf output that describes it. The first rw data segment is really ro after linking is finished, you can see that RELRO segment location is identical to the first loadable rw segment. It contains the following sections typically .ctors .dtors .dynamic .got .got (but not .got.plt) is patched by rtld during load. I do not remember when did we enabled relro. Most likely long time before 12.1, and the new segment is due to the way relro handling changed in lld 10. > > > 12.1 > > Program Headers: >   Type           Offset             VirtAddr           PhysAddr >                  FileSiz            MemSiz              Flg Align >   PHDR           0x0000000000000040 0x0000000000200040 0x0000000000200040 >                  0x0000000000000230 0x0000000000000230  R      0x8 >   INTERP         0x0000000000000270 0x0000000000200270 0x0000000000200270 >                  0x0000000000000015 0x0000000000000015  R      0x1 >       [Requesting program interpreter: /libexec/ld-elf.so.1] >   LOAD           0x0000000000000000 0x0000000000200000 0x0000000000200000 >                  0x000000000000086c 0x000000000000086c  R 0x1000 >   LOAD           0x0000000000001000 0x0000000000201000 0x0000000000201000 >                  0x00000000000006b0 0x00000000000006b0  R E 0x1000 >   LOAD           0x0000000000002000 0x0000000000202000 0x0000000000202000 >                  0x0000000000001158 0x0000000000002014  RW 0x1000 >   DYNAMIC        0x0000000000003028 0x0000000000203028 0x0000000000203028 >                  0x0000000000000130 0x0000000000000130  RW     0x8 > > 12.2: > > Program Headers: >   Type           Offset             VirtAddr           PhysAddr >                  FileSiz            MemSiz              Flg Align >   PHDR           0x0000000000000040 0x0000000000200040 0x0000000000200040 >                  0x0000000000000268 0x0000000000000268  R      0x8 >   INTERP         0x00000000000002a8 0x00000000002002a8 0x00000000002002a8 >                  0x0000000000000015 0x0000000000000015  R      0x1 >       [Requesting program interpreter: /libexec/ld-elf.so.1] >   LOAD           0x0000000000000000 0x0000000000200000 0x0000000000200000 >                  0x00000000000008bc 0x00000000000008bc  R 0x1000 >   LOAD           0x00000000000008c0 0x00000000002018c0 0x00000000002018c0 >                  0x00000000000006c0 0x00000000000006c0  R E 0x1000 >   LOAD           0x0000000000000f80 0x0000000000202f80 0x0000000000202f80 >                  0x0000000000000158 0x0000000000000158  RW 0x1000 > > > extra header here -> > >   LOAD           0x00000000000010d8 0x00000000002040d8 0x00000000002040d8 >                  0x0000000000000090 0x00000000000000a8  RW 0x1000 > >   DYNAMIC        0x0000000000000fa8 0x0000000000202fa8 0x0000000000202fa8 >                  0x0000000000000130 0x0000000000000130  RW     0x8 > > > A+ > > Paul > > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"