ID |
Summary |
State |
Reported In Release |
Target Release |
Workaround |
Release Notes |
CODEGEN-1444 |
The PRU 2.1.x compiler is TSPA, but includes a LICENSE.txt file with the old non-TSPA license. |
Fixed |
PRU_2.1.2, PRU_2.1.0, PRU_2.1.1 |
PRU_2.1.3 |
The PRU 2.1.x compiler stream is TSPA. The file PRU_Code_Generation_Tools_2.1.x_manifest.html contains the TSPA license information. The LICENSE.txt file contains the old license used by other compiler products and does not apply to the PRU 2.1.x compiler tools. The LICENSE.txt file should be ignored. |
The PRU 2.1.x compiler stream is TSPA. The file PRU_Code_Generation_Tools_2.1.x_manifest.html contains the TSPA license information. The LICENSE.txt file contains the old license used by other compiler products and does not apply to the PRU 2.1.x compiler tools. The LICENSE.txt file should be ignored. |
CODEGEN-1333 |
Structure assignment causes compiler to fail with INTERNAL ERROR: Decomposition error |
Fixed |
PRU_2.1.2 |
PRU_2.1.3 |
Replace struct assignments involving packed structures with a memcpy() call to copy the contents of the RHS of the struct assign to the LHS. |
|
SDSCM00052833 |
Linker INTERNAL ERROR with object files with DWARF information compiled by IAR compiler |
Fixed |
PRU_2.1.0 |
PRU_2.1.3 |
Add option --compress_dwarf=off |
|
SDSCM00052723 |
Compiler seg faults with use of --opt_level=4 |
Fixed |
PRU_2.1.0 |
PRU_2.1.3 |
Use optimization level 3 or below. |
|
SDSCM00052699 |
Compiler discards write to a volatile local struct member |
Fixed |
PRU_2.1.0 |
PRU_2.1.3 |
No workaround. |
|
SDSCM00052529 |
Optimizer assumes enum variable can only have value of enumeration constants |
Fixed |
PRU_2.1.0 |
PRU_2.1.3 |
Don't make enumerated types with constants only for 0 and 1 if other values may be used. Either add a third value, or use values different than 0 and 1, or avoid using values that aren't the enumeration constants. |
|
SDSCM00052468 |
Inline assembly may cause codegen to segmentation fault |
Fixed |
PRU_2.1.0 |
PRU_2.1.3 |
None. |
|
SDSCM00052397 |
Optimizer crashes on unreachable integer divide-by-zero |
Fixed |
PRU_2.1.0 |
PRU_2.1.2 |
None. |
|
SDSCM00052375 |
In some instances, compiler computes 64-bit add incorrectly |
Fixed |
PRU_2.1.0 |
PRU_2.1.2 |
If more than 32 bits of precision are needed, there is no workaround. Otherwise, using 32 bit integers will avoid this issue. |
|
SDSCM00052339 |
demangler --output option does not work at all |
Fixed |
PRU_2.1.0 |
PRU_2.1.2 |
armdem file.asm > file.dis |
|
SDSCM00052301 |
Linker crashes when --ecc:ecc_error is used |
Fixed |
PRU_2.1.0 |
PRU_2.1.2 |
None. |
|
SDSCM00052281 |
ARM Parser Segfaults on OSX at Template Class |
Fixed |
PRU_2.1.0 |
PRU_2.1.2 |
None. |
|
SDSCM00052265 |
Flexible array with initializer not handle correctly |
Fixed |
PRU_2.1.0 |
PRU_2.1.2 |
None. |
|
SDSCM00052257 |
Use of --opt_level=4 causes link to fail with message symbol "name" redeclared with incompatible type |
Fixed |
PRU_2.1.0 |
PRU_2.1.2 |
Change all anonymous members of the types involved to have an explicit name. |
|
SDSCM00052238 |
Strong function symbol removed from linked ICODE with -o4 |
Fixed |
PRU_2.1.0 |
PRU_2.1.2 |
Use --opt_level=3 or below. |
|
SDSCM00052212 |
PRU does not issue a NOP between writing the source registers of the MAC unit and reading the result |
Fixed |
PRU_2.1.0 |
PRU_2.1.2 |
The workaround is to use the --silicon_version=2 option. This option will prevent the compiler from using the hardware loop instruction. |
|
SDSCM00052144 |
RTS libraries do not get automatically built if the library is missing (Mac OS X) |
Fixed |
PRU_2.1.0 |
PRU_2.1.2 |
Copy the libraries from a Windows/Linux machine. |
|
SDSCM00052114 |
Windows Stack Size for Parser Should be Raised |
Fixed |
PRU_2.1.0 |
PRU_2.1.2 |
There are at least two options:
1. On Windows, if you have Visual Studio available, the stack for an executable may be raised with editbin. For example, to raise the stack to 8MB for the acpia6x parser, you would use:
editbin /stack:8388608 acpia6x.exe
2. Use the linux toolchain. The default stack is much higher. Even if that limit is reached, the soft limit for the stack size of user applications may be raised with ulimit. For example, to raise the stack to 16MB, you would use:
ulimit -S -s 16384
(This could be placed in the startup script, such as .bashrc) |
|
SDSCM00052014 |
Cannot read files with inode > 4B |
Fixed |
PRU_2.1.0 |
PRU_2.1.2 |
None. |
|
SDSCM00051809 |
"if (P) X=A; else X=B;" may compile incorrectly when A and B are 0/1 and P is 0/1 with a side effect |
Fixed |
PRU_2.1.0 |
PRU_2.1.2 |
Typically such an IF is equivalent to "X=P" or "X=!P"; write it that way
to avoid the problem. Adding statements to either arm of the IF can also
help. |
|
SDSCM00051762 |
Dot expression adding align(64) computes hugely incorrect size |
Fixed |
PRU_2.1.0 |
PRU_2.1.2 |
None. |
|
SDSCM00051740 |
AP modified before V4 saved, potentially corrupting the stack pointer |
Fixed |
PRU_2.1.0 |
PRU_2.1.2 |
None. |
|
SDSCM00051708 |
Loop downcounter may be mistakenly typed too small |
Fixed |
PRU_2.1.0 |
PRU_2.1.2 |
Lower the level of optimization. |
|
SDSCM00051668 |
Using -o4 with cout or cin will cause an incompatible types error |
Fixed |
PRU_2.1.0 |
PRU_2.1.2 |
Don't use link time optimization with iostream. |
|
SDSCM00051629 |
Compiler seg faults in C++ copy constructor call |
Fixed |
PRU_2.1.0 |
PRU_2.1.1 |
In some cases, using a different ABI option may avoid this error.
However, the most safe option is to avoid the use of a copy constructor. |
|
SDSCM00051621 |
Redeclaring extern "C" function as static causes parser to hang |
Fixed |
PRU_2.1.0 |
PRU_2.1.1 |
Use consistent function declarations. |
|
SDSCM00051602 |
Parser may seg fault on template arguments with ! operator |
Fixed |
PRU_2.1.0 |
PRU_2.1.2 |
Using the --strict_ansi option will avoid this behavior. If this is not
possible, changing template arguments of the form !foo to 0==foo will
also avoid this behavior. |
|
SDSCM00051555 |
The instruction LDI R3, ((0x4<<8) | (0x2<<1)) |
Fixed |
PRU_2.1.0 |
PRU_2.1.1 |
Removing the parenthesis around the shift operations allows the instruction to assemble.
LDI R3, (0x4<<8 | 0x2<<1) |
|
SDSCM00051472 |
Conditionals that use shift operator may be optimized out |
Fixed |
PRU_2.1.0 |
PRU_2.1.1 |
This behavior may be avoided by lowering the optimization level to -o1 or
-o0. Moving the conditional check result to a variable so that the shift
is not in the conditional may in some cases also avoid this behavior. |
|
SDSCM00051464 |
If a host image file is the first object file on the command line, the linker will issue an ABI incompatibility error |
Fixed |
PRU_2.1.0 |
PRU_2.1.1 |
Reorder the inputs to armcl so that a host image file is not the first
input. |
|
SDSCM00051312 |
Linker mistakenly issues output section warning diagnostic for sections pre-bound to hard coded addresses |
Fixed |
PRU_2.1.0 |
PRU_2.1.1 |
Ignore the warning |
|
SDSCM00051261 |
The exception handling (_eh) version of runtime library is not automatically built when --exceptions option is enabled |
Fixed |
PRU_2.1.0 |
PRU_2.1.1 |
You can build the library manually. In a command terminal, browse to the lib dir of the code gen folder (ex. C:\ti\ccsv6\tools\compiler\c2000_6.2.7\lib) and run the following command:
> set PATH=%PATH%;C:\ti\ccsv6\tools\compiler\c2000_6.2.7\bin
> mklib --pattern=rts2800_eh.lib --index=libc.a --install_to=C:/ti/ccsv6/tools/compiler/c2000_6.2.7/lib
Update the paths to the CGT folder to match your install.
Change the library name that is passed to the --patter option to build
the other libraries for floating point (rts2800_fpu32_eh.lib) or large memory model (rts2800_ml_eh.lib). |
|
SDSCM00051241 |
Output section splitting creates a zero-length section |
Fixed |
PRU_2.1.0 |
PRU_2.1.1 |
1) Do not split the section in question. 2) Change the zero-length
section so that it has at least one more byte. |
|
SDSCM00051212 |
MSP 4.4.0 changes to _lock.h declaration of _nop(void) instead of _nop() breaking driverlib |
Fixed |
PRU_2.1.0 |
PRU_2.1.1 |
Update _lock.h in the rts source folder, rename the library you are using, and it will automatically be rebuilt during next compile.
To find compiler install location, click on project properties and click on:
Resource->Linked Resources
The "Path Variable" will have an entry for:
CG_TOOL_ROOT c:\install_location\ccsv6\tools\compiler\msp430_4.3.4
Within above folder look for:
.\lib\src\_lock.h
.\include\_lock.h
Edit both of above files and change below line 47:
_CODE_ACCESS void _nop(void);
to remove void argument and instead be:
_CODE_ACCESS void _nop();
Rename the library you are using with suffix .old:
.\lib\rtsx_lc_sd_eabi.lib
change to a temp name
.\lib\rtsx_lc_sd_eabi.lib.old
Rebuild your project and the rts should automatically rebuild.
|
|
SDSCM00051128 |
Alias missed on address of local passed as function argument |
Fixed |
PRU_2.1.0 |
PRU_2.1.1 |
Use the -ma (--aliased_variables) option. |
|
SDSCM00051097 |
Output section splitting creates a zero-length section |
Fixed |
PRU_2.1.0 |
PRU_2.1.1 |
1) Do not split the section in question. 2) Change the zero-length
section so that it has at least one more byte. |
|
SDSCM00051004 |
Compiler emits a reference to a symbol without declaring it in assembly. |
Fixed |
PRU_2.1.0 |
PRU_2.1.1 |
None. |
|
SDSCM00050992 |
The optimizer should not make a symbol an alias if it has either the location or code_section pragmas applied. |
Fixed |
PRU_2.1.0 |
PRU_2.1.1 |
Available workarounds are to:
1. Reduce the optimization level to -o2.
2. If using a COFF abi, you can move the functions into separate files.
3. Add an __asm("NOP") to the function which will prevent an alias from being created. |
|
SDSCM00050959 |
SIGSSEGV when using % in an option argument |
Fixed |
PRU_2.1.0 |
PRU_2.1.1 |
Don't use any printf-special characters like % in a compiler argument |
|
SDSCM00050834 |
Assembler doesn't generate relocation entry for weak symbol |
Fixed |
PRU_2.1.0 |
PRU_2.1.2 |
Use --gen_func_subsections. |
|
SDSCM00050764 |
Bound function has incorrect address in DWARF debug info |
Fixed |
PRU_2.1.0 |
PRU_2.1.1 |
Set a breakpoint at the bound function and run to it, rather than
attempting to step into it. |
|
SDSCM00050005 |
Compiler mistakenly issues MISRA diagnostic 12.9 for a float point type |
Fixed |
PRU_2.1.0 |
PRU_2.1.3 |
|
|