TASKING VX-toolset for TriCore v6.3r1 patch 7
Release Note
Scope
This release note covers the changes between v6.3r1 and v6.3r1 patch 7 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:
- TriCore C compiler
- TriCore C++ compiler with support for packed structures
- TriCore assembler
- ARM (HSM) C compiler
- ARM (HSM) C++ compiler
- TriCore linker
- TriCore control program specification file
- 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 library source files: copysign.c, copysignf.c, isinf.c, isinff.c, isnan.c, isnanf.c, f_ftohp.c,
llrint.c, llrintf.c, llrintl.c, lrint.c, lrintf.c, lrintl.c, rint.c, rintf.c, rintl.c, sqrtf.c,
fesetexceptflag.c, float_config.h, libfloat.h, fprt.h, fenv.c, except.c,
add_spf.c, div_spf.c, mul_spf.c, equ_dpf.c, equ_spf.c, is_0_dpf.c, is_0_spf.c, la_e_dpf.c, la_e_spf.c, lt_e_dpf.c, lt_e_spf.c,
cdpf2c.c, cdpf2l.c, cdpf2ll.c, cdpf2s.c, cdpf2uc.c, cdpf2ul.c,
cdpf2ull.c, cdpf2us.c, cspf2c.c, cspf2l.c, cspf2ll.c, cspf2s.c, cspf2uc.c, cspf2ul.c, cspf2ull.c and cspf2us.c
- 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 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
Due to fixing issue TCVX-44802 Non EABI compliant bitfield offset used in a
struct the alignment of a bitfield in a struct may change in your application
after applying this patch. When linking with v6.3r1 objects not having this fix
or cross-linking older objects (see the User Guide section 7.5.
Cross-Linking), this might cause run-time problems due to the usage of
different offsets for bitfield accesses.
To verify whether your application is impacted, please apply linker option --global-type-checking
and ensure that all modules are compiled with --global-type-checking
or --debug-info
.
When affected it will show the following linker error:
ltc E163: redeclared with a different type
When this error shows up or you want to assure backward compatibility for
bitfield alignment in a struct anyway, the fix for issue TCVX-44802 can be
easily reverted by applying C compiler option: --mitigation=tcvx-44802
.
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.
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 \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 22123104
- carm\bin\carm.exe
- carm\bin\cparm.exe
- ctc\bin\ctc.exe
- ctc\bin\astc.exe
- ctc\bin\cptc.exe
- ctc\bin\ltc.exe
- ctc\bin\hldumptc.exe
- ctc\bin\elfdump.exe
All other executable files still have the original v6.3r1 build number: Build 19041558
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 (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_patch6
is present
in the installation directory of the product.
- Copy the contents of directory
backup_patch6
to the installation directory.
This way you overwrite the files installed by the patch.
- Remove directory
backup_patch6
.
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.