TASKING TriCore v6.3r1 Inspector v1.0r2
Release Note
Scope
This release note covers the initial features of the TASKING TriCore v6.3r1 Inspector v1.0r2.
For release notes prior to v1.0r2, please visit the TASKING TriCore Inspector support website.
Contents
TriCore v6.3r1 Inspector v1.0r2 is based on the TASKING VX-toolset for TriCore v6.3r1 patch 2.
Inspector operates identical to the VX-toolset (except for the issue detection) down to the Linker.
Generation of the final executable image by the Linker has been disabled.
Components of the VX-toolset dealing with the final executable image, library sources and examples have been removed from the product.
Components modified for the issue detection have been renamed with prefix insp_ (insp_cctc, insp_cptc, insp_ctc, insp_astc, insp_ltc).
You can use the TASKING Inspector v1.0r2 for the TASKING TriCore v6.3r1 product and any of the patches, with the following restrictions:
- When you use the Inspector with TriCore v6.3r1p2, the Inspector guarantees the absence of false negatives.
- When you use the Inspector with other patch releases of the TriCore v6.3r1 product, the Inspector estimates the impact of an issue on your code but does not guarantee the absence of false negatives.
- When you use the Inspector with the TriCore v6.3r1 product or with v6.3r1p1 applied, the Inspector does not detect issues fixed in TriCore v6.3r1p2.
All executable files in this release have the following build number: Build 22102854.
By default, Inspector detects and reports the full set of supported issues. You can use the following options to customize this set:
--ignore=<issue-id>,... - disables detection of specified issues.
--detect=<issue-id>,... - disables detection of all issues and enables detection of specified issues only.
These options are supported by the Control Program, C/C++ Compiler, Assembler and Linker. The issue ID corresponds to the issue's identification on the TASKING Issues Portal.
Inspector indicates issue detection by producing a warning message in two possible ways:
1. Definite detection.
Reported when Inspector can guarantee by detector's construction that the processed code is affected by the triggered issue. Note that the affected code may still be removed from the final executable image by subsequent optimizations or by the linker - this requires manual verification.
Example: ctc W999: [7/12] [INSP] detected occurrence of issue TCVX-44043.
2. Potential detection.
Reported when the issue is triggered, but Inspector cannot guarantee that the processed code has been affected. Location and/or some additional information will be reported to facilitate manual verification.
Example: ltc W998: [2/51] [INSP] detected potential occurrence of issue TCVX-43994.
Some potential detectors produce a lot of false positives. To narrow the processing, assembly comparison mode is introduced.
--detect-asm=<issue-id> - with this option Inspector only detects a single specified issue.
After initial potential detection Inspector generates two instances of the assembly code - affected and not affected by the issue.
If the comparison of these generated assembly files produces any meaningful difference, Inspector reports it and indicates locations of the generated files for the further analysis.
Inspector supports separate logging of detection messages.
--insp-log=<file> - with this option all detection messages are duplicated into the specified file.
The log file is written in append mode and clearing it at the right moment is your responsibility.
The logging mechanism supports concurrent writing for the multi-threaded build, but file locking over network is unreliable, so it should not be used with a remotely located log file.
- TCVX-39025
- LSL: prevent an allocation of the user stack in the PCP memory
- TCVX-40928
- AURIX multi-core: hex file does not contain code for cloned functions in ROM
- TCVX-43123
- Assembler astc --core=tc1.6.2 silently processed deprecated instruction mulms.h
- TCVX-43994
- Linker ltc allows duplicate interrupt vectors to be located in vector table
- TCVX-44077
- C compiler generates malloc call for variable length array
- TCVX-44201
- Linker - clone .text .clone code sections missing in copytable when using --non-romable option
- 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-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-44267
- Linker: option --whole-archive ignores object modules without exported symbols
- TCVX-44278
- C++ compiler: generated code results in address 0x0000000 access causing bus trap
- 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-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-44417
- Compiler generates wrong code for loops with 64-bit iterators
- 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-44426
- FPU version of C library is not selected with control program option --fp-model=St
- TCVX-44437
- Incorrect code for branch target align optimization when tail merging optimization active
- 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-44461
- No error on narrowing conversion from char to bool
- TCVX-44522
- The __dsync() intrinsic does not always work as a memory fence
- TCVX-44541
- FP library: operations on QNAN lead to incorrect raising of FE_INVALID exception
- TCVX-44545
- Overlapping sections created when a reserved section is used with a memory fill entry
- TCVX-44642
- Common subexpression elimination optimization may violate #pragma STDC FENV_ACCESS ON
- TCVX-44670
- Type conversions involving _Bool may produce wrong result
- TCVX-44677
- Type conversions involving _Bool may produce wrong result
- TCVX-44684
- Erroneous code generated using generic assembly code optimizations
- TCVX-44737
- Compiler generates wrong code (incorrect infinite loop)
- TCVX-44738
- C compiler: no FE_INVALID is raised for float-to-int conversion when using #pragma STDC FENV_ACCESS ON:
- TCVX-44751
- Incorrect optimization of left-shift operator
- TCVX-44753
- Atomic load is removed in some cases
- TCVX-44776
- Function @FLD accepts negative arguments with undefined behavior
- TCVX-44792
- Erroneous code generation due to loop fusion optimization
- TCVX-44793
- C compiler: missing truncation for cast that is converted to _Bool
- TCVX-44796
- FPU instructions may corrupt 64-bit integer computations
- TCVX-44802
- Non EABI compliant bitfield offset used in a struct with a structsize larger than 32 bit
- TCVX-44808
- C compiler: incorrect integer promotion using expression simplification optimization
- TCVX-44840
- C compiler: Incorrect CSE of VLA size expression
- TCVX-44846
- C compiler: flexible array member initialization: diagnostics may be missing
- TCVX-44872
- Compiler ignores variable value change after this has been passed by reference in a function call
- TCVX-44903
- Compiler overwrites a complete byte in a bitstruct whereas only two bits are modified
- TCVX-44913
- Erroneous code generated for C++ code using __disable_and_save and __restore intrinsics
Available detectors for each tool are also listed if option --detect is used without an argument
- TCVX-44325
- User stack pointer 4-byte aligned when interrupt occurs between FCALL and FRET
This issue has been deemed impossible to detect in any meaningful way during compilation. User manual contains a detailed description of the situation when the issue might occur.
- INSP-4
- Compiler shall ignore pragma warning
- INSP-5
- JRE is included into product Windows installation
- INSP-11
- Update assembly comparison filter to check labels
- INSP-15
- TCVX-44387 detector memory access issue
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 the Getting Started with the TASKING Inspector for TriCore
guide for information on obtaining a license.
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.