-
Notifications
You must be signed in to change notification settings - Fork 7.4k
Two collab sdk dev fixes #90073
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
base: collab-sdk-dev
Are you sure you want to change the base?
Two collab sdk dev fixes #90073
Conversation
keith-packard
commented
May 16, 2025
- Align iterable objects to 8 bytes when using 64 bit timeouts
- Increase test stack size when using c++ exceptions
The compiler may want to know the desired optimization level during linking, as when the compiler multilib configuration includes -Os as a selector. Do this by adding a new (optional) linker function, toolchain_linker_add_compiler_options, which maps compiler options to equivalent linker options, discarding any that aren't applicable. Linker configurations which use the compiler driver (ld, lld, and xt-ld) apply all provided compiler options. Linkers which don't provide this function fall back to an implementation which simply discards all options. Signed-off-by: Keith Packard <[email protected]>
With inclusion of the optimization flag into the multilib selection process, we cannot compute the compiler library path when the compiler's target.cmake is processed as OPTIMIZATION_FLAG is not computed until much later. Instead, add a function (compiler_file_path) which can be used to locate the appropriate crtbegin.o and crtend.o files. Delay computation of lib_include_dir and rt_library until after all compiler flags have been computed by adding compiler_set_linker_properties and calling that just before toolchain_linker_finalize is invoked. Place default implementations of both of these functions in a new file, cmake/compiler/target_template.cmake, where we assume the compiler works like gcc or clang and handlers the --print-file-name and --print-libgcc-file-name options. Compilers needing alternate implementations can override these functions in their target.cmake files. These implementations require that no generator expressions are necessary for the compiler to compute the right library paths. This mechanism is also used to take any additional compiler options and pass them to the linker using toolchain_linker_add_compiler_options. Signed-off-by: Keith Packard <[email protected]>
Switch to latest picolib release, version 1.8.10 Signed-off-by: Keith Packard <[email protected]>
When building POSIX code, we need to use picolibc's limits.h instead of manually defining the POSIX values. This avoids duplicate definitions of these symbols. Signed-off-by: Keith Packard <[email protected]>
Picolibc changed things like _WANT_MINIMAL_IO_LONG_LONG to __IO_MINIMAL_LONG_LONG in an attempt to regularize the exposed names and eliminate names that weren't prefixed with even a single underscore. Adapt to this change by looking for both old and new symbols. Signed-off-by: Keith Packard <[email protected]>
Handling for RX architecture. Signed-off-by: Anas Nashif <[email protected]>
This test only works for 64-bit values. On targets which use 32 bits for double, skip this version. The float test will check the 32-bit math for that. Signed-off-by: Keith Packard <[email protected]> Signed-off-by: Anas Nashif <[email protected]>
Many tests failing for RX, exclude those until the arch stablizes. See zephyrproject-rtos#89839 Signed-off-by: Anas Nashif <[email protected]>
This file is explicitly included by the espressif hal module. It's an internal file provided by picolibc and newlib. Provide a stub to let code designed for those to work with the minimal C library. Signed-off-by: Keith Packard <[email protected]>
These two tests are validating that deprecated APIs still work correctly. Which means they will definitely generate compile warnings. To disable -Werror while letting it be enabled for other tests, create a new Kconfig variable, DEPRECATION_TEST and make COMPILER_WARNINGS_AS_ERRORS depend on that option being unselected. Add this option to the two tests so that the resulting configuration disables -Werror. Signed-off-by: Keith Packard <[email protected]>
_static_thread_data contains a ktimeout_t; if that is 64 bits, we should align them to 8 bytes to follow C alignment requirements, which means adjusting the iterable alignment value. Signed-off-by: Keith Packard <[email protected]>
Initializing the C++ stack unwinding data structures takes quite a bit of stack space. Increase the TEST_EXTRA_STACK_SIZE when using these. Signed-off-by: Keith Packard <[email protected]>
|
@keith-packard had to cherry-pick one of the patches for now, this same branch is being used for the 12.2 gcc and is failing with the |
I'm surprised the _static_thread_data patch isn't required on other hosts, but I guess they can all load 64-bit values on 32-bit boundaries. sparc appears to be special in requiring 64-bit alignment. |