ID |
Summary |
State |
Reported In Release |
Target Release |
Workaround |
Release Notes |
CODEGEN-3876 |
Code incorrectly removed from functions calling "naked" attribute functions |
Fixed |
PRU_2.2.0 |
PRU_2.2.1 |
|
The compiler supports the GCC attribute "naked," which means that a function shall not have prolog or epilog code. The idea is that this makes a blank function that the user may fill with assembly code.
The compiler also keeps track of the register usage behavior of previous functions in the same module, so that it can do some small optimizations like allocate caller-saved registers or eliminate unused code.
In this case, the compiler mistakenly assumed that a naked function did not use its input. The truth is that naked functions are essentially hand-coded assembly functions; while the compiler can assume they obey the C calling convention, the compiler can't know register behavior because it cannot parse the assembly instructions. |
CODEGEN-3858 |
OFD gets DIE attribute offset wrong when using --dwarf_display=none,dinfo |
Fixed |
PRU_2.2.0 |
PRU_2.2.1 |
If you use --dwarf_display=none,dinfo, use --dwarf_display=none,dinfo,types instead |
You can use OFD to display the DWARF debugging information in your object files by using the option '--dwarf' (or -g). You can narrow the categories of DWARF information displayed by using the '--dwarf_display' option. If you use the option --dwarf_display=none,dinfo you will see the DWARF DIE objects in the .dwarf_info section, but you will not see any DW_AT_type attributes unless you also use the "types" flag. This is not a bug. However, when OFD skips a DW_AT_type attribute, it displays the offset of the skipped DW_AT_type for the next attribute instead of the next attribute's correct offset. |
CODEGEN-3619 |
pragma triggers false MISRA-C:2004 19.1/A warning |
Fixed |
PRU_2.2.0 |
PRU_2.2.1 |
N/A |
Certain pragmas appearing prior to #include statements, such as #pragma RESET_MISRA, would cause MISRA warning 19.1/A to be issued:
MISRA-C:2004 19.1/A: #include statements in a file should only be preceded by other preprocessor directives or comments |
CODEGEN-2373 |
Internal linker error triggered by function alias |
Fixed |
PRU_2.2.0 |
PRU_2.2.1 |
|
Linker sometimes generates "Assertion failed" message and aborts. |
CODEGEN-2286 |
palign(8) of .init_array messes up __TI_INITARRAY_Limit address |
Fixed |
PRU_2.2.0 |
PRU_2.2.0 |
In the linker command file, replace
.init_array > FLASH, palign(8), fill = 0xffffffff
with the following GROUP statement:
GROUP
{
.init_array
} > FLASH, palign(8)
The palign(8) on GROUP will ensure that any required padding is added after .init_array. However, both the size of .init_array and the value of __TI_INITARRAY_Limit remain unchanged. |
Applying palign(8) to .init_array caused __TI_INIT_ARRAY_Limit to be set to the end of .init_array including the padding. This broke RTS startup code responsible for calling constructors because the table of constructors now includes invalid data. This bug has been fixed and __TI_INIT_ARRAY_Limit is no longer affected by padding. |
CODEGEN-2210 |
PRU assembler rejects valid LBBO instruction |
Fixed |
PRU_2.2.0 |
PRU_2.2.0 |
Use formats of LBBO and SBBO instructions that specify immediate values in the 3rd or 4th operands. |
The PRU assembler rejected valid LBBO and SBBO instructions that specified registers for the 3rd and 4th operands, for example, LBBO &r3, r1, r2.w0, b0
The PRU assembler is now updated to accept this format for LBBO and SBBO instructions. |
CODEGEN-2119 |
Stack usage assistant call graph misses callee relationship for some direct calls |
Fixed |
PRU_2.2.0 |
PRU_2.2.0 |
|
The Object File Display utility failed to detect function callees when generating call graph information for functions that contain nested blocks. |
CODEGEN-2113 |
Hex utility mishandles space in directory name of output file |
Fixed |
PRU_2.2.0 |
PRU_2.2.0 |
Use directory names without spaces for output files. |
The hex utility did not correctly handle spaces in output directory and file names. |
CODEGEN-1976 |
Value of __cplusplus is wrong |
Fixed |
|
PRU_2.2.0 |
If possible, use the -ps or --strict_ansi options. This mode will use the strict definition of __cplusplus, which is 199711L. |
Our parser mimicked G++ behavior for the value of this macro in relaxed ANSI mode. This reproduced a bug in G++ versions v.4.7 and v.4.3 that has since been fixed. |
CODEGEN-1941 |
PRU disasm lib crashes CCSv6.2.0 for Linux |
Fixed |
PRU_2.2.0 |
PRU_2.2.0 |
wrong workaround |
When using Ubuntu 16.04 and attempting to connect to a PRU core, CCS either freezes or collapses without a trace.
This was tested with both CCSv6.1.3 and CCSv6.2.0 on Ubuntu 16.04 64 bits and using XDS100v2 and XDS200 on AM335x devices. |
CODEGEN-1517 |
#pragma FUNCTION_OPTIONS meaningless unless at least -o0 is used |
Fixed |
|
PRU_2.2.0 |
|
|
CODEGEN-1333 |
Structure assignment causes compiler to fail with INTERNAL ERROR: Decomposition error |
Fixed |
PRU_2.2.0 |
PRU_2.2.0 |
Replace struct assignments involving packed structures with a memcpy() call to copy the contents of the RHS of the struct assign to the LHS. |
|
SDSCM00052339 |
demangler --output option does not work at all |
Fixed |
PRU_2.2.0 |
PRU_2.2.0 |
armdem file.asm > file.dis |
|
SDSCM00052301 |
Linker crashes when --ecc:ecc_error is used |
Fixed |
PRU_2.2.0 |
PRU_2.2.0 |
None. |
|
SDSCM00052265 |
Flexible array with initializer not handle correctly |
Fixed |
PRU_2.2.0 |
PRU_2.2.0 |
None. |
|
SDSCM00052163 |
The PRU Compiler Guide states that we do not provide floating point emulation routines for PRU. This is wrong. |
Fixed |
|
PRU_2.2.0 |
|
|