Сбсна вопрос платформонезависим, а зависит от компилятора. Был кусок кода в иаре.
#if defined (__ICCARM__)
#define __vectors __root const uVectorEntry __vector_table[] @ ".intvec"
#define __stack { .ui32Ptr = (uint32_t)Stack + sizeof(Stack) }
typedef union
{
void (*Handler)(void);
uint32_t ui32Ptr;
} uVectorEntry;
#endif
Нужно его переделать для GCC.
Всё что после дефайнов по ходу тоже не зависит от компилятора. Возможно реакции требует только 1 строчка после ифа.
Это startap файл для stm32f103c8t6(Cortex-M3).
UPD
Решение:
#define __vectors void (*const __vector_table[])(void) __attribute__((section(".isr_vector")))
Плюс правильный линкер скрипт, или вообще дефолтный стартап из куба.