summaryrefslogtreecommitdiff
path: root/src/oracle/runtime_ref.c
blob: 659661bee911b9476b581c8c82e20b698e9b3c75 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* The few libc symbols ESP-IDF's LL code reaches for, supplied so the reference can link into a
 * freestanding image.
 *
 * There is exactly one so far, and it is reached by design rather than by accident:
 * `_uart_ll_set_baudrate` (uart_ll.h:532-535) calls `abort()` when handed an LP_UART instance,
 * because that path needs `lp_uart_ll_set_baudrate` instead. The differential harness only ever
 * passes HP UART instances, so this is unreachable in practice - but the linker does not know that,
 * and a missing `abort` fails the build with a symbol name that explains nothing about why.
 *
 * Spinning rather than resetting is deliberate: if a reference implementation ever does call this,
 * the board stops with its last console line intact, which is the difference between a diagnosable
 * failure and a reboot loop.
 */

__attribute__((noreturn)) void abort(void)
{
    for (;;) {
    }
}