From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23390 invoked by alias); 22 Aug 2002 21:26:12 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 23382 invoked from network); 22 Aug 2002 21:26:11 -0000 Received: from unknown (HELO cygnus.com) (205.180.83.203) by sources.redhat.com with SMTP; 22 Aug 2002 21:26:11 -0000 Received: from redhat.com (reddwarf.sfbay.redhat.com [172.16.24.50]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id OAA06771; Thu, 22 Aug 2002 14:20:16 -0700 (PDT) Message-ID: <3D6556E8.D4CD6607@redhat.com> Date: Thu, 22 Aug 2002 14:32:00 -0000 From: Michael Snyder Organization: Red Hat, Inc. X-Accept-Language: en MIME-Version: 1.0 To: Jim Blandy CC: Fernando Nasser , Michael Snyder , gdb-patches@sources.redhat.com Subject: Re: [Jim Blandy ] RFA: abstract out thread compilation code References: Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-SW-Source: 2002-08/txt/msg00717.txt.bz2 Jim Blandy wrote: > > Any comments on this? This is fine with me, if it's ok with the testsuite maintainer. [Fernando: just say 'yes'. ;-)] > Subject: RFA: abstract out thread compilation code > Date: Thu, 13 Jun 2002 12:42:06 -0500 (EST) > From: Jim Blandy > To: gdb-patches@sources.redhat.com > > 2002-06-13 Jim Blandy > > * 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. > > Index: gdb/testsuite/gdb.threads/pthreads.exp > =================================================================== > RCS file: /cvs/src/src/gdb/testsuite/gdb.threads/pthreads.exp,v > retrieving revision 1.7 > diff -c -r1.7 pthreads.exp > *** gdb/testsuite/gdb.threads/pthreads.exp 1 Oct 2001 20:36:48 -0000 1.7 > --- gdb/testsuite/gdb.threads/pthreads.exp 13 Jun 2002 17:39:46 -0000 > *************** > *** 39,80 **** > # 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 > } > > - # Now we can proceed with the real testing. > > # Start with a fresh gdb. > > --- 39,54 ---- > # carriage return) > set horiz "\[^\n\r\]*" > > if [istarget "*-*-linux"] then { > set target_cflags "-D_MIT_POSIX_THREADS" > } else { > set target_cflags "" > } > ! > ! 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." > } > > > # Start with a fresh gdb. > > Index: gdb/testsuite/lib/gdb.exp > =================================================================== > RCS file: /cvs/src/src/gdb/testsuite/lib/gdb.exp,v > retrieving revision 1.20 > diff -c -r1.20 gdb.exp > *** gdb/testsuite/lib/gdb.exp 11 Jun 2002 20:37:05 -0000 1.20 > --- gdb/testsuite/lib/gdb.exp 13 Jun 2002 17:39:46 -0000 > *************** > *** 1171,1176 **** > --- 1171,1212 ---- > 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 } {