I work with Kernel 11.2.0 R5 port. My project is cpp but I compile Kernel with gcc. Before Kernel 11.2.0 (such as 11.1.0) I can work without any problem but with Kernel 11.2.0, I have linker error that undefined reference to vAssertCalled function. The reason of this problem is, FreeRTOSConfig.h that define vAssertCalled function is defined after extern “C”
But in Kernel 11.2.0 FreeRTOSConfig.h is defined before extern “C”. I solved this problem with added extern “C” in the beginning of the FreeRTOSConfig.h.
Its in line 147 and 3354, and have been there for ages. I think I might have been one of the causes of it, with a request many years ago.
The fix for bug 1064 moved it to where it should have been.
Note, the adding of them to FreeRTOSConfig.h is only needed if you only implement vAssertCalled in a C++ file (which is likely the normal case for C++ develepment). If you implement it as a normal C++ function in a C++ file, and also as a C function in a C file (perhaps with different operations) you don’t need it, and C code will call the C version, and C++ the C++ version.