-
Notifications
You must be signed in to change notification settings - Fork 135
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
libgcc: C11 threads-based gthread support cannot link samples/cpp/hello_world out-of-the-box #751
Comments
This effectively renders the SDK 0.16.6 release unusable until the C11 threads stub functions are added to the Zephyr Also, this is a breaking change that creates an incompatibility between the SDK 0.16.6 release and any Zephyr releases prior to the upcoming 3.7.0, which we do not want at this point. This should have been caught earlier and addressed in a more self-contained way within the SDK (e.g. providing weak C11 threads stub functions within the libgcc itself); unfortunately, the SDK CI does not build and run the C++ tests and samples and this was not caught -- I am going to fix that by adding more tests to be run in the SDK CI. At this point, I will need to mark the 0.16.6 a bad release and release 0.16.7 without the libstdc++ C11 gthread patch. The libstdc++ patch will need to be reworked to handle the transition more gracefully (as mentioned above, by providing weak C11 threads stubs). |
This reverts commit 8dee616 because it causes incompatibility with prior Zephyr releases which we do not want at this point. The relevant GCC patches should be reworked to be more self-contained and maintain compatibility with prior Zephyr releases as noted in the GitHub issue zephyrproject-rtos#751. Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
This reverts commit 8dee616 because it causes incompatibility with prior Zephyr releases which we do not want at this point. The relevant GCC patches should be reworked to be more self-contained and maintain compatibility with prior Zephyr releases as noted in the GitHub issue #751. Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
Marking it as an enhancement instead of a bug since 0.16.7 has been released without the C11 threads-based gthread libgcc patch. |
We likely do not want stub or weak implementations in Zephyr itself since there is a concrete implementation already.
I would definitely prefer to get this in prior to v3.7.0, since it's already been ~ 2 LTS release cycles in the making.
Agreed and good idea. |
FYI: /home/marcin/zephyr-sdk-0.16.6/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/marcin/zephyr-sdk-0.16.6/arm-zephyr-eabi/arm-zephyr-eabi/lib/thumb/v7e-m+fp/hard/libstdc++_nano.a(guard.o): in function Any ETA for 0.16.7 release? I see the tag is already there. |
Hi, I'm facing the same issue as @markaj-nordic mentioned. |
@seyednasermoravej use 0.16.8 |
Just test-driving the v0.16.6 SDK, and it looks like
samples/cpp/hello_world
does not build and run OOTB.Moving from v0.16.5-1 to 0.16.6, I needed to additionally enable the following in order for the app to link.
One possible solution for the above would be to create weak versions of the C11 <thread.h> functions in the toolchain, such that linking to an external implementation will provided the necessary functionality (when required).
Since
samples/cpp/hello_world
does not require C++11 threading, this seems like it would be a good choice.Beyond that, a couple of additional platforms are now facing issues
qemu_riscv64 and qemu_riscv32
This is likely due to something like stack unwinding, but it will take additional effort to diagnose / remedy.
Otherwise,
qemu_x86_64
,qemu_cortex_a53
,qemu_cortex_m3
have been tested with the command belowThe text was updated successfully, but these errors were encountered: