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.

Linker symbol redefine where none exists

I could use some help translating this error into something meaningful.

This code successfully builds when I use compiler TI v3.2.1  When I use the TI V4.4.3 compiler I get a number of  interrupt symbol "redefine" errors, followed by "program will not fit in avail mem" errors.  I am sure one is causing the other.


ProjectA is dependent on the lib created in ProjectC.  ProjectC will successfully build the lib w/ either compiler version.  ProjectA will successfully build if I use compiler3.  If I use compiler4, the linker will fail with errors such as:

error: symbol "__TI_int23" redefined:
first defined in ccsv6/tools/compiler/ti-cgt-msp430_4.4.3/lib/rts430xl.lib<int23.obj>
redefined in  ProjectC/Debug/myDebug.lib<CommStuff.obj>"

When I look at rts430xl.lib  I can find the __TI_int23 symbol.  (int23.obj: 00000000 D __TI_int23)
When I look into myDebug.lib, (built w/ compiler3) there is NO __TI_int23 symbol.  So the error appears bogus.

When I build ProjectC w/ compiler4, myDebug.lib does contain the __TI_int23 symbol. (CommStuff.obj: 00000000 D __TI_int23)  With the above bogus error statement, I doubt this validity of this error statement.

I'm not sure if this is related, but the automatic RTS selection is shifting:

remark: automatic RTS selection:  linking in index library "libc.a"
remark: automatic RTS selection:  linking in "rts430xl.lib" in place of index library "libc.a"

Can you offer some insight into the bogus error statement.

  • Michael,

    Is your device specific linker cmd file recent or older?

    If it does not have below type VECT_INIT entries then I recommend updating to the latest linker cmd file for you device.

        AES          : { * ( .int45 ) } > INT45 type = VECT_INIT
        RTC          : { * ( .int46 ) } > INT46 type = VECT_INIT

    They are located here in CCS:

    C:\ti\ccs\ccs_6_1_0_ga\ccsv6\ccs_base\msp430\include

    Regards,
    Greg

  • Greg,

    I do have the VECT_INIT designation on the interrupt calls.  This appears to be s toolchain setup issue.  All 6 issues are related to the 6 ISR's that are in the dependent ProjectC library.  What I need the linker to do is use the ISR's in the library project, rather than the ones in the RTS.  They both have the same symbol names, hence the error.

    How do I tell the linker to use my ISR's and ignore the "automatic" RTS (CCS) version?

    Thanks,

    ML

  • I've isolated the issue to this part of the linker_cmd file:
    .boot > MY_BOOT /* my own section. Creates fix addr 4 beginning of the boot */
    {
    -l rts430xl.lib<boot.obj> (.text) <--- this line causes the issues
    }
    I'm not sure how to interpret this. It looks to me like the original author wanted to specify a particular boot routine.
    Does this syntax look correct? Is there a better way to implement this operation?
    (The RTS slection is set to automatic. This approach seems dangerous for support reasons.)
  • Michael,

    How did you fix the ISR symbol redef errors?

    What link order are you using for your library vs RTS?
    Which library is linked first? Can you post your console output from a rebuild?

    And another option is to use --disable_auto_rts.

    Above boot.obj line in your linker cmd file doesn't come in the stock files with CCS so I'm not sure what the intent was.

    Regards,
    Greg
  • Greg,

    The linker-cmd statement I posted is causing the ISR symbol redef errors.  I'm still working on the same issue.

    I did try setting the RTS selection to rts430xl.lib rather than use the "automatic".  This made no difference.

    There is only one include file in the linker cmd.  It is the ProjectC library file.

    Found it:  Added the linker flag: --priority

    Apparently w/o it all found symbols are pulled into the linker,... and any duplicates are an issue, rather than first-come-first-serve.

    Thanks for the assistance,

    ML