This is the mail archive of the gdb-patches@sourceware.org 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]

RE: [RFC/RFA] testsuite/gdb.base/watch_thread_num.exp: Fix test for systems having hidden threads



> -----Original Message-----
> From: 'Daniel Jacobowitz' [mailto:drow@false.org]
> Sent: Wednesday, December 19, 2007 3:04 PM
> To: Pierre Muller
> Cc: luisgpm@linux.vnet.ibm.com; gdb-patches@sourceware.org
> Subject: Re: [RFC/RFA] testsuite/gdb.base/watch_thread_num.exp: Fix
> test for systems having hidden threads
> 
> On Wed, Dec 19, 2007 at 01:59:13PM +0100, Pierre Muller wrote:
> > This test currently fails on cygwin target
> > and it does by timeout's which means that it takes a lot of time...
> > The reason of the failure is that
> > thread #2 is a thread created internally by cygwin,
> > for posix emulation, and thus never
> > changes the value of the variable shared_var.
> 
> Thanks.  I saw a bunch of timeouts in this test too:
> 
> (gdb) PASS: gdb.base/watch_thread_num.exp: Invalid watch syntax
> Next 5
> 41              res = pthread_create (&threads[i],
> (gdb) PASS: gdb.base/watch_thread_num.exp: Next 5
> watch shared_var thread 2
> Unknown thread 2.
> (gdb) FAIL: gdb.base/watch_thread_num.exp: Watchpoint on shared
> variable
> 
> They aren't really related, but I think your patch will fix them too.
> Patch is OK.

  Thanks, I committed my change in the same directory.

 
> Some other things I noticed with this test:
> 
> > --- gdb/testsuite/gdb.base/watch_thread_num.exp 17 Dec 2007 12:32:23
> -00001.1
> > +++ gdb/testsuite/gdb.base/watch_thread_num.exp 19 Dec 2007 08:45:41
> -0000
> 
> This is a threads test, it should be in gdb.threads.

  It should probably also use gdb_compile_pthreads
to try to compile the source.
 
> > +for {set i 1} {$i <= 10} {incr i 1} {
> > +gdb_test "continue" "Hardware watchpoint 3: shared_var.*" \
> > +  "Watchpoint triggered iteration $i"
> 
> This test won't work on any target without hardware watchpoints.  It
> should either handle that (search for can-use-hw-watchpoints) or skip
> if the test is fundamentally broken without hardware watchpoints.
> Probably the latter.  See watchthreads.exp.

  I found this, in gdb.base/watchpoint.exp:

    # Disable hardware watchpoints if necessary.
    if [target_info exists gdb,no_hardware_watchpoints] {
        gdb_test "set can-use-hw-watchpoints 0" "" ""
    }

but I still didn't really understand what those "target_info exists"
commands really are:
  - how are they set?
  - does it make it possible to run the testsuite with hardware watchpoints
disabled?

  gdb.threads/watchthreads.exp contains this:

# This test verifies that a watchpoint is detected in the proper thread
# so the test is only meaningful on a system with hardware watchpoints.
if [target_info exists gdb,no_hardware_watchpoints] {
    return 0;
}

But where and how is gdb,no_hardware_watchpoints set?

Pierre Muller




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]