wswan:bugs
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| wswan:bugs [2024/02/17 09:53] – asie | wswan:bugs [2025/11/08 09:38] (current) – asie | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Known bugs ====== | + | ====== Known issues |
| ===== gcc-ia16 ===== | ===== gcc-ia16 ===== | ||
| - | In general, gcc-ia16' | + | * In general, |
| + | * gcc-ia16' | ||
| + | * gcc-ia16' | ||
| + | * The optimization levels '' | ||
| - | ==== Miscompilations involving far function pointers ==== | + | ==== Bug: Miscompilations involving far function pointers ==== |
| In some cases, when calling pointers from arrays of far function pointers in optimization modes >= -O1, the code will be miscompiled. This is a [[https:// | In some cases, when calling pointers from arrays of far function pointers in optimization modes >= -O1, the code will be miscompiled. This is a [[https:// | ||
| - | One can work around this by annotating the affected function to be compiled without optimizations: | + | One can work around this by annotating the affected function to be compiled without optimizations. In particular, one can create a separate function that //only// acts as a wrapper for the function call: |
| <code C> | <code C> | ||
| - | __attribute__((optimize(" | + | __attribute__((noinline, |
| void call_to_my_function_table(uint8_t index) { | void call_to_my_function_table(uint8_t index) { | ||
| my_function_table[index](); | my_function_table[index](); | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | ==== Issue: wwitch target and interrupt handlers ==== | ||
| + | |||
| + | The wwitch target does not support relocation; as such, far functions (which interrupt handlers have to be) cannot be created in sections other than the default text section. This can be most easily achieved by building with '' | ||
wswan/bugs.1708163584.txt.gz · Last modified: by asie
