Prusa MINI Firmware overview
|
#include <stdint.h>
Go to the source code of this file.
Classes | |
struct | UnwReport |
struct | UnwindCallbacks |
struct | UnwindFrame |
Typedefs | |
typedef bool(* | UnwindReportFunc) (void *data, const UnwReport *bte) |
Enumerations | |
enum | UnwResult { UNWIND_SUCCESS = 0, UNWIND_MORE_AVAILABLE = 1, UNWIND_UNSUPPORTED_DWARF_PERSONALITY = -1, UNWIND_REFUSED = -2, UNWIND_INVALID_SP = -3, UNWIND_INVALID_PC = -4, UNWIND_UNSUPPORTED_DWARF_INSTR = -5, UNWIND_EXHAUSTED = -6, UNWIND_TRUNCATED = -7, UNWIND_INCONSISTENT = -8, UNWIND_UNSUPPORTED = -9, UNWIND_FAILURE = -10, UNWIND_ILLEGAL_INSTR = -11, UNWIND_RESET = -12, UNWIND_IREAD_W_FAIL = -13, UNWIND_IREAD_H_FAIL = -14, UNWIND_IREAD_B_FAIL = -15, UNWIND_DREAD_W_FAIL = -16, UNWIND_DREAD_H_FAIL = -17, UNWIND_DREAD_B_FAIL = -18, UNWIND_DWRITE_W_FAIL = -19 } |
Functions | |
UnwResult | UnwindStart (UnwindFrame *frame, const UnwindCallbacks *cb, void *data) |
Interface to the ARM stack unwinding module.
Type for function pointer for result callback. The function is passed two parameters, the first is a void * pointer, and the second is the return address of the function. The bottom bit of the passed address indicates the execution mode; if it is set, the execution mode at the return address is Thumb, otherwise it is ARM.
The return value of this function determines whether unwinding should continue or not. If true is returned, unwinding will continue and the report function maybe called again in future. If false is returned, unwinding will stop with UnwindStart() returning UNWIND_TRUNCATED.
enum UnwResult |
Possible results for UnwindStart to return.
UnwResult UnwindStart | ( | UnwindFrame * | frame, |
const UnwindCallbacks * | cb, | ||
void * | data | ||
) |
Start unwinding the current stack. This will unwind the stack starting at the PC value supplied to in the link register (i.e. not a normal register) and the stack pointer value supplied.
-If the program was compiled with -funwind-tables , it will use them to perform the traceback. Otherwise, brute force will be employed -If the program was compiled with -mpoke-function-name, then you will get function names in the traceback. Otherwise, you will not.