From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dedi548.your-server.de (dedi548.your-server.de [85.10.215.148]) by sourceware.org (Postfix) with ESMTPS id 4E5C83858D28 for ; Thu, 21 Jul 2022 05:26:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 4E5C83858D28 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embedded-brains.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=embedded-brains.de Received: from sslproxy03.your-server.de ([88.198.220.132]) by dedi548.your-server.de with esmtpsa (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1oEOhF-000AA8-JN; Thu, 21 Jul 2022 07:26:01 +0200 Received: from [82.100.198.138] (helo=mail.embedded-brains.de) by sslproxy03.your-server.de with esmtpsa (TLSv1.3:TLS_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oEOhF-000OPO-PW; Thu, 21 Jul 2022 07:26:01 +0200 Received: from localhost (localhost [127.0.0.1]) by mail.embedded-brains.de (Postfix) with ESMTP id 777F34800C5; Thu, 21 Jul 2022 07:26:01 +0200 (CEST) Received: from mail.embedded-brains.de ([127.0.0.1]) by localhost (zimbra.eb.localhost [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id yLUlGIiN3rOL; Thu, 21 Jul 2022 07:26:00 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by mail.embedded-brains.de (Postfix) with ESMTP id 4DFAB480136; Thu, 21 Jul 2022 07:26:00 +0200 (CEST) X-Virus-Scanned: amavisd-new at zimbra.eb.localhost Received: from mail.embedded-brains.de ([127.0.0.1]) by localhost (zimbra.eb.localhost [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id 30r4Y4hbhWgm; Thu, 21 Jul 2022 07:26:00 +0200 (CEST) Received: from [192.168.96.159] (unknown [192.168.96.159]) by mail.embedded-brains.de (Postfix) with ESMTPSA id 2816B4800C5; Thu, 21 Jul 2022 07:26:00 +0200 (CEST) Message-ID: <808c2471-af44-605e-05e4-330f08e13206@embedded-brains.de> Date: Thu, 21 Jul 2022 07:25:59 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: Use -ftls-model=local-exec for RTEMS by default? Content-Language: en-US To: Alexander Monakov Cc: GCC Development References: <2592dc25-bf0-6051-a9d8-68db5c3ad6a7@ispras.ru> From: Sebastian Huber In-Reply-To: <2592dc25-bf0-6051-a9d8-68db5c3ad6a7@ispras.ru> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Authenticated-Sender: smtp-embedded@poldinet.de X-Virus-Scanned: Clear (ClamAV 0.103.6/26607/Wed Jul 20 10:04:34 2022) X-Spam-Status: No, score=-5.3 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS, KAM_SHORT, 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 X-BeenThere: gcc@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2022 05:26:09 -0000 On 20.07.22 15:01, Alexander Monakov wrote: > On Wed, 20 Jul 2022, Sebastian Huber wrote: >=20 >> On 20/07/2022 13:41, Alexander Monakov wrote: >>> On Wed, 20 Jul 2022, Sebastian Huber wrote: >>> >>>> How does Ada get its default TLS model? >>> You shouldn't need to do anything special, GCC automatically selects >>> initial-exec or local-exec for non-PIC (including PIE). >> I am not sure, for this test program: >> >> extern _Thread_local int i; >> _Thread_local int j; >> >> int f(void) >> { >> return i + j; >> } >> >> I get: > [snip] >=20 > Thanks, I missed that you are asking about promoting initial-exec to lo= cal-exec > rather than x-dynamic to y-exec. There's a pending patch that implement= s such > promotion based on visibility information: > https://gcc.gnu.org/pipermail/gcc-patches/2022-July/598017.html >=20 > With that patch, you'll get local-exec model for the extern variable 'i= ' if you > inform the compiler that its definition will end up in the current modu= le: >=20 > __attribute__((visibility("hidden"))) > extern _Thread_local int i; > _Thread_local int j; >=20 > int f(void) > { > return i + j; > } >=20 > Thus I would try to enhance the binds_local_p target hook for RTEMS to = inform > the compiler that there's no dynamic linking (although apart from TLS v= ariables > I cannot instantly name other places where it would enhance optimizatio= n). This sounds like an interesting approach in the long run, however, I=20 need a short term solution which I can back port to GCC 10, 11, and 12.=20 I guess I will add a MULTILIB_EXTRA_OPTS =3D ftls-model=3Dlocal-exec to all RTEMS multilib configurations. In general I think the target hooks are hard to customize for operating=20 systems. --=20 embedded brains GmbH Herr Sebastian HUBER Dornierstr. 4 82178 Puchheim Germany email: sebastian.huber@embedded-brains.de phone: +49-89-18 94 741 - 16 fax: +49-89-18 94 741 - 08 Registergericht: Amtsgericht M=C3=BCnchen Registernummer: HRB 157899 Vertretungsberechtigte Gesch=C3=A4ftsf=C3=BChrer: Peter Rasmussen, Thomas= D=C3=B6rfler Unsere Datenschutzerkl=C3=A4rung finden Sie hier: https://embedded-brains.de/datenschutzerklaerung/