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.

upgrade to CCS6.1.3 from CCS6.1.2 causes error #10056 with build

Other Parts Discussed in Thread: CONTROLSUITE

I am using a macintosh with a TMS320C28335 target.

My project successfully builds and runs with CCS6.1.2 beta.  I did a clean install (renamed the ti directory and installed the release version of CCS6.1.3.  I first got a warning that

This project was created using a version of compiler that is not currently installed: 6.4.4 [C2000]. Another version of the compiler will be used during build: 15.12.1.LTS. 

 so I chose the new one in the list TI v15.12.1 LTS.  When I compile I get the following error: 

#10056 symbol "_sqrt" redefined: first defined in "/xxx/TI/ControlSUITE/libs/math/FPUfastRTS/V100/lib/rts2800_fpu32_fast_supplement.lib<sqrt_f32.obj>"; redefined in "/Applications/ti/ccsv6/tools/compiler/ti-cgt-c2000_15.12.1.LTS/lib/rts2800_fpu32.lib<e_sqrtf.obj>"

I have always followed the guidelines of having the fastRTS library linked before the regular one.  Enclosed is the linking dialog. How do I properly fix this error?  I want to be sure to remove the conflicting lib file but I want the fastRTS routines.  Thank you.

TI Dialog.tiff

  • Hello Neil,

    Are you absolutely sure each one has the same settings and each one is using the same configuration (i.e. debug). Sometimes when changing to a new compiler, the build settings that were set in the previous compiler will not get set in the new compiler.

    Also, clean your build and try to see if you get the same error again.

    Stephen
  • "This project was created using a version of compiler that is not currently installed: 6.4.4 [C2000]. Another version of the compiler will be used during build: 15.12.1.LTS. "

    It's nice to know they added that feature to CCSv6.1.3.  In CCSv6.1.1 and lower  (I'm not sure about 6.1.2 because I never used it), CCS wouldn't be able to open the project if the compiler previously used in the project wasn't installed.  

  • NEIL SINGER said:

    so I chose the new one in the list TI v15.12.1 LTS.  When I compile I get the following error: 

    #10056 symbol "_sqrt" redefined: first defined in "/xxx/TI/ControlSUITE/libs/math/FPUfastRTS/V100/lib/rts2800_fpu32_fast_supplement.lib<sqrt_f32.obj>"; redefined in "/Applications/ti/ccsv6/tools/compiler/ti-cgt-c2000_15.12.1.LTS/lib/rts2800_fpu32.lib<e_sqrtf.obj>"

    Could you save off the complete build output to a file and attach it here? And if you still have the 6.1.2 installation, seeing that build output will also be helpful for comparison.

  • Thank you, Stephen. I have been doing Clean's (It's great advice -- I also do this when things don't work as expected!!). I rechecked the settings. If I remove the rts2800_fpu32_fast_supplement.lib from 6.1.3 everything compiles but it runs SIGNIFICANTLY slower (about a 30% hit in speed -- AARRGHH). I went back to 6.1.2 and compiled with and without rts2800_fpu32_fast_supplement.lib and I see the exact same results (a 30% speed hit). I just can't seem to get 6.1.3 to use the rts2800_fpu32_fast_supplement.lib without link errors. I think it is a bug in 6.1.3.
  • Neil,

    I added a simple call to sqrt() into one of the ControlSuite example projects, then ensured that rts2800_fpu32_fast_supplement.lib was passed to the linker prior to rts2800_fpu32.lib and I did not get the "symbol redefined" error, and according to the link .map file the sqrt function from rts2800_fpu32_fast_supplement.lib was correctly used. I tested with CCS 6.1.3.

    If you can attach your build log or even zip up and attach your entire project we can try to figure out what is going on.

  • I compared the outputs of the two builds and they seem to be identical. I wonder if it could be corruption in moving over the project from 6.1.2 to 6.1.3. I will try to create a new project file from scratch and see if that works differently. I tried a clean "hello world" style program with the fast runtime library and it worked fine. It must be a detail in my project...
  • Thank you. I noticed that in the build log I am getting the following error for each call of the compiler.

    fcntl(): Bad file descriptor

    I will send the build log for the 6.1.2 and the 6.1.3 build of the same project directly to you. Thank you
  • I just sent you the build logs. Please confirm that you received them. Thank you
  • I received the build logs, thanks! I will review them and then post an update.
  • I have looked at the build logs but nothing jumps out so far. I suspect the "fcntl(): Bad file descriptor" error is relevant, but I'm not sure what it is referring to. I wonder if there might be some sort of file permissions or file corruption issue going on.

    You installed CCS 6.1.3 to a completely new different directory than 6.1.2, correct? Also when you migrated from CCS 6.1.2 to 6.1.3, did you directly open the 6.1.2 workspace when you started up CCS 6.1.3, or did you start up 6.1.3 with a new workspace and import your project into it? If it was the former, could you give the latter a try?
  • Aartig,

    I tried both.  I created a new workspace for 6.1.3.  I checked out the project from a git repository.  I went into properties and chose the new compiler.  When I did this it adds an extra file to the library includes in the linker -- "libc.a" (so now I have IQmath_fpu32.lib, rts2800_fpu32_fast_supplement.lib, rts2800_fpu32.lib, "libc.a", and, libc.a).  I delete the "libc.a" file (although it seems to make no difference if I leave both there). I compile and I get the error #10056. This same project was fine under 6.1.2.

    I also tried to create a new CCS project and copied the code into the project, set all the paths, added all the libraries, set all the configuration values for the compiler, linker, and environment from scratch and I get the same error so I do not think it is related to corruption in the .cproject file. 

    The only thing I can think of is to remove all of our proprietary code and leave just the "shell" of our project that has the same error and send it to you.  Does this make sense?  Thanks

  • I noticed in your build output that you have parallel build enabled (the gmake command is gmake -k -j 7 all), so I enabled parallel build on a simple project on the MacOS and was able to reproduce the "fcntl(): Bad file descriptor" error. If I disabled parallel build that error went away.

    At this point I do not know if that error has anything to do with the linker symbol redefined error ( I can do some more testing tomorrow), but could you try disabling parallel build in your project and rebuild, and let us know the result? If that still generates the linker error then yes I think we may need a cut-down version of your project that reproduces the issue.

  • yes, You found one bug -- when I remove the parallel build, the fcntl() error goes away. I still get the sqrt linking error. I am almost done preparing a simplified version of my code that exhibits the error that I will send to you for further debugging. Regards
  • One additional note: the parallel builds worked on 6.1.2 without the fcntl() error. Did you report this as a bug or do I need to do something?
  • NEIL SINGER said:
    I still get the sqrt linking error. I am almost done preparing a simplified version of my code that exhibits the error that I will send to you for further debugging.

    Thank you very much for providing a test case that reproduces the linker error. I can reproduce it with compiler versions 15.12.x and higher. The earlier versions 6.4.x do not generate the error as you noted. I will file a bug report against the compiler tools and update this thread with the bug tracking number.

    As a workaround, you can set your project to build with the 6.4.x compiler tools. If you still have that version installed with 6.1.2 Beta, then you can simply point to that version (as described in this wiki page) from CCS 6.1.3 and tell CCS to use that for the build. Alternately you can install a 6.4.x compiler version into the CCS 6.1.3 /tools/compiler directory by following the procedure here.

    For the fcntl() error, that appears to be MacOS speciific. I will be filing a bug report for that as well.

    Thank you for your patience while we work through resolving these issues.

  • I submitted the following bug reports:
     
    - Bad file descriptor message on MacOS - CCSIDE-2878
    - Linker symbol redefined error - SDSCM00052890

  • Aartig,

    I just downloaded the latest version of CCS 6.1.3 for mac and this bug (- Linker symbol redefined error - SDSCM00052890) still seems to be in there.  Is there any chance of getting it fixed soon?  Its a show stopper for my application.

    Regards

  • Here is the workaround for this problem.

    In your CCS project properties, go to "CCS Build" -> "C2000 Linker" -> "Advanced Options" -> "Symbol Management" and enter in the box entitled "Specify a symbol map, mapping refname to defname (--symbol_map)":  _sqrtf=_sqrt

    This will make all references to sqrtf redirect to the definition of sqrt you are using (the one in the FPUfastRTS library).

    There will most likely be no compiler resolution to this issue as the fix will need to come from updates to the FPUfastRTS library.

    Anna