From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29240 invoked by alias); 22 May 2003 22:30:05 -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 29162 invoked from network); 22 May 2003 22:30:03 -0000 Received: from unknown (HELO zenia.red-bean.com) (12.223.225.216) by sources.redhat.com with SMTP; 22 May 2003 22:30:03 -0000 Received: from zenia.red-bean.com (localhost.localdomain [127.0.0.1]) by zenia.red-bean.com (8.12.5/8.12.5) with ESMTP id h4MMbsFq032176; Thu, 22 May 2003 17:37:55 -0500 Received: (from jimb@localhost) by zenia.red-bean.com (8.12.5/8.12.5/Submit) id h4MMbrla032172; Thu, 22 May 2003 17:37:53 -0500 To: gdb-patches@sources.redhat.com Subject: RFC: find core dumps on Linux From: Jim Blandy Date: Thu, 22 May 2003 22:30:00 -0000 Message-ID: User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-SW-Source: 2003-05/txt/msg00443.txt.bz2 I didn't realize this, but for a very long time, gdb.base/coredump.exp has been broken on Linux. Linux creates core files named 'core.PID'; the test suite didn't know how to find them, so it suggested you check your 'ulimit -c' setting and skipped the tests. 2003-05-22 Jim Blandy * gdb.base/corefile.exp: Find corefiles on Linux, which names them 'core.PID'. Index: gdb/testsuite/gdb.base/corefile.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.base/corefile.exp,v retrieving revision 1.5 diff -c -r1.5 corefile.exp *** gdb/testsuite/gdb.base/corefile.exp 17 Dec 2001 21:03:48 -0000 1.5 --- gdb/testsuite/gdb.base/corefile.exp 22 May 2003 22:22:43 -0000 *************** *** 54,69 **** # allows us to generate a core on systems where it does. # # Some systems append "core" to the name of the program; others append ! # the name of the program to "core". set found 0 ! catch "system \"(cd ${objdir}/${subdir}; ulimit -c unlimited; ${binfile}; true) >/dev/null 2>&1\"" # remote_exec host "${binfile}" ! foreach i "${objdir}/${subdir}/core ${objdir}/${subdir}/core.coremaker.c ${binfile}.core" { if [remote_file build exists $i] { remote_exec build "mv $i ${objdir}/${subdir}/corefile" set found 1 } } if { $found == 0 } { # The braindamaged HPUX shell quits after the ulimit -c above # without executing ${binfile}. So we try again without the --- 54,83 ---- # allows us to generate a core on systems where it does. # # Some systems append "core" to the name of the program; others append ! # the name of the program to "core"; still others (like Linux, as of ! # May 2003) create cores named "core.PID". In the latter case, we ! # could have many core files lying around, and it may be difficult to ! # tell which one is ours, so let's run the program in a subdirectory. set found 0 ! set coredir "${objdir}/${subdir}/coredir.[getpid]" ! file mkdir $coredir ! catch "system \"(cd ${coredir}; ulimit -c unlimited; ${binfile}; true) >/dev/null 2>&1\"" # remote_exec host "${binfile}" ! foreach i "${coredir}/core ${coredir}/core.coremaker.c ${binfile}.core" { if [remote_file build exists $i] { remote_exec build "mv $i ${objdir}/${subdir}/corefile" set found 1 } } + # Check for "core.PID". + if { $found == 0 } { + set names [glob -nocomplain -directory $coredir core.*] + if {[llength $names] == 1} { + set corefile [file join $coredir [lindex $names 0]] + remote_exec build "mv $corefile ${objdir}/${subdir}/corefile" + set found 1 + } + } if { $found == 0 } { # The braindamaged HPUX shell quits after the ulimit -c above # without executing ${binfile}. So we try again without the *************** *** 77,87 **** set found 1 } } ! if { $found == 0 } { ! warning "can't generate a core file - core tests suppressed - check ulimit -c" ! return 0 ! } } # --- 91,105 ---- set found 1 } } + } + + # Try to clean up after ourselves. + remote_file build delete [file join $coredir coremmap.data] + remote_exec build "rmdir $coredir" ! if { $found == 0 } { ! warning "can't generate a core file - core tests suppressed - check ulimit -c" ! return 0 } #