From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sonic308-17.consmr.mail.ir2.yahoo.com (sonic308-17.consmr.mail.ir2.yahoo.com [77.238.178.145]) by sourceware.org (Postfix) with ESMTPS id 5E8AB38930D3 for ; Wed, 29 Apr 2020 13:05:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 5E8AB38930D3 X-YMail-OSG: ptq8jmYVM1mZb3hn4MCNNYtNdNBr2LkuxNeKi1EwUFWfGo6XxEklHM29lPMCKL5 JHcRzCjP2JCUrVhVP5EhoJENSV3lSUfhI07843sWS4RoOikuhcU1iWvTLSwKBDEeMekbPBCYOxwt RVtG7aTAXXW.jURn0GzP8GkiG2cgqLG6kBBB8G5dX07jkGNMwR7dezatowaOw2TYc98llU8iI2vI jQbMy3alQvW6dygFZV2KGDV_W7uXAzQHJch1A4OctTMW9pbMRp86jTJa6BhGBuG2qPapW1c14h2l ICtAZcZ4zN6B.u1qTLY2CsVaU6rer7T13zUQ8iu1dtpVjq5fnnXb6LqFpfv52bx_1htFB_nM5TgM LNF5bWrfb19HzHk_DfwgvA0VA4JQIpBlhHxBKXynUzuRnW08MRl5wUX2Igw2B48bMULF_MugSc1t pLX4w8ZqPZHzBGEb8S3HKqc1wgPnG.DF1tSQDv5imGTr7ab.5iY.3_GXRnt7fNz1maFXX1EyHCTm 3A7Uw0Xd9zEmE6QVTJqIOY2c8rrVx.yO2GYBAXaslKxKyuzf4i.pU5X.CF0IOZQ6wWjdQqWXxiKF hP_azdhU7FY5ZxE0YZP9QgFXUi3nMF.6w1R.njlN6yqn6CgtRxiLL0UMHojoudKoGZhbZUbYbgB4 bzN8HDrr9zFC2vgNPBUCMj2s2pK8PzS._u7ILmeTglMeRQuXcLwxX1hQ65v3mcCUNtpyGTQ6xbrP 8CD5__Mpht_c8YnhbQG4CycQZCzD2LcLNHL4pQ29ATMCUeXkSY0GkQK4n5PCKiwL1ZjDNeR5xhhk IPCV_bpscdowh5dSVjxxDuFikXyw4OFrqZeh.OIXFI4JsmcK7dGLsg83LkJjVydJA7fuO8JwT5Jv LHXxPh6gpavzQpplZ2Ka_8FejowdOLUIO0ZCEkGLdqEOI25GCF_wmavP2g3i1_pdU2GZoKEWU.Cm 5Se9EfLio2V4tABEvKPZwScEkfUKXmgnRbZ2O3QjskWYdqphXJB6GUGdqQyR3U6ZJi7qhYnrCU80 OpLnTpBe4lueQnBUCiyf_rZjb_9vhLTb3bqaoyNrkMEUq0fWy17Os93ja65_hru1vD6hRKFdZnnT .sC95she_2gAP6bg3djpoOqfNjN0ADA6jhQvqt43g4CYBatEepoMxsSGM2dp_ba5XSLWT6mf59mh ItMuUPzC3HdLfE6Rhuvz4giTBcNbSPBxWXmsQFdkGdU8trcXa5L0ieGWR9tfLZH9UZh6vi0F5zNS .bl0kppeC1i2Gahu_SFXWM5a5K3.vhyRqnrfIG9O1p5PtMYRKiPTzwmjy4l1T9Aea2ZfQT7wRl_v 05h7dboEWZ13AZkbWsgozZIXoPHdk_G.iG0KPteAc2FXM4Xl6ECWNmDM3Eg3AIxKFp.lQKkdlTZ4 ryK7P2ZJ1tqW3li.fQXVOxR.qyLa_pj5604tEEyGUh3rx7tsG Received: from sonic.gate.mail.ne1.yahoo.com by sonic308.consmr.mail.ir2.yahoo.com with HTTP; Wed, 29 Apr 2020 13:05:07 +0000 Received: by smtp419.mail.ir2.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID 0cda71974875eab9a451e62724b83f3d; Wed, 29 Apr 2020 13:05:04 +0000 (UTC) Subject: Re: _REENT_CHECK_VERIFY calls __assert_func even if NDEBUG is defined To: Keith Packard Cc: Jeff Johnston , "newlib@sourceware.org" References: <989180140.2023825.1588003097077.ref@mail.yahoo.com> <989180140.2023825.1588003097077@mail.yahoo.com> <1918742529.2295153.1588019348307@mail.yahoo.com> <1088500099.3472913.1588103875027@mail.yahoo.com> <878sifp8y8.fsf@keithp.com> From: "R. Diez" Message-ID: <83127821-8a4f-b4a4-3fc2-3dcd5e6110ed@yahoo.de> Date: Wed, 29 Apr 2020 15:05:02 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: <878sifp8y8.fsf@keithp.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 7bit X-Mailer: WebService/1.1.15756 hermes Apache-HttpAsyncClient/4.1.4 (Java/11.0.6) X-Spam-Status: No, score=1.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, 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-Level: * X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: newlib@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Newlib mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Apr 2020 13:05:18 -0000 > If you're tight on RAM, you might look at the newlib fork, picolibc, > which uses native TLS support for reentrant data values like > _rand_next. With that approach, your thread-local storage contains only > values used by your application and malloc need never be called. In this > case, the per-thread data would be only eight bytes. I do have one microcontroller with 8 KiB SRAM. For all others I do not want to bother. I am interested in your "only eight bytes" claim. Say I use picolibc, and then my firmware wants to use rand(), which needs many more bytes for the state of the pseudo-random number generator. The firmware is bare metal (no operating system). I guess there will not be a native TLS support then. How does rand() get the memory it needs? Do I need to preallocate it statically? Or have a separate memory pool for the TLS? Do I need to implement TLS myself? Can you do that with some sort of easy-to-code stack? Regards, rdiez