2013-11-14 4 views
2

GDB прилагается к моему коду Cortex-M3 дает мне стек следы, которые выглядят следующим образом:Как gdb (Thumb-2) знает, где находится верхняя часть стека?

#0 0x00000992 in zeptos_mod_svc() 
#1 0x00000d36 in Uart_ReadChar (uart=3) at src/zeptos/drivers/uart.c:60 
#2 0x00000d6c in gsmgps_entry() at src/vectr/gsmgps.c:13 
#3 0x00000000 in ??() 

Они полезны, но я хотел бы делать правильные вещи, и устранить это последняя запись. Что GDB ищет, чтобы сигнализировать о вершине стека, и что я должен помещать в стек новых задач, которые я создаю, чтобы помочь ему?

ответ

0

Один из способов сделать это - завершить стек в информации DWARF CFI.

Для ARM в частности, газ предоставляет директиву «.cantunwind» для этого. На других архитектурах я считаю, что более стандартно использовать cfi_undefined для обозначения указателя кадра.