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.

Is it safe to link a library built with C6000 6.x compiler in 7.x project?

We have been using the 6.1.20 C6000 toolchain for a few years, but we are migrating to CGT 7.3.9 (in part because it supports new STL features we now need).

However, when we made this transition we have seen a significant performance drop in a very speed-sensitive library. 

Our current plan is to keep the library at 6.1.20.  We are using the abi=coffabi option in 7.x.  Things are building and linking without problems, and initial tests have not revealed any issues.

What is TI's official stance on whether this is safe?  Pouring through the 7.x release notes, I see nothing warning about problems linking to older libraries as long as coffabi is used.  And according to this post, as long as the linker is more recent than the libraries, things should be OK:

http://e2e.ti.com/support/development_tools/compiler/f/343/p/217220/766310.aspx#766310

But the wiki page referenced in the post says of major compiler version changes:

This represents a substantial change of some sort.  Compatibility across versions with different X numbers is not assured.  Build options may be provided to preserve compatibility, but not always.

Should I interpret "compatibility is not assured" as a disclaimer that TI does not support attempting to link libraries built with different major versions (and 7.x/6.x in particular)?  Or is it simply a warning that at some future point compatibility may be broken with a major version change?

-Mike

  • Quick answer: Officially, you are on your own.  Unofficially, it will probably work.

    The official position is that only projects which follow these rules are supported:

    • The version of the RTS must match the version of the linker exactly
    • The version of the linker must be at least as great as the version of the compiler used to generate each input object file

    This means that TI will only provide bug fixes, documentation, etc for projects following those rules.

    That said, if you are able to link without errors, you can probably get away with using an old RTS with a newer linker.  Even when the major version is changed, backward-incompatible features are rarely introduced.  Usually, features are added, not altered.  The old library may be missing some things the newer compiler or linker want to use, but apparently your project doesn't depend on those features.  This won't always be the case.