* gdb.threads/pthreads.exp: Move the portable thread compilation
authorJim Blandy <jimb@codesourcery.com>
Thu, 29 Aug 2002 22:36:52 +0000 (22:36 +0000)
committerJim Blandy <jimb@codesourcery.com>
Thu, 29 Aug 2002 22:36:52 +0000 (22:36 +0000)
code into a function in lib/gdb.exp, and call that from here.
* lib/gdb.exp (gdb_compile_pthreads): New function.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.threads/pthreads.exp
gdb/testsuite/lib/gdb.exp

index e29220ce2e01e8c56f02817c557b2d86075b29a3..cd9adf8d5107967f9caff410c3c152d594fcdbe6 100644 (file)
@@ -1,3 +1,9 @@
+2002-08-29  Jim Blandy  <jimb@redhat.com>
+
+       * gdb.threads/pthreads.exp: Move the portable thread compilation
+       code into a function in lib/gdb.exp, and call that from here.
+       * lib/gdb.exp (gdb_compile_pthreads): New function.
+
 2002-08-29  Keith Seitz  <keiths@redhat.com>
 
        * lib/mi-support.exp (mi_gdb_test): Add global declaration for
index 0703395d78bfaad200239518423c0cea44779ecb..dc9b7a838f0c50923fd879cfcfe1b1119df12af9 100644 (file)
@@ -39,42 +39,16 @@ set binfile ${objdir}/${subdir}/${testfile}
 # carriage return)
 set horiz "\[^\n\r\]*"
 
-set built_binfile 0
 if [istarget "*-*-linux"] then {
     set target_cflags "-D_MIT_POSIX_THREADS"
 } else {
     set target_cflags ""
 }
-set why_msg "unrecognized error"
-foreach lib {-lpthreads -lpthread -lthread} {
-    set options "debug"
-    lappend options "incdir=${objdir}/${subdir}"
-    lappend options "libs=$lib"
-    set ccout [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable $options]
-    switch -regexp -- $ccout {
-       ".*no posix threads support.*" {
-           set why_msg "missing threads include file"
-           break
-       }
-       ".*cannot open -lpthread.*" {
-           set why_msg "missing runtime threads library"
-       }
-       ".*Can't find library for -lpthread.*" {
-           set why_msg "missing runtime threads library"
-       }
-       {^$} {
-           pass "successfully compiled posix threads test case"
-           set built_binfile 1
-           break
-       }
-    }
-}
-if {$built_binfile == "0"} {
-    unsupported "Couldn't compile ${srcfile}, ${why_msg}"
-    return -1
+
+if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug "incdir=${objdir}/${subdir}"]] != "" } {
+    gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
 }
 
-# Now we can proceed with the real testing.
 
 # Start with a fresh gdb.
 
index b4a0b8a0bd06bac43c1faf84d45fce12356c0f46..8949910b9ec5b837e064dba16e091d23ccd420db 100644 (file)
@@ -1171,6 +1171,42 @@ proc gdb_compile {source dest type options} {
     return $result;
 }
 
+
+# This is just like gdb_compile, above, except that it tries compiling
+# against several different thread libraries, to see which one this
+# system has.
+proc gdb_compile_pthreads {source dest type options} {
+    set build_binfile 0
+    set why_msg "unrecognized error"
+    foreach lib {-lpthreads -lpthread -lthread} {
+        # This kind of wipes out whatever libs the caller may have
+        # set.  Or maybe theirs will override ours.  How infelicitous.
+        set options_with_lib [concat $options [list libs=$lib]]
+        set ccout [gdb_compile $source $dest $type $options_with_lib]
+        switch -regexp -- $ccout {
+            ".*no posix threads support.*" {
+                set why_msg "missing threads include file"
+                break
+            }
+            ".*cannot open -lpthread.*" {
+                set why_msg "missing runtime threads library"
+            }
+            ".*Can't find library for -lpthread.*" {
+                set why_msg "missing runtime threads library"
+            }
+            {^$} {
+                pass "successfully compiled posix threads test case"
+                set built_binfile 1
+                break
+            }
+        }
+    }
+    if {$built_binfile == "0"} {
+        unsupported "Couldn't compile $source: ${why_msg}"
+        return -1
+    }
+}
+
 proc send_gdb { string } {
     global suppress_flag;
     if { $suppress_flag } {