* lib/ld-lib.exp (at_least_gcc_version): Accept more version
authorMaciej W. Rozycki <macro@linux-mips.org>
Fri, 3 Aug 2012 22:28:41 +0000 (22:28 +0000)
committerMaciej W. Rozycki <macro@linux-mips.org>
Fri, 3 Aug 2012 22:28:41 +0000 (22:28 +0000)
number formats; avoid throwing exceptions in any case.

ld/testsuite/ChangeLog
ld/testsuite/lib/ld-lib.exp

index 3811b14eb23f7ae629296b4cfae187eeff8d53be..5a63a948a9ac545572c1fc9cf011d00912dd99d9 100644 (file)
@@ -1,3 +1,8 @@
+2012-08-03  Maciej W. Rozycki  <macro@codesourcery.com>
+
+       * lib/ld-lib.exp (at_least_gcc_version): Accept more version
+       number formats; avoid throwing exceptions in any case.
+
 2012-08-03  Maciej W. Rozycki  <macro@codesourcery.com>
 
        * ld-mips-elf/mode-change-error-1.d: Update the error message.
index a481ce72199eda0ed670d11e37b1599bf21169d4..de0f7add89ac790b7a3c3b0d766079275d3dba1c 100644 (file)
@@ -41,14 +41,19 @@ proc at_least_gcc_version { major minor } {
     set state [remote_exec host $CC --version]
     set tmp "[lindex $state 1]\n"
     # Look for (eg) 4.6.1 in the version output.
-    regexp " .* (\[1-9\])\\.(\[0-9\])\\.\[0-9\]* .*" "$tmp" fred maj min
+    set ver_re "\[^\\.0-9\]+(\[1-9\]\[0-9\]*)\\.(\[0-9\]+)(?:\\.\[0-9\]+)?"
+    regexp $ver_re $tmp fred maj min
     verbose "gcc version: $tmp"
+    if { ![info exists maj] || ![info exists min] } then {
+       perror "can't decipher gcc version number, fix the framework!"
+       return 0
+    }
     verbose "major gcc version is $maj, want at least $major"
     if { $maj == $major } then {
        verbose "minor gcc version is $min, want at least $minor"
-       return [expr  $min >= $minor ]
+       return [expr $min >= $minor]
     } else {
-       return [expr $maj > $major ]
+       return [expr $maj > $major]
     }
 }