Dec 10, 2020
08:31 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dec 10, 2020
08:31 PM
AURIX community members,
I am trying to build a application (delivered by third party) using Tasking compiler. I am getting following error message. Any thoughts ? Is there any way I can disable this error message ?
"ctc E490: Only 64-bit double is allowed for EABI compliance"
I am trying to build a application (delivered by third party) using Tasking compiler. I am getting following error message. Any thoughts ? Is there any way I can disable this error message ?
"ctc E490: Only 64-bit double is allowed for EABI compliance"
3 Replies
Dec 12, 2020
09:47 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dec 12, 2020
09:47 AM
Dear Forum Members,
Any thoughts on this issue ? I discovered that this issue shows up only with Tasking V 6.3r1. It does not shows up with V 6.2.
Any thoughts ?
Any thoughts on this issue ? I discovered that this issue shows up only with Tasking V 6.3r1. It does not shows up with V 6.2.
Any thoughts ?
Dec 13, 2020
02:23 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dec 13, 2020
02:23 PM
Are you building with --eabi=+float? If not, it's going to have to use software emulation for double variables, and that will be slow.
Could it be that your compiler flags include both --fp-model=+float and --eabi? That's telling the compiler to both use 32-bit floating point instead of double and not to do so, which I guess might lead to that error.
Could it be that your compiler flags include both --fp-model=+float and --eabi? That's telling the compiler to both use 32-bit floating point instead of double and not to do so, which I guess might lead to that error.
Dec 16, 2020
07:07 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dec 16, 2020
07:07 AM
The problem is related to a mis-configuration. If you use the C compiler option --eabi-compliant this enforces that double values are treated like double values and they are not handled as float values. When the C compiler option --fp-model=+float is used this collides with --eabi-compliant and results in the error message you face. The fact that the error does not show up in v6.2r2 is due to a glitch in the control program (cctc.exe) you use to build the application. More details about this issue:
TCVX-43219 Control program silently changes floating-point settings when --eabi-compliant option is used
DESCRIPTION
The control program does not generate an error message when the --eabi-compliant option is used together with the option --fp-model=f / --fp-model=+float to enable single precision floating point only. The control program overrules the --fp-model=+float option instead by passing the option --fp-model=-float to the C compiler and because this option is listed after the --fp-model=+float one it overrules it. As a result the user is not warned about this incompatible option usage.
Example:
/* file_1.c */
void main(void)
{
}
Invocation:
cctc file_1.c --eabi-compliant --fp-model=+float -ca -v
Invocation result:
cctc file_1.c --eabi-compliant --fp-model=+float -ca -v
+ ..\ctc --fp-model=+float --core=tc1.3 --eabi-compliant --fp-model=-float -o file_1.src file_1.c
MITIGATION
For TriCore tools versions v5.0r1 to v6.0r1:
Use the control program option --eabi=FHNS instead of --eabi-compliant.
For TriCore tools version v6.1r1:
Use the control program option --eabi=CFHNS instead of --eabi-compliant.
For TriCore tools version v6.2r1:
Use the control program option --eabi=CFHNSW instead of --eabi-compliant.
Then the C compiler will generate the error message:
ctc E490: Only 64-bit double is allowed for EABI compliance
to notify you about this option collision.
Best regards,
Ulrich Kloidt
TASKING tools support
TCVX-43219 Control program silently changes floating-point settings when --eabi-compliant option is used
DESCRIPTION
The control program does not generate an error message when the --eabi-compliant option is used together with the option --fp-model=f / --fp-model=+float to enable single precision floating point only. The control program overrules the --fp-model=+float option instead by passing the option --fp-model=-float to the C compiler and because this option is listed after the --fp-model=+float one it overrules it. As a result the user is not warned about this incompatible option usage.
Example:
/* file_1.c */
void main(void)
{
}
Invocation:
cctc file_1.c --eabi-compliant --fp-model=+float -ca -v
Invocation result:
cctc file_1.c --eabi-compliant --fp-model=+float -ca -v
+ ..\ctc --fp-model=+float --core=tc1.3 --eabi-compliant --fp-model=-float -o file_1.src file_1.c
MITIGATION
For TriCore tools versions v5.0r1 to v6.0r1:
Use the control program option --eabi=FHNS instead of --eabi-compliant.
For TriCore tools version v6.1r1:
Use the control program option --eabi=CFHNS instead of --eabi-compliant.
For TriCore tools version v6.2r1:
Use the control program option --eabi=CFHNSW instead of --eabi-compliant.
Then the C compiler will generate the error message:
ctc E490: Only 64-bit double is allowed for EABI compliance
to notify you about this option collision.
Best regards,
Ulrich Kloidt
TASKING tools support