The weak syscall symbols generated by gen_syscalls.py are currently compiled in the LLEXT subsystem library, which is then linked among all other Zephyr libraries in an unspecified order. This can cause the weak symbols to override the actual syscall implementations, leading to undefined behaviour. To fix this, the currently generated file is split in two elements: - syscall_exports_llext.c contains the EXPORT_SYMBOL directives for all syscalls. This part can be compiled with the LLEXT library and linked among all other Zephyr libraries, and ensures all syscalls symbols are preserved by the linker. - syscall_weakdefs_llext.c contains the weak definitions for all syscalls. This file is compiled in a separate library that is linked last, so that the weak symbols are only used if no other implementation is available. Signed-off-by: Luca Burelli <l.burelli@arduino.cc> |
||
|---|---|---|
| .. | ||
| check_init_priorities_test.py | ||
| check_init_priorities.py | ||
| dir_is_writeable.py | ||
| elf_parser.py | ||
| file2hex.py | ||
| gen_app_partitions.py | ||
| gen_cfb_font_header.py | ||
| gen_device_deps.py | ||
| gen_image_info.py | ||
| gen_isr_tables_parser_carrays.py | ||
| gen_isr_tables_parser_local.py | ||
| gen_isr_tables.py | ||
| gen_iter_sections.py | ||
| gen_kobject_list.py | ||
| gen_kobject_placeholders.py | ||
| gen_offset_header.py | ||
| gen_relocate_app.py | ||
| gen_strerror_table.py | ||
| gen_strsignal_table.py | ||
| gen_symtab.py | ||
| gen_syscalls.py | ||
| llext_inject_slids.py | ||
| llext_prepare_exptab.py | ||
| llext_slidlib.py | ||
| mergehex.py | ||
| parse_syscalls.py | ||
| process_gperf.py | ||
| subfolder_list.py | ||
| uf2conv.py | ||
| uf2families.json | ||
| user_wordsize.py | ||