]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - gdb/producer.c
Fix for incorrect breakpoint set in case of flang compiled binary
[thirdparty/binutils-gdb.git] / gdb / producer.c
index 735a928f335ad5e868eaf9278ae08cfc7e92aa2a..d25d93fcced4ee47857fa7738db01318a5e31163 100644 (file)
@@ -125,6 +125,15 @@ producer_is_icc (const char *producer, int *major, int *minor)
   return false;
 }
 
+/* See producer.h.  */
+
+bool
+producer_is_llvm (const char *producer)
+{
+  return ((producer != NULL) && (startswith (producer, "clang ")
+                                 || startswith (producer, " F90 Flang ")));
+}
+
 #if defined GDB_SELF_TEST
 namespace selftests {
 namespace producer {
@@ -203,6 +212,22 @@ Version 18.0 Beta";
     SELF_CHECK (producer_is_gcc (gnu_exp, &major, &minor)
                && major == 5 && minor == 0);
   }
+
+  {
+    static const char clang_llvm_exp[] = "clang version 12.0.0 (CLANG: bld#8)";
+    int major = 0, minor = 0;
+    SELF_CHECK (!producer_is_icc (clang_llvm_exp, NULL, NULL));
+    SELF_CHECK (!producer_is_gcc (clang_llvm_exp, &major, &minor));
+    SELF_CHECK (producer_is_llvm (clang_llvm_exp));
+  }
+
+  {
+    static const char flang_llvm_exp[] = " F90 Flang - 1.5 2017-05-01";
+    int major = 0, minor = 0;
+    SELF_CHECK (!producer_is_icc (flang_llvm_exp, NULL, NULL));
+    SELF_CHECK (!producer_is_gcc (flang_llvm_exp, &major, &minor));
+    SELF_CHECK (producer_is_llvm (flang_llvm_exp));
+  }
 }
 }
 }