aboutsummaryrefslogtreecommitdiff
path: root/gdb/producer.h
diff options
context:
space:
mode:
authorFelix Willgerodt <felix.willgerodt@intel.com>2021-04-08 09:15:58 +0200
committerFelix Willgerodt <felix.willgerodt@intel.com>2021-04-08 09:18:55 +0200
commitfbb3bcfcd8810ecf25a47e71c2f7d46d7a74a6be (patch)
tree85085533c98238fa8634419f6ac92bb902ba414c /gdb/producer.h
parent05385fc777d642f4cf3455fc7e0b26faafa4e0f6 (diff)
downloadgdb-fbb3bcfcd8810ecf25a47e71c2f7d46d7a74a6be.zip
gdb-fbb3bcfcd8810ecf25a47e71c2f7d46d7a74a6be.tar.gz
gdb-fbb3bcfcd8810ecf25a47e71c2f7d46d7a74a6be.tar.bz2
gdb: Update producer check for Intel compilers.
The main goal of this patch is to get rid of a warning for the new Fortran compiler: (gdb) b 9 warning: Could not recognize version of Intel Compiler in: "Intel(R) Fortran 21.0-2087b" Breakpoint 1 at 0x4048cf: file comp.f90, line 9. While trying to fix this I analyzed DW_AT_producer of all latest Intel compilers for C, C++ and Fortran. They do no longer necessarily start with "Intel (R)" nor do they follow the internal and external version number scheme that the original patch for this check assumed. Some newer compilers even contradict the "intermediate" digit in the old version scheme and have the MINOR number as the second digit, even when having 3 or 4 digits overall. Therefore I rewrote the check to consider the first MAJOR.MINOR string found as the version number. This might not be 100% correct for some older internal compilers, but the only current user of this function is only checking for the major version anyway. Hence this should be reliable enough and extendable enough going forward. gdb/ChangeLog: 2021-04-08 Felix Willgerodt <felix.willgerodt@intel.com> * producer.c: (producer_is_icc): Update for new version scheme. (producer_parsing_tests): Update names and expected results. * producer.h: (producer_is_icc): Update comment accordingly.
Diffstat (limited to 'gdb/producer.h')
-rw-r--r--gdb/producer.h20
1 files changed, 1 insertions, 19 deletions
diff --git a/gdb/producer.h b/gdb/producer.h
index 15a60dc..9cfccd6 100644
--- a/gdb/producer.h
+++ b/gdb/producer.h
@@ -31,25 +31,7 @@ extern int producer_is_gcc_ge_4 (const char *producer);
extern int producer_is_gcc (const char *producer, int *major, int *minor);
/* Returns true if the given PRODUCER string is Intel or false
- otherwise. Sets the MAJOR and MINOR versions when not NULL.
-
- Internal and external ICC versions have to be taken into account.
- PRODUCER strings for internal releases are slightly different than
- for public ones. Internal releases have a major release number and
- 0 as minor release. External releases have 4 fields, 3 of them are
- not 0 and only two are of interest, major and update.
-
- Examples are:
-
- Public release:
- "Intel(R) Fortran Intel(R) 64 Compiler XE for applications
- running on Intel(R) 64, Version 14.0.1.074 Build 20130716";
- "Intel(R) C++ Intel(R) 64 Compiler XE for applications
- running on Intel(R) 64, Version 14.0.1.074 Build 20130716";
-
- Internal releases:
- "Intel(R) C++ Intel(R) 64 Compiler for applications
- running on Intel(R) 64, Version 18.0 Beta ....". */
+ otherwise. Sets the MAJOR and MINOR versions when not NULL. */
extern bool producer_is_icc (const char *producer, int *major, int *minor);
/* Returns true if the given PRODUCER string is LLVM (clang/flang) or