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.

CCS/MSP430F5419A: CCS migration from CCS4 to CCS6, CCS7, CCS8 issue

Part Number: MSP430F5419A

Tool/software: Code Composer Studio

Hello,

I've been trying to migrate my old project from CCS4 to the latest CCS6, CCS7 and CCS8 and all showed this linking error. I haven't been working with CCS for a while and not sure how to get around this. Any insights appreciated.

<Linking>
"../lnk_msp430f5419a.cmd", line 149: warning: Linker command file has no
sections of type=VECT_INIT, but does contain .intXX sections. This file may
be out of date. Generating interrupt pointers for all .intXX sections. The
default handler provided in the RTS will be used if no other handler is
found. It is recommend that you update your linker command file to the
latest version.
warning: creating output section ".data" without a SECTIONS specification

undefined first referenced
symbol in file
--------- ----------------
__cinit__ ./library/autoinit.obj
__pinit__ ./library/autoinit.obj

error: unresolved symbols remain
error: errors encountered during linking; "ELT_4000.out" not built

>> Compilation failure
makefile:180: recipe for target 'ELT_4000.out' failed
gmake: *** [ELT_4000.out] Error 1
gmake: Target 'all' not remade because of errors.

**** Build Finished ****

  • Please this article about that warning diagnostic.

    Thanks and regards,

    -George

  • Thanks for the reply but this warning is not a major problem. The problem is the following error:

    undefined first referenced
    symbol in file
    --------- ----------------
    __cinit__ ./library/autoinit.obj
    __pinit__ ./library/autoinit.obj

    error: unresolved symbols remain
    error: errors encountered during linking; "ELT_4000.out" not built

    Anyway, I kinda resolved the issue by creating a new project (empty without main.c) and imported my files over manually. It was just a pain to port the settings in the project file (predefined symbols, stack, optimization level, etc.) over and I am not even sure if I've missed something important doing this. This is because I observed the new hex file I generated with CCS8 is a bit bigger than the original one (CCS4). Hopefully nothing major. Is there a quick and sure way of porting the project file from CCS4 to a later CCS version?

    I will load the code and test it out. Keeping my fingers cross!
  • snuk said:
    undefined first referenced
    symbol in file
    --------- ----------------
    __cinit__ ./library/autoinit.obj
    __pinit__ ./library/autoinit.obj

    I'm still not sure.  But I suspect you have, without realizing it, changed from the older COFF ABI to EABI.  Many things are different between these two.  For an introduction to EABI, see this article.  Then understand that COFF ABI is the older one.  

    It also appears that you supplied your own implementation of the startup code. The startup code is quite different between COFF ABI and EABI.  If this guess is correct, then it is best if you change to using the startup code supplied in the TI RTS library.

    Thanks and regards,

    -George

  • Yes I have realized the COFF format had been changed to EABI format, which is the only option with compiler version 15.3.0 or later (I am using CCS8 with compiler version 18.1.3.LTS). What I have not realized is the full repercussions of the change. Like I mentioned above what I did to resolve to compilation problem was to create a new bare project in CCS8 without main.c and copied all my source and header files over (including main.c and some mods on the linker file). It compiles now but do you foresee a problem with this? Thanks for the help!

  • snuk said:
    create a new bare project in CCS8 without main.c and copied all my source and header files over (including main.c and some mods on the linker file)

    That is the best way to go.  Though I don't recommend changing the linker command file to just anybody.  It isn't extremely difficult.  But it does require a good working knowledge of the linker command file syntax.  In addition, be sure you use the startup routine that comes with the compiler, in the RTS library.

    Thanks and regards,

    -George

  • The new linker file needed some mods for my specific project. Not terribly hard and I actually encourage people to dig in and at least understand it. Anyway, how do I make sure the startup routine is being used? Doesn't creating a new bare project in CCS8 and porting source code over accomplish this already? Thanks
  • snuk said:
    how do I make sure the startup routine is being used?

    Look in the map to make sure the startup code is coming from an RTS library supplied with the compiler.  You should see lines similar to ...

                      00005c00    0000001c     rts430x_lc_rd_eabi.lib : boot.c.obj (.text:_isr:_c_int00_noargs)
                      00010000    00000076     rts430x_lc_rd_eabi.lib : copy_decompress_lzss.c.obj (.text:decompress:lzss:__TI_decompress_lzss)
                      00010076    00000054                            : autoinit.c.obj (.text:__TI_auto_init_nobinit_nopinit_hold_wdt:__TI_auto_init_nobinit_nopinit_hold_wdt)

    Thanks and regards,

    -George

  • Yes I can confirm this. Thanks for the help!