TASKING VX-toolset for TriCore v6.3r1 patch 8
Release Note
Scope
This release note covers the changes between v6.3r1 and v6.3r1 patch 8 of the TASKING VX-toolset for TriCore.
For release notes prior to v6.3r1, please visit the TASKING
TriCore support website.
Contents
Changed components
This patch contains changes to the following components:
- ARM (HSM) C compiler
- ARM (HSM) C++ compiler
- TriCore C++ compiler with support for packed structures
- TriCore C compiler
- TriCore assembler
- TriCore linker
- TriCore control program
- TriCore high level language object dumper
- TriCore ELF dump utility
- TriCore hardware debug module to support DAS version 7.2.0 and above
- TriCore debugger symbol reader
- TriCore control program specification file (ctc/etc/cctc.spec)
- TriCore Processor families specification file (ctc/etc/processors.xml)
- TriCore library source files (ctc\lib\src):
_Exit.asm, _Exit.asm, _fpclassify.c, _fpclassify.c, _fpclassifyf.c, _fpclassifyf.c, _fpclassifyl.c, _fpclassifyl.c,
_strtod.c, _strtod.c, copysign.c, cpsignf.c, cstart.c, fenv.c, fesetexceptflag.c, isinf.c, isinff.c, isnan.c, isnanf.c, llrint.c, llrintf.c, llrintl.c,
longjmp.asm, longjmp.asm, lrint.c, lrintf.c, lrintl.c, rint.c,rintf.c, rintl.c, setjmp.asm, setjmp.asm, sqrt.c, sqrtf.c, strcmp.asm, strcmp.asm,
strcpy.asm, strcpy.asm, strtod.c, strtof.c, sync_on_halt.c
- Floating-Point run-time library (ctc\lib\src.fp) see also New Floating-Point run-time library
- Files (like LSL, SFR and startup files) to support the TC32x, TC33x, TC3Ex and TC37xEXT derivatives including files for Simulator support
- Updated LSL files for derivatives TC35x, TC36x and TC37x
- Files to provide debugger support for the TC387, TC3Ex and TC37xEXT on a TC3x7 TriBoard
- Files to provide debugger support for the TC36x on a TC366 TriBoard
- Files to provide debugger support for the TC33x on a TC33x and TC3x7 TriBoard and on a ADAS TC337 TriBoard
- Files to provide debugger support for the TC32x on a TC332 TriBoard
Please note that the TriCore and ARM libraries (HSM) have been rebuilt. These libraries are also part of this patch.
Non EABI compliant bitfield offset used in a struct
To address issues TCVX-44802 "Non EABI compliant bitfield offset used in a struct" and TCVX-44962 "Struct alignments for bit-fields
not always EABI compliant", two new --eabi sub options "d" and "i" have been introduced that can be disabled for EABI compliance:
d/D +/-short-bitfield access short bit-field as a short
i/I +/-int-bitfield use word alignment for int bit-field
When these flags are enabled, the behavior is as before. When disabled, the bitfield behavior is EABI-compliant.
Enhanced solution for TCVX-44777 "Linker error ltc F004: cannot open (Too many open files) due to default limits"
The fix for issue TCVX-44777 (already part of patch 6) has been enhanced:. The linker does now only keep input files open that are actively processed.
The floating-point run-time library has been replaced with a new one which fixes several floating-point problem issues. It has now
also support for exception FE_INEXACT
. When using 32-bit floats the FP run-time library is only used when compiling with option
--fp-model=t
"support trapping on exceptions" or option --fp-model=s
"use software floating-point library".
When using 64-bit doubles the FP run-time library is always used, except when compiling with options --fp-model=fST
(f
enables "treat 'double' as 'float'").
Please be aware code size and speed may change for applications using this new FP-library.
Changed license manager component
For the executables with changed build numbers in this patch, the Altium
license manager component (libmcrypt) has been replaced by the newly
implemented TASKING license manager component (AES library by Dr Brian
Gladman).
Added Open Source Software license files
The following Open Source Software license files have been added to the <install>\doc\oss\ directory:
- aes_gladman_license.txt
- arc4random_license.txt
- bcopy_license.txt
- getopt_license.txt
- libcxx_license.txt
- stlport_license.txt
For this patch, the following executable files have an updated build number: Build 23112758
- carm\bin\carm.exe
- carm\bin\cparm.exe
- ctc\bin\astc.exe
- ctc\bin\cctc.exe
- ctc\bin\cptc.exe
- ctc\bin\ctc.exe
- ctc\bin\elfdump.exe
- ctc\bin\hldumptc.exe
- ctc\bin\ltc.exe
All other executable files still have the original v6.3r1 build number: Build 19041558
Fixed Problems
- TCVX-43989
- Compiler error S900: internal consistency check failed for specific use case and optimization setup
- TCVX-44252
- C compiler error S917: internal consistency check failed - please report
- TCVX-44358
- C compiler: ctc S917: internal consistency check failed - please report
- TCVX-44417
- Compiler generates wrong code for loops with 64-bit iterators
- TCVX-44515
- Compiler error ctc S911 with MISRA rule 10.3
- TCVX-44700
- Loading specific ELF file in the debugger takes a long time to complete
- TCVX-44758
- FP operations involving INF or NAN inputs may produce wrong results with --fp-model=sT
- TCVX-44769
- Conversion double-to-float may produce 0 instead of FLT_MIN
- TCVX-44770
- Multiplication of doubles may produce 0 instead of DBL_MIN
- TCVX-44782
- S911 error when any MISRA C 2012 rule check for rules 10.x is enabled
- TCVX-44839
- DSP-C: Constant folding involving fixed-point types may produce incorrect results
- TCVX-44841
- C compiler: ctc S900: internal consistency check failed - please report
- TCVX-44878
- Evaluation of floating expressions involving NaN may produce wrong results
- TCVX-44891
- FP multiplication of floats may produce 0 instead of FLT_MIN with --fp-model=s
- TCVX-44933
- C compiler error S900 internal consistency check failed - please report
- TCVX-44954
- C compiler error S900 internal consistency check failed
- TCVX-44962
- Struct alignments for bit-fields not always EABI compliant
- TCVX-44998
- Initialization of complex type global variable leads to S911 error
- TCVX-45028
- C compiler ignores cast in a specific use case for a function return value
- TCVX-45048
- Generate debug information for used symbols only
- TCVX-45069
- Flow optimization causes missing read operation
- TCVX-45075
- Non-trapping 64-bit floating-point emulation does not handle exceptional results correctly
- TCVX-45080
- Invalid strength reduction for subscript with unsigned wraparound
- TCVX-45091
- Wrong bit-field alignment for a short type member of a struct
- TCVX-45097
- C compiler generates incorrect array index values
- TCVX-45100
- MISRA global rules are not checked when only one module is supplied
- TCVX-45101
- An atomic_flag type variable (stdatomic.h) ends up in cached memory
- TCVX-45104
- Loop invariant code optimization issue
- TCVX-45105
- Wrong iterator values after jumping into loop
- TCVX-45112
- Memory access out of bounds due to a missing conversion of the loop increment
- TCVX-45113
- Signed instead of unsigned division/modulo
- TCVX-45115
- Erroneous code in a specific switch case
- TCVX-45118
- Forward store optimization for weak variable causes NULL pointer dereference
- TCVX-45129
- FP comparisons do not raise FE_INVALID when two qNaNs are compared and --fp-model=St
- TCVX-45131
- Linker LSL file for TC36x includes wrong memory size for pflash0/pflash1
- TCVX-45141
- Erroneous code for XOR assignment in a nested loop
Fixed Problems
- TCVX-43921
- Setting breakpoint during debug session - single stepping does not execute next steps
- TCVX-44267
- Linker: option --whole-archive ignores object modules without exported symbols
- TCVX-44584
- Missing or unoptimized SFR register configuration for some AURIX 2G TriBoards
- TCVX-44761
- Camera Interface register definitions erroneous in regtc37x_ext.sfr SFR file
- TCVX-44781
- GTM_CLC init value should be 0x0 for TC32x, TC33x, TC36x, TC37x, TC37x_ext
- TCVX-44793
- C compiler: missing truncation for cast that is converted to _Bool
- TCVX-44840
- C compiler: Incorrect CSE of VLA size expression
- TCVX-44843
- C compiler: unexpected "Assertion failed" when using _Alignas for an object with block scope
- TCVX-44903
- Compiler overwrites a complete byte in a bitstruct whereas only two bits are modified
- TCVX-44910
- Programming pflash2/3 memory on TC29x TriBoard not working
- TCVX-44913
- Erroneous code generated for C++ code using __disable_and_save and __restore intrinsics
- TCVX-44955
- C compiler error S900 internal consistency check failed
- TCVX-44973
- Unexpected high link time when using recursive functions
- TCVX-44980
- TC36x DFLASH0 size is incorrect in tc36x.lsl
- TCVX-44987
- Hardware debugging support for TC32x devices
Fixed Problems
- TCVX-43123
- Assembler astc --core=tc1.6.2 silently processed deprecated instruction mulms.h
- TCVX-43405
- Multi-core example blink_aurix does not stop at main()
- TCVX-43876
- TASKING MCS EABI document missing from product
- TCVX-44062
- DAS driver check fails with DAS version 7.1.8 and newer
- TCVX-44426
- FPU version of C library is not selected with control program option --fp-model=St
- TCVX-44461
- No error on narrowing conversion from char to bool
- TCVX-44484
- C library function strtof might incorrectly return INIFINITY or FLT_MAX for hexadecimal number
- TCVX-44541
- FP library: QNAN used in IEEE 754 arithmetic operations and in IEEE 754 unordered-quiet predicates leads to incorrect raising of FE_INVALID exceptio
- TCVX-44550
- FPU version of C standard library function sqrtf() may produce imprecise result (1 bit difference)
- TCVX-44642
- Common subexpression elimination optimization may violate #pragma STDC FENV_ACCESS ON
- TCVX-44654
- Formatted output issue when precision specifier used with non null-terminated string
- TCVX-44667
- With FLT_HAS_SUBNORM is 0 fpclassify(subnormal) returns FP_SUBNORMAL instead of FP_ZERO
- TCVX-44670
- Type conversions involving _Bool may produce wrong result
- TCVX-44677
- Erroneous code ignoring a break condition in an endless loop
- TCVX-44684
- Erroneous code generated using generic assembly code optimizations
- TCVX-44737
- Compiler generates wrong code
- TCVX-44738
- C compiler: wrong code generation for float-to-int conversion when using #pragma STDC FENV_ACCESS ON: no FE_INVALID is raised
- TCVX-44743
- Control flow simplification optimization may violate #pragma STDC FENV_ACCESS ON
- TCVX-44744
- Constant propagation optimization may violate #pragma STDC FENV_ACCESS ON
- TCVX-44751
- Incorrect optimization of left-shift operator
- TCVX-44753
- Atomic load is removed in some cases
- TCVX-44766
- C compiler treats a function local array with a const size unnecessarily like a VLA
- TCVX-44776
- Function @FLD accepts negative arguments with undefined behavior
- TCVX-44777
- Linker error ltc F004: cannot open <filename> (Too many open files) due to default limits
- TCVX-44792
- Erroneous code generation due to loop fusion optimization
- TCVX-44796
- FPU instructions may corrupt 64-bit integer computations
- TCVX-44802
- Non EABI compliant bitfield offset used in a struct
- TCVX-44808
- C compiler: incorrect integer promotion using expression simplification optimization
- TCVX-44810
- S911 internal consistency check failed error when using a VLA in a function call
- TCVX-44817
- DSP-C: operations on __sfract / __wrap __sfract may produce incorrect results
- TCVX-44836
- Missing zero-extend for indirect store to _Bool automatic variable
- TCVX-44872
- Compiler ignores variable value change after this has been passed by reference in a function call
Fixed Problems in the ARM compiler (HSM)
- TCVX-44491
- HSM: C library function strtof might incorrectly return INIFINITY for hexadecimal number
- TCVX-44588
- Missed "out of bounds" diagnostics
- TCVX-44589
- No error on narrowing conversion from char to bool
Fixed Problems
- TCVX-44441
- Incorrect use of a loop instruction
- TCVX-44443
- Intrinsics __getbyteN and __gethwN may return wrong result
- TCVX-44453
- Incorrect propagation of __pure__ function call result
- TCVX-44485
- Multi-core debugging not compliant to DAS driver version 7.2.0
- TCVX-44510
- Debugger: ELF load and parse hangs - debug session must be aborted
- TCVX-44522
- The __dsync() intrinsic does not always work as a memory fence
- TCVX-44614
- GLIBCXX_3.4.21 not defined in file libstdc++.so.6 error for Linux host
Fixed Problems in the ARM compiler (HSM)
- TCVX-44549
- ARM C compiler: loop optimization causes endless loop
- TCVX-44596
- C compiler: wrong code generation when using packed structures with some members declared as bit fields
- TCVX-44626
- Incorrect conversion of _Complex type to _Bool
Fixed Problems
- TCVX-40928
- AURIX multi-core: hex file does not contain code for cloned functions in ROM
- TCVX-43626
- XBAR0_SRI_BusErrorEvent alarm triggered by non linked fputc function
- TCVX-43754
- HLL dump tool does not include information about a static void function in the symbol table
- TCVX-43880
- Elfdump segmentation fault error when initialized functions included in the ELF file
- TCVX-43881
- Compiler MISRA 2012 rule 9.5 : incorrect flagging of rule violation
- TCVX-43911
- C compiler error S911 when MISRA C:2012 rule 16.3 is enabled and erroneous label added to switch case
- TCVX-43990
- Compiler error ctc s911: backend triggers ctc S911 with --tradeoff=0
- TCVX-44002
- Unexpected MISRA C:2012 rule 12.4 violation error
- TCVX-44022
- Unexpected W549: condition is always true warning
- TCVX-44028
- Wrong error ctc E460 for accesses to bit offset 31 using __imaskldmst intrinsic
- TCVX-44030
- SIMD optimization leads to erroneous assembly instruction
- TCVX-44041
- Assembler error E128 for C++ compiler generated code
- TCVX-44042
- Improve diagnostic for incorrect declarations
- TCVX-44044
- Check on constant expression of _Static_assert() not strict enough
- TCVX-44045
- Qualifiers const and volatile do not work inside _Generic()
- TCVX-44098
- Linker silently truncates ELF e_phnum field
- TCVX-44224
- Wrong result multiplying two INIFINITY values when using software floating-point library
- TCVX-44231
- Wrong sizeof result for atomic_flag type
- TCVX-44237
- Illegal double word access to SFR register range
- TCVX-44245
- C compiler: wrong code generation when using packed structures with members of 16-bit signed types
- TCVX-44246
- C compiler error: S911 : Expression simplification - with empty function parameter
- TCVX-44255
- C compiler: wrong code generation when using packed structures with some members declared as bit fields
- TCVX-44257
- Compiler violates EABI due to 4 byte user stack frame generation
- TCVX-44260
- Linker: ltc - Segmentation fault on LSL output section in overlay group
- TCVX-44278
- C++ compiler: generated code results in address 0x0000000 access causing bus trap
- TCVX-44286
- Directive .size missing for run-time library functions and some C library functions
- TCVX-44309
- MISRA C 2012 rule 10.4 checker reports false positive and fails to detect a violation
- TCVX-44339
- Subnormal values may incorrectly compare equal to zero
- TCVX-44377
- Linking with -lc*_fpu causes fesetround(FE_TONEAREST) to return -1 instead of 0
- TCVX-44383
- For non-trapping floating point comparisons: NaN == NaN incorrectly returns true
- TCVX-44387
- Erroneous code in code compaction function leads to invalid function parameter
- TCVX-44393
- Compiler issues double word accesses for data located in MCS memory
- TCVX-44400
- Wrong value is loaded into a 48-bit struct if used as a member of a larger 64-bit struct
- TCVX-44407
- C compiler front-end may produce imprecise FP result (±1 bit difference)
- TCVX-44419
- Linker does not insert alignment_protection section when copy_unit is greater than 1
- TCVX-44421
- Conversion of float to integer raises "Overflow" instead of "Invalid operation" exception
- TCVX-44423
- libfprt: subnormal values incorrectly compare equal to zero
- TCVX-44428
- Function fesetexceptflag() may incorrectly raise FE_INEXACT and/or call trap handler
- TCVX-44437
- Incorrect code for branch target align optimization when tail merging optimization active
- TCVX-44481
- Linker: option --global-type-checking causes a segmentation fault
Fixed Problems
- TCVX-44087
- Linker ltc: very long link / locate time >= 1 hour
Fixed Problems
- TCVX-40469
- Linker allows cloned sections outside the available DSPR0 memory range
- TCVX-43546
- Linker does not insert alignment_protection sections when a group includes sections with a different alignment
- TCVX-43913
- Compile-time concatenation of character string literal with unicode string literal fails
- TCVX-43980
- Linker may hang when the size of an output section is at least 2 MB
- TCVX-43998
- Invalid constant propagation with tripple indirection
- TCVX-44008
- Include file may be skipped when same filename is included from different directories
- TCVX-44014
- Missing initialization for local variable in a specific test case
- TCVX-44043
- Incorrect conversion of _Complex type to _Bool
- TCVX-44050
- Linker inserts section in an ordered, contiguous, fill group
- TCVX-44082
- Intrinsics __extracthwN and __extractbbyteN may return wrong result
- TCVX-44102
- Loop invariant code optimization issue
- TCVX-44215
- Standard floating-point functions that are inlined may return wrong result
- TCVX-44218
- Large floating-point numbers become zero when converted to _Float16
- TCVX-44270
- C compiler: wrong code generation when using packed structures with some members declared as bit fields of width 17..24
- TCVX-44289
- Zero-sized bit-field does not create padding before subsequent bit-field with --eabi=B
New Device Support
- Toolset support for the TC33x family
Fixed Problems
- TCVX-43868
- Run-time error for double _Complex expression passing to a function
- TCVX-43893
- C compiler omits value assignment to pointer type function argument with forward store optimization enabled
- TCVX-43915
- Unroll small loops optimization leads to wrong code when speed tradeoff -t0 used
- TCVX-43916
- C compiler - Generic Assembly Code optimization leads to false array index location in loop
- TCVX-43928
- Incorrect reordering of volatile memory reads
- TCVX-43931
- EMEM memory definition missing in TC35x LSL file
- TCVX-43940
- Erroneous code for a 'for' loop
- TCVX-43946
- Compiler Error: ctc S900 - internal consistency check failed with -O2 -t0
New Device Support
- Debugger support for TC387 chip on TC3x7 TriBoard
After installation of this patch, the directory backup_patch8
is present
in the installation directory of the product.
- Copy the contents of directory
backup_patch8
to the installation directory.
This way you overwrite the files installed by the patch.
- Remove directory
backup_patch8
.
TASKING products are protected with TASKING license management software.
License key
You need a license key when you install a TASKING product on a computer. When you order a TASKING
product from TASKING or one of its distributors, a license key will be sent to you by email or on paper.
See Obtaining a License on our website for more information.
Local TASKING License Server (not applicable to evaluation licenses)
If you have ordered a TASKING product with a floating license, you can have it serviced by the
Remote TASKING License Server (the most convenient solution) or through a Local TASKING License Server
(in case you have no external network access for example). Consult your TASKING representative for
assistance on deciding what the best setup would be for your situation.
If you like to setup up a local license server, we kindly refer you for more information to
Support for TASKING License Management System (TLM)
on our website. Here you can also download the Local TASKING License Server package.
It is advised that you install the Local TASKING License Server before you install products that
require this server.