RTEMS | bsps: BSP code depends on thread-local storage (#5797)

Sebastian Huber (@sebhub) gitlab at rtems.org
Sat Oct 3 13:31:21 UTC 2026



Issue created by Sebastian Huber: https://gitlab.rtems.org/rtems/rtos/rtems/-/work_items/5797



A Newlib built with `--enable-newlib-reent-thread-local` keeps `errno` and its reentrancy structure in thread-local storage.  Several BSPs call C library functions which set `errno` or use the reentrancy structure:

| BSP | Code |
| --- | --- |
| x86_64/amd64 | `printf()` in `paging_init()`, `strtol()` for the ACPI RSDP, the ACPI OS layer |
| mips/malta, i386/pc386 | `malloc()`, `calloc()` and `realloc()` in `ns16550_init()` and the legacy console |
| i386/pc386 | the PCI UART probe, the video and the GDB options |

This has two effects.  Every application holds thread-local objects, so tests such as `sptls01` which require an application without them fail.  The validation test suites of amd64 stop with `INTERNAL_ERROR_TOO_LARGE_TLS_SIZE`.  Code which runs before the thread pointer exists faults.  On amd64, Qemu offers no 1 GiB pages for the `qemu64` processor, so `paging_init()` prints a warning, and twenty validation test suites end with a triple fault before their first output.

Found while running the full test suite on Qemu.  This description was created with Claude Code assistance.

-- 
View it on GitLab: https://gitlab.rtems.org/rtems/rtos/rtems/-/work_items/5797
You're receiving this email because of your account on gitlab.rtems.org. Unsubscribe from this thread: https://gitlab.rtems.org/-/namespace/49/sent_notifications/5-a13aybe0fbc63sc8dnpvnbjeo-1d/unsubscribe | Manage all notifications: https://gitlab.rtems.org/-/profile/notifications | Help: https://gitlab.rtems.org/help


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/bugs/attachments/20261003/069453dc/attachment-0001.htm>


More information about the bugs mailing list