Tool/software: TI C/C++ Compiler
I have a fairly large application based on the PA audio example. It runs on K2G with both the ARM and DSP running TI-RTOS. I recently received an update to a third party library which causes my DSP application link to fail. I'm looking for help to understand how to avoid this.
The failure:
Just adding the new library to the link line results in several "error #10099-D: program will not fit into available memory" errors. I have a fairly complicated memory layout in config.bld. The failure message is telling me the linker can't place the regions that are shared with the ARM. I have looked in vain for what could cause this. The new library does not (as far as I can tell) define anything that would go in this section. I've asked the vendor to provide a library built with v8.1, but that can't be the only issue.
Note that my config.bld has three sections. The first section describes the shared regions. Then there are descriptions for the ARM and the DSP, each of which refer to the shared regions. This all works when this library is excluded.
Versions:
I've been using version 8.1 of the compiler. This new library is noted to be built with v8.2. I suspect there is some compatibility issue there. I've tried building my application with v8.2 and it does not solve the critical problem. The link still fails. Further I get dozens of warning #10278-D. The readme with the 8.2 compiler refers to it as a "new compiler" suggesting some changes, but I don't yet find anything specifically causing this.
Other Differences I've noticed:
When I use nm6x to dump the library contents I notice a difference that might suggest something to an expert:
The working (older) library has a lot of these sort of lines:
0x00000000 a {C816A2B1-EAF8-4575-8BD6-1079DA21DDEF}
while the new one has these instead:
0x00000000 a TI2oI3mLqrt
That suggests that something about the build is different, but other than all of the debug stuff I find no smoking gun.
While the Linux utility "readelf" will dump the info about the v2.2.2 version, the same tool reports
readelf: Error: mst.lib: did not find a valid archive header
Meanwhile, the Linux utility objdump handles both files. Each is reported as "file format elf32-little".
All of the other libraries in my system cannot be read by "readelf".
The file "ti-cgt-c6000_8.2.2/Closed_defects.html" notes "CODEGEN-3597 ELF header field e_phoff should be 0 when no program header is present". But this doesn't explain my actual link error.