forked from auracaster/openocd
Backtraces performed by GDB on any thread other than the current thread would fail if hardware 8 byte ISR stack alignment was enabled on cortex_m targets. Stack reads now adjust the stored SP to account for a potential offset introduced by hardware. Fixed incorrect register offsets for cortex_m Nuttx frames by reading the TCB info symbols to determine correct offsets. Fixed offsets can no longer be used since the offsets have changed multiple times for different Nuttx versions. Tested on nuttx-12.1.0. Tested using custom stm32h7 board and custom s32k148 board variants. Built with CONFIG_ARCH_FPU enabled and disabled to test FPU and non FPU frame logic. Change-Id: Ifcbeefb0ddcfbcb528daa9d1d95732ca9584c9ef Signed-off-by: daniellizewski <daniellizewski@geotab.com> Reviewed-on: https://review.openocd.org/c/openocd/+/8180 Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com> Tested-by: jenkins
25 lines
814 B
C
25 lines
814 B
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
#ifndef INCLUDED_RTOS_NUTTX_STACKINGS_H
|
|
#define INCLUDED_RTOS_NUTTX_STACKINGS_H
|
|
|
|
#include "rtos.h"
|
|
|
|
/* Used to index the list of retrieved symbols. See nuttx_symbol_list for the order. */
|
|
enum nuttx_symbol_vals {
|
|
NX_SYM_READYTORUN = 0,
|
|
NX_SYM_PIDHASH,
|
|
NX_SYM_NPIDHASH,
|
|
NX_SYM_TCB_INFO,
|
|
NX_SYM_REG_OFFSETS,
|
|
};
|
|
|
|
extern const struct rtos_register_stacking nuttx_stacking_cortex_m;
|
|
extern const struct rtos_register_stacking nuttx_stacking_cortex_m_fpu;
|
|
extern const struct rtos_register_stacking nuttx_riscv_stacking;
|
|
extern const struct rtos_register_stacking nuttx_esp32_stacking;
|
|
extern const struct rtos_register_stacking nuttx_esp32s2_stacking;
|
|
extern const struct rtos_register_stacking nuttx_esp32s3_stacking;
|
|
|
|
#endif /* INCLUDED_RTOS_NUTTX_STACKINGS_H */
|