Tool/software: TI C/C++ Compiler
Greetings,
Our bootloader operates by creating its own binit table, and executes some code from flash first, before continuing. The first address is a jump over 256 bytes to clear our metadata (header), and c_int00 starts execution at offset 0x100.
When I migrated from 7.3.1 to 7.3.23 to fix an CGT ASLR issue, the bootloader stopped booting. In some cases, I cannot use our spec dig. to jtag to the board (e.g. PRSC failures). No source code, linker command file changes were made...only the migration.
When I have a build that will allow me to connect, the address 1F4 shows up which is in auto_init_elf. However, the data at 0x1F4 does not appear to be the same opcode or instructions (using dis6x). 0x1F4 is a flash address, so modification isn't possible during power-up.
The missing symbols in the *.map file are the only thing that would make sense. I've listed the symbols here for ease. I posted the original question here: https://e2e.ti.com/support/development_tools/compiler/f/343/p/561712/2059078
UNDEFED __TI_CINIT_Base
UNDEFED __TI_CINIT_Limit
UNDEFED __TI_Handler_Table_Base
UNDEFED __TI_Handler_Table_Limit
UNDEFED __TI_INITARRAY_Base
UNDEFED __TI_INITARRAY_Limit
When I run my working baseline, where these symbols are not listed in the map file, the compiler doesn't seem to hit my breakpoint at the start of auto_init_elf...so I can't compare execution. I'm guessing it still has to make the call to copy_ on the address for binit.
binit is defined in both builds.
Code composer studio 5.1, CGT tools 7.3.1 (working) and 7.3.23 (not working).
Thanks for any help