This article provides information regarding the TriCore v6.3r1 cross-linking in addition to the existing Chapter 7.5 Cross-Linking in the TriCore user guide. It explains the changes introduced in the v6.3r1-based patches due to EABI compliance reasons. Moreover, this article includes details of the --eabi option additions and clarifies the option settings for the whole application.
Chapter 7.5 Cross-Linking also explains the evolution of the --eabi options for EABI compliance. Some sub-options have been added to ensure EABI compliance. These updates resolve known EABI-related issues and fulfill the requirement to comply with new versions of the EABI specification which now define the required toolset behavior in previously unspecified use cases.
To cross-link object files generated with a newer version with an older one, you need to ensure that the new EABI compliance options are not activated. EABI compliance is activated using an uppercase letter or -<option name>. The following list explains the newly introduced EABI compliance sub-options depending on the version of the tools:
The char-bitfield option has been added. It must be enabled for downward compatibility with older versions, which can be done using --eabi=+char-bitfield or --eabi=c. Alternatively, you can omit this option, as it is enabled by default.
The word-struct-align option has been added. It must be enabled for downward compatibility with older versions, which can be done using --eabi=+word-struct-align or --eabi=w. Alternatively, you can omit this option, as it is enabled by default.
The bitfield-align option has been added. It must be enabled for downward compatibility with older versions, which can be done using --eabi=+bitfield-align or --eabi=b. Alternatively, you can omit this option, as it is enabled by default.
The issue TCVX-44802 has been resolved, which can have an impact on the alignment of the int data type bit-fields in a struct. For downward compatibility with older versions v6.3r1 patch 5 and below, you need to apply the C compiler option --mitigation=tcvx-44802.
The issue TCVX-44802 has been resolved, which can have an impact on the alignment of the int data type bit-fields in a struct. For downward compatibility with older versions v6.3r1 patch 5 and below, you need to apply the C compiler option --mitigation=tcvx-44802.
The short-bitfield, int-bitfield and long-long-bitfield options have been added. They must be enabled for downward compatibility with older versions, which can be done using --eabi=+short-bitfield+int-bitfield+long-long-bitfield or --eabi=dil. Alternatively, you can omit this option, as it is enabled by default.
The option --mitigation=tcvx-44802 is now deprecated due to the introduction of the EABI option int-bitfield. In v6.3r1 patch 8, --eabi=+int-bitfield or --eabi=i shall be used to be downward compatible with older versions v6.3r1 patch 5 and below.
The following options of the TriCore compiler have the same values for the whole application:
--eabi=+bitfield-align
--eabi=+char-bitfield
--eabi=+half-word-align
--eabi=+word-struct-align
--fp-model=+float
--integer-enumeration
--mmu-on and --mmu-present
--signed-bitfields
--uchar
This statement can be misleading as you might assume that the named options must be enabled for cross-linking. This is not valid. The purpose of this statement is to underline that the option setting for the named options may not alternate across a project. For example, you should not compile a C source module using --eabi=+half-word-align, and another one using --eabi=-half-word-align. Instead, it needs to be either --eabi=+half-word-align or--eabi=-half-word-align for the whole application.