Okay, I think I've figured it out now. The problem is that you're using the compiler's _c_int00, but the CSL's interrupt vectors. The compiler's _c_int00 has an explicit reference to the symbol _Reset, but CSL does not define this symbol, so the linker will pull in the definition of _Reset from the compiler's RTS, which means pulling in vectors from the compiler's RTS. This is a flaw in the interface between CSL and the compiler's RTS. The remedy is to provide a definition of of _Reset. In summary:
- Use -c or -cr in the linker command file because it is a C program
- Make the entry point _c_int00 or RST, or don't specify it at all (for a C program, it defaults to _c_int00)
- Add linker option --symbol_map=_Reset=RST to tell the compiler that any reference to _Reset should be considered a reference to RST again.