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.

Compiler/TMS320C6713B: assembler error [E0300] Cannot equate an external symbol to an external symbol

Part Number: TMS320C6713B

Tool/software: TI C/C++ Compiler

Hi

I see a strange behaviour of the compiler when I compile my code on our build server.

The error message I get is this 

While compiling ..\GSI_App\Vmpg_if\TurbineIF\TurbineIF.c ->build\release_cc_tms6x\_pooma\LSI_fdsp\TurbineIF.obj
command:'mkdir "build\release_cc_tms6x\_pooma\LSI_fdsp"2>NUL & C:\ti\ccsv6\tools\compiler\C6000_7.4.12\bin\cl6x -k -al -pr -pden -mv6710 --gen_func_subsections=on -pm -pdsr232 -pdsr383 -pdsr1 -pden -O3 --symdebug:skeletal -i"C:\ti/ccsv6/tools/compiler/c6000_7.4.12/include" -i"C:\ti/bios_5_42_02_10/packages/ti/bios/include" -i"C:\ti/C6xCSL/include" -i"C:\ti/xdctools_3_22_04_46/packages" -i..\GSI_App\Appl -iAppl\ApplConfig -i..\GSI_App\Appl\ApplConfig -iCtrllLib -i..\..\SignalBlockManager\sbm_runtime\include -i..\GSI_App -i.. -i..\GSI_App\Appl\Common -i..\GSI_App\MSC\MSC_CTRL -i..\GSI_App\CPL\PlatformSupport -i..\GSI_App\CPL\PlatformSupport\PlatformIO -i..\GSI_App\CPL\driver -i..\GSI_App\CPL -i..\GSI_App\Appl\dspbios -i..\GSI_App\CPL\PlatformSupport\Flexpower -i..\GSI_App\CPL\PlatformSupport\Flexpower\DriverConfig -i..\..\Conv_Framework\if -i..\..\Conv_Framework\if\dspbios -i..\..\Conv_Framework -i..\..\Conv_Framework\driver -i..\..\Conv_Framework\dspbios\CT_460 -i..\..\Conv_Framework\IO_Common -i..\..\Conv_Framework\IO_FLEX -i..\..\Conv_Framework\Services -i..\..\Conv_Framework\Services\ParamManager -i..\..\Conv_Framework\OldLibs\CFC -d_DSPBIOS -dCHIP_6713 -d_HS_SECTIONS -d_CT_460 -d_SM_DEBUG -dDATASPACE_SERVER -dGDS_REPLICATION_ENABLED -dBENCH_MANUAL_CONTROLS -fsbuild\release_cc_tms6x\_pooma\LSI_fdsp -frbuild\release_cc_tms6x\_pooma\LSI_fdsp ..\GSI_App\Vmpg_if\TurbineIF\TurbineIF.c'
output:'
<Optimizing> (Local CPU 7)
<Generating>
<Assembling>
"build\release_cc_tms6x\_pooma\LSI_fdsp\TurbineIF.asm", ERROR!   at line 39:
[E0300]
Cannot equate an external symbol to an external symbol
_TurbineIF_Handle	.set _TurbineIF_EventHandler

"build\release_cc_tms6x\_pooma\LSI_fdsp\TurbineIF.asm", ERROR!   at EOF:
[E0300]
The following symbols are undefined:
2 Assembly Errors, No Assembly Warnings
_TurbineIF_EventHandler

Errors in Source - Assembler Aborted

>> Compilation failure

Then If I just recompile without changing anything, the compilation does not fail.

The assembler file TurbineIf.asm is the same whether it fails or not

and the part where it reports an error looks like this

;******************************************************************************
;* TMS320C6x C/C++ Codegen                                         PC v7.4.12 *
;* Date/Time created: Tue Feb 13 13:26:22 2018                                *
;******************************************************************************
	.compiler_opts --abi=coffabi --c64p_l1d_workaround=default --endian=little --hll_source=on --long_precision_bits=40 --mem_model:code=near --mem_model:const=data --mem_model:data=far_aggregates --object_format=coff --silicon_version=6710 --symdebug:skeletal 

;******************************************************************************
;* GLOBAL FILE PARAMETERS                                                     *
;*                                                                            *
;*   Architecture      : TMS320C671x                                          *
;*   Optimization      : Enabled at level 3                                   *
;*   Optimizing for    : Speed                                                *
;*                       Based on options: -o3, no -ms                        *
;*   Endian            : Little                                               *
;*   Interrupt Thrshld : Disabled                                             *
;*   Data Access Model : Far Aggregate Data                                   *
;*   Pipelining        : Enabled                                              *
;*   Speculate Loads   : Enabled with threshold = 0                           *
;*   Memory Aliases    : Presume are aliases (pessimistic)                    *
;*   Debug Info        : DWARF Debug for Program Analysis w/Optimization      *
;*                                                                            *
;******************************************************************************

	.asg	A15, FP
	.asg	B14, DP
	.asg	B15, SP
	.global	$bss


$C$DW$CU	.dwtag  DW_TAG_compile_unit
	.dwattr $C$DW$CU, DW_AT_producer("TMS320C6x C/C++ Codegen PC v7.4.12 Copyright (c) 1996-2014 Texas Instruments Incorporated")
	.dwattr $C$DW$CU, DW_AT_TI_version(0x01)
	.dwattr $C$DW$CU, DW_AT_comp_dir("D:\B\CON-CFLEXIB-JOB1\converter\FlexInvert_Appl\FLEXInvert_Appl")

;*****************************************************************************
;* FUNCTION SYNONYMS                                                         *
;*****************************************************************************
	.global	_TurbineIF_Handle
_TurbineIF_Handle	.set _TurbineIF_EventHandler
	.global	_TurbineIF_Handle_Scan
_TurbineIF_Handle_Scan	.set _TurbineIF_Scan$0
;*****************************************************************************
;* CINIT RECORDS                                                             *
;*****************************************************************************
	.sect	".cinit"
	.align	8
	.field  	4,32
	.field  	_TurbineIF_evtHandle+0,32
	.bits	0,32			; _TurbineIF_evtHandle @ 0

	.sect	".cinit"
	.align	8
	.field  	4,32
	.field  	_eTaskState$0+0,32
	.bits	1,32			; _eTaskState$0 @ 0

More info:

We compile from command line, and we use compiler version C6000_7.4.12.

It seems that the error only happens on our build server, and not if we build on our own PC, even though the installation on the build servers is identical to the one on our PC's. 

We use Incredibuild to speed up the compilation - both on build server and from our own PC.

Any ideas on what causes this error and how to avoid it?

Best

Jens

  • I have two suggestions for you to consider.  Because I cannot reproduce the problem, I cannot guarantee these suggestions will fix your problem.  But I think your chances are very good.

    Suggestion one ...  Remove the build option -pm.  This has no effect when you build one file at a time.  To be honest, I doubt this has anything to do with your problem.  That said, I've seen stranger things.

    Suggestion two ... Upgrade to compiler version 7.4.23.  You currently use 7.4.12.  The only difference between 7.4.x releases is bug fixes. The higher the last digit, the more bugs have been fixed.  Version 7.4.23 is the most recent of the 7.4.x releases.  The bug fix most likely to help is CODEGEN-2098.   Here is the summary on that bug ...

    In some cases with a large number of compilations in parallel on Windows, the compiler could create temporary files with colliding names, resulting in strange compilation failures.

    I'm pretty sure this ...

    Jens Biltoft said:
    It seems that the error only happens on our build server, and not if we build on our own PC, even though the installation on the build servers is identical to the one on our PC's. 

    ... is caused by CODEGEN-2098.

    Thanks and regards,

    -George

  • Hi George

    I have tried compiling my code with the new compiler 7.4.23 on my local machine, and I noticed that the usage of internal memory increases significantly.

    It should be noted that in order to reduce the CPU load we place the code that needs to run most in internal ram.

    On one of my application the memory usage is increased by 1440 bytes  

    Do ou know if that is a known "feature" in the new compiler? Or do I need to set some other compiler options?

    I have not had the time to check if the original problem has been solved, but I will talk to the guys managing the build servers to make them install 7.4.23.

    Best

    Jens

     

  • Jens Biltoft said:
    On one of my application the memory usage is increased by 1440 bytes  

    I presume this is due to increase in code size, and not data size.  Please use the technique described in the article Find Source of Code Size Increase.  That will show you which functions increased in size the most.  By focusing on those, you may be able to work out the problem yourself.  If not, you should be able to develop a small test case you can post here.

    Thanks and regards,

    -George