This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
ok to commit?? > > Manoj Iyer wrote: > > > Michael, > > > > > > Incorporated your comments. > > > > Ok, thanks, this is good. > > Are you write-after-approval yet? > > > > > > > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > + Cognito ergo sum + > > > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > > > > On Fri, 27 Aug 2004, Michael Snyder wrote: > > > > > > > > >>Manoj Iyer wrote: > > >> > > >>>I have attached two modified versions of my new thread testcase. > > >>> > > >>>- version 1 > > >>>incorporates Michael Chastain's suggestions and it includes > > >>>the step and backtrace tests from the thread fucntion. > > >>> > > >>>-version 2 > > >>>incorporates Michael Snyder suggestion to remove the step and backtrace > > >>>tests from the testcase. > > >>> > > >>>Please let me know which one you like and any other comments or changes. > > >>>ChangeLog is pasted at the begning of the patch. > > >> > > >>Version 2 is OK as is, if you're tired of messing with it. > > >>You didn't have to remove the backtrace, though, if you'd > > >>like to keep that. > > >> > > >>Also, > > >> > > >> > > >>>+# > > >>>+# > > >>>+# continue to tf() breakpoint #2 > > >>>+# > > >>>+gdb_test_multiple "continue\n" "continue to thread fucntion breakpoint #2" { > > >>>+ -re ".*Breakpoint 2.*tf.* at .*tbug.* .*\r\n.*$gdb_prompt $" { > > >>>+ pass "continue to tf"; > > >>>+ } > > >>>+ -re ".*$gdb_prompt $" { > > >>>+ fail "continue to tf"; > > >>>+ return 1; > > >>>+ } > > >>>+} > > >> > > >>I think this could be simplified to: > > >> gdb_test "continue" \ > > >> "Breakpoint 2.*tf.* at .*tbug.*" \ > > >> "continue to tf" > > >> > > >>Similarly, your backtrace test could be as simple as: > > >> gdb_test "backtrace" \ > > >> "#0 .*tf .*at .*tbug.*" \ > > >> "backtrace from thread function" > > >> > > >>I don't think you can predict what will be on any > > >>higher frames, but you could test the current frame > > >>and make sure backtrace didn't just die or show you > > >>the wrong thread. > > >> > > >> > > >> > > >>>+ > > >>>+ > > >>>+# > > >>>+# delete all breakpoints > > >>>+# > > >>>+send_gdb "delete\n" > > >>>+gdb_expect { > > >>>+ -re "Delete all breakpoint.*$gdb_prompt $" { > > >>>+ send_gdb "y\n" > > >> > > >>For this, all you need is the existing procedure call: > > >> > > >> delete_breakpoints > > >> > > >> > > >> > > > > > >> > > > > > > > > > ------------------------------------------------------------------------ > > > > > > 2004-08-27 Manoj Iyer <manjo@austin.ibm.com> > > > > > > * gdb.threads/thread_check.exp: New testcase. > > > * gdb.threads/thread_check.c: New testcase. > > > > > > ------------------------------------------------------------------------------ > > > diff -paurN ./old/src/gdb/testsuite/gdb.threads/thread_check.c ./new/src/gdb/testsuite/gdb.threads/thread_check.c > > > --- ./old/src/gdb/testsuite/gdb.threads/thread_check.c 1969-12-31 18:00:00.000000000 -0600 > > > +++ ./new/src/gdb/testsuite/gdb.threads/thread_check.c 2004-08-27 05:32:18.434281896 -0500 > > > @@ -0,0 +1,75 @@ > > > +/* > > > +* Copyright (C) 2004 Free Software Foundation, Inc. > > > + > > > +* This program is free software; you can redistribute it and/or modify > > > +* it under the terms of the GNU General Public License as published by > > > +* the Free Software Foundation; either version 2 of the License, or > > > +* (at your option) any later version. > > > +* > > > +* This program is distributed in the hope that it will be useful, > > > +* but WITHOUT ANY WARRANTY; without even the implied warranty of > > > +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > > > +* GNU General Public License for more details. > > > +* > > > +* You should have received a copy of the GNU General Public License > > > +* along with this program; if not, write to the Free Software > > > +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. > > > + > > > +* This file was written by Steve Munroe. (sjmunroe@us.ibm.com) > > > +* Test break points and single step on thread functions. > > > +*/ > > > + > > > +#include <string.h> > > > +#include <unistd.h> > > > +#include <pthread.h> > > > +#include <stdlib.h> > > > +#include <stdio.h> > > > +#include <errno.h> > > > + > > > +#define N 2 > > > + > > > +static void * > > > +tf (void *arg) > > > +{ > > > + int n = (int) (long int) arg; > > > + char number[160]; > > > + int unslept = 10; > > > + > > > + sprintf(number, "tf(%ld): begin", (long)arg); > > > + puts (number); > > > + > > > + while (unslept > 0) > > > + unslept = sleep(unslept); > > > + > > > + sprintf(number, "tf(%ld): end", (long)arg); > > > + puts (number); > > > + return NULL; > > > +} > > > + > > > +int main (int argc, char *argv[]) > > > +{ > > > + int n; > > > + int unslept = 2; > > > + pthread_t th[N]; > > > + > > > + for (n = 0; n < N; ++n) > > > + if (pthread_create (&th[n], NULL, tf, (void *) (long int) n) != 0) > > > + { > > > + while (unslept > 0) > > > + unslept = sleep(2); > > > + puts ("create failed"); > > > + exit (1); > > > + } > > > + > > > + puts("after create"); > > > + > > > + for (n = 0; n < N; ++n) > > > + if (pthread_join (th[n], NULL) != 0) > > > + { > > > + puts ("join failed"); > > > + exit (1); > > > + } > > > + > > > + puts("after join"); > > > + return 0; > > > +} > > > diff -paurN ./old/src/gdb/testsuite/gdb.threads/thread_check.exp ./new/src/gdb/testsuite/gdb.threads/thread_check.exp > > > --- ./old/src/gdb/testsuite/gdb.threads/thread_check.exp 1969-12-31 18:00:00.000000000 -0600 > > > +++ ./new/src/gdb/testsuite/gdb.threads/thread_check.exp 2004-08-27 08:10:23.086321744 -0500 > > > @@ -0,0 +1,96 @@ > > > +# Copyright (C) 2004 Free Software Foundation, Inc. > > > + > > > +# This program is free software; you can redistribute it and/or modify > > > +# it under the terms of the GNU General Public License as published by > > > +# the Free Software Foundation; either version 2 of the License, or > > > +# (at your option) any later version. > > > +# > > > +# This program is distributed in the hope that it will be useful, > > > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > > > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > > > +# GNU General Public License for more details. > > > +# > > > +# You should have received a copy of the GNU General Public License > > > +# along with this program; if not, write to the Free Software > > > +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. > > > + > > > +# Please email any bugs, comments, and/or additions to this file to: > > > +# bug-gdb@prep.ai.mit.edu > > > + > > > +# This file was written by Manoj Iyer. (manjo@austin.ibm.com) > > > +# Test break points and single step on thread functions. > > > +# > > > +# Test Purpose: > > > +# - Test that breakpoints, continue in a threaded application works. > > > +# On powerpc64-unknown-linux-gnu system, running kernel version > > > +# 2.6.5-7.71-pseries64 this test is known to fail due to kernel bug > > > +# in ptrace system call. > > > +# > > > +# Test Strategy: > > > +# - tbug.c creates 2 threads > > > +# - start gdb > > > +# - create 2 breakpoints #1 main() #2 tf() (the thread function) > > > +# - run gdb till #1 main() breakpoint is reached > > > +# - continue to breakpoint #2 tf() > > > +# - delete all breakpoints > > > +# - exit gdb. > > > + > > > +if $tracelevel then { > > > + strace $tracelevel > > > +} > > > + > > > +set prms_id 0 > > > +set bug_id 0 > > > + > > > +set testfile "thread_check" > > > +set srcfile ${testfile}.c > > > +set binfile ${objdir}/${subdir}/${testfile} > > > + > > > +if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug "incdir=${objdir}"]] != "" } { > > > + return -1 > > > +} > > > + > > > + > > > +gdb_start > > > +gdb_reinitialize_dir $srcdir/$subdir > > > +gdb_load ${binfile} > > > + > > > +if ![runto_main] then { > > > + fail "Can't run to main" > > > + return 1; > > > +} > > > + > > > + > > > +# > > > +# set breakpoint at thread fucntion tf > > > +# > > > +gdb_test "break tf" \ > > > + "Breakpoint.*at.* file .*$srcfile, line.*" \ > > > + "breakpoint at tf" > > > + > > > + > > > +# > > > +# > > > +# continue to tf() breakpoint #2 > > > +# > > > +gdb_test "continue" \ > > > + ".*Breakpoint 2.*tf.* at .*tbug.* .*\r\n.*$gdb_prompt $" \ > > > + "continue to tf" > > > + > > > +# > > > +# backtrace from thread function. > > > +# > > > +gdb_test "backtrace" \ > > > + "#0 .*tf .*at .*tbug.*" \ > > > + "backtrace from thread function" > > > + > > > + > > > +# > > > +# delete all breakpoints > > > +# > > > +delete_breakpoints > > > + > > > +# > > > +# exit gdb > > > +# > > > +gdb_exit > > > > > > >
Attachment:
gdb.newtest.version3.patch
Description: PATCH: new testcase
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |