[PATCH v2 0/3] Support --enable-newlib-reent-thread-local Newlib configuration option
Chris Johns
chrisj at rtems.org
Thu Jul 21 08:03:25 UTC 2022
+1
Really great patch and change. I think the performance improvements will be
excellent.
As an aside, does gdb know about TLS variables and so will `errno` be visible?
Chris
On 21/7/2022 5:09 pm, Sebastian Huber wrote:
> This patch set adds support for the --enable-newlib-reent-thread-local
> (_REENT_THREAD_LOCAL_STORAGE) Newlib configuration option.
>
> By default, Newlib uses a huge object of type struct _reent to store
> thread-specific data. This object is returned by __getreent() if the
> __DYNAMIC_REENT__ Newlib configuration option is defined.
>
> The reentrancy structure contains for example errno and the standard input,
> output, and error file streams. This means that if an application only uses
> errno it has a dependency on the file stream support even if it does not use
> it. This is an issue for lower end targets and applications which need to
> qualify the software according to safety standards (for example ECSS-E-ST-40C,
> ECSS-Q-ST-80C, IEC 61508, ISO 26262, DO-178, DO-330, DO-333).
>
> If the new _REENT_THREAD_LOCAL configuration option is enabled, then struct
> _reent is replaced by dedicated thread-local objects for each struct _reent
> member. The thread-local objects are defined in translation units which use
> the corresponding object.
>
> v2:
>
> * Remove i386, microblaze, and m68k from default enabled list.
>
> * Support --with-newlib-tls and --without-newlib-tls.
>
> Sebastian Huber (3):
> 6/7: Update Newlib
> newlib: Support --with/without-newlib-tls
> 6/7: Use TLS in Newlib for some targets by default
>
> rtems/config/6/rtems-aarch64.bset | 1 +
> rtems/config/6/rtems-arm.bset | 1 +
> rtems/config/6/rtems-nios2.bset | 1 +
> rtems/config/6/rtems-powerpc.bset | 1 +
> rtems/config/6/rtems-riscv.bset | 1 +
> rtems/config/6/rtems-sparc.bset | 1 +
> rtems/config/7/rtems-aarch64.bset | 1 +
> rtems/config/7/rtems-arm.bset | 1 +
> rtems/config/7/rtems-nios2.bset | 1 +
> rtems/config/7/rtems-powerpc.bset | 1 +
> rtems/config/7/rtems-riscv.bset | 1 +
> rtems/config/7/rtems-sparc.bset | 1 +
> .../config/tools/rtems-gcc-10-newlib-head.cfg | 4 +--
> .../tools/rtems-gcc-10.4-newlib-head.cfg | 27 +++++++++++++++++++
> .../config/tools/rtems-gcc-12-newlib-head.cfg | 5 ++--
> .../tools/rtems-gcc-head-newlib-head.cfg | 4 +--
> source-builder/config/checks.cfg | 9 +++++++
> source-builder/config/gcc-common-1.cfg | 1 +
> 18 files changed, 55 insertions(+), 7 deletions(-)
> create mode 100644 rtems/config/tools/rtems-gcc-10.4-newlib-head.cfg
>
More information about the devel
mailing list