This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TM4C123GH6PM: Undefined reference to interrupt handler C++ project

Part Number: TM4C123GH6PM

Hi all,

I am working on a C++ project using the TM4C123 family MCUs and am getting an undefined reference to my interrupt handlers during linking. The exact error is this: (.isr_vector+0x3c): undefined reference to `SysTickIntHandler'

Since I have a C++ project, I am assuming I am missing an extern "C" {} somewhere but this is what I have so far. First is a snippet of the startup file (startup_gcc.c)

extern void SysTickIntHandler();

//*****************************************************************************
//
// The entry point for the application.
//
//*****************************************************************************
extern int main(void);

//*****************************************************************************
//
// Reserve space for the system stack.
//
//*****************************************************************************
static uint32_t pui32Stack[128];

//*****************************************************************************
//
// The vector table.  Note that the proper constructs must be placed on this to
// ensure that it ends up at physical address 0x0000.0000.
//
//*****************************************************************************
__attribute__((section(".isr_vector"))) void (*const g_pfnVectors[])(void) = {
    (void (*)(void))((uint32_t)pui32Stack + sizeof(pui32Stack)),
    // The initial stack pointer
    ResetISR,           // The reset handler
    NmiSR,              // The NMI handler
    FaultISR,           // The hard fault handler
    IntDefaultHandler,  // The MPU fault handler
    IntDefaultHandler,  // The bus fault handler
    IntDefaultHandler,  // The usage fault handler
    0,                  // Reserved
    0,                  // Reserved
    0,                  // Reserved
    0,                  // Reserved
    IntDefaultHandler,  // SVCall handler
    IntDefaultHandler,  // Debug monitor handler
    0,                  // Reserved
    IntDefaultHandler,  // The PendSV handler
    SysTickIntHandler,  // The SysTick handler

The following is how I declare my interrupt handler

#ifdef __cplusplus
extern "C" {
#endif
void SysTickIntHandler() { system_counter++; }
#ifdef __cplusplus
}
#endif

What I have tried:
1. Renaming startup file with .cpp extension

2. extern "C" {} on the interrupt handler.

I have followed a few posts that had a similar issue but they said extern "C" {} fixed theirs, but I'm still getting the linkage error. I'm sure it's something silly.

Any help would be greatly appreciated, thanks!