Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Edjunior Barbosa Machado <emachado@linux.vnet.ibm.com>
To: Pedro Alves <pedro@codesourcery.com>
Cc: Ulrich Weigand <uweigand@de.ibm.com>, gdb-patches@sourceware.org
Subject: Re: Watchpoint resource accounting broken (Re: [5/6] breakpoints_ops for all kinds of breakpoints: new watchpoints instance type)
Date: Tue, 13 Sep 2011 14:42:00 -0000	[thread overview]
Message-ID: <4E6F6A30.2040101@linux.vnet.ibm.com> (raw)
In-Reply-To: <201109131355.11485.pedro@codesourcery.com>

On 09/13/2011 09:55 AM, Pedro Alves wrote:
> On Monday 12 September 2011 16:16:53, Edjunior Barbosa Machado wrote:
>> On 09/12/2011 12:03 PM, Ulrich Weigand wrote:
>>> Note how just "i", the result of hw_watchpoint_used_count, is passed to
>>> target_can_use_hardware_watchpoint -- this works only if the current
>>> watchpoint is on the list that hw_watchpoint_used_count iterates over.
>>
>> I noticed this problem too and was considering use "i + reg_cnt" instead
>> of only "i" when calling hw_watchpoint_used_count() (actually, I saw gdb
>> used to use this previously).
>> However, with this change, due to the same problem with the watchpoint
>> added to breakpoint list that Ulrich mentioned, watchpoints added before
>> run the inferior will not work.
> 
> Can you expand on this?  I don't think I'm understanding that problem.
> 

The problem of setting watches before run the inferior occurs because
update_watchpoint() expect that the watchpoint being parsed shouldn't be
in the breakpoint_chain.

When you adds the watchpoint it passes through update_watchpoint() the
first time without reparsing it, but it adds the watch to the
breakpoint_chain right after (in install_breakpoint()). Then, after
start the inferior, when running update_watchpoint() again,
hw_watchpoint_used_count() will count this watch previously added and
reparse will not evaluate the available resources properly.
Moreover, I've noticed it doesn't occur on x86 since
target_can_use_hardware_watchpoint() (i386_can_use_hw_breakpoint())
always returns 1, but affects archs such as ppc64. This problem in
specific can be seen on gdb.base/watchpoint-hw.exp testcase.

By the way, had the chance to retest your new patch on ppc64 and it
seems to fix several issues related to watchpoints, including the
failure pointed by gdb.base/watchpoint-hw.exp.

Thanks,
-- 
Edjunior


  reply	other threads:[~2011-09-13 14:37 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-22 15:58 [5/6] breakpoints_ops for all kinds of breakpoints: new watchpoints instance type Pedro Alves
2011-07-27 10:11 ` Edjunior Barbosa Machado
2011-09-12 15:06 ` Watchpoint resource accounting broken (Re: [5/6] breakpoints_ops for all kinds of breakpoints: new watchpoints instance type) Ulrich Weigand
2011-09-12 15:17   ` Pedro Alves
2011-09-12 15:23   ` Edjunior Barbosa Machado
2011-09-13 14:16     ` Pedro Alves
2011-09-13 14:42       ` Edjunior Barbosa Machado [this message]
2011-09-13 14:54         ` Pedro Alves
2011-09-13 16:49       ` Watchpoint resource accounting broken (Re: [5/6] breakpoints_ops for all kinds of breakpoints: new watchpoints instance type Ulrich Weigand
2011-09-13 17:20         ` Pedro Alves

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4E6F6A30.2040101@linux.vnet.ibm.com \
    --to=emachado@linux.vnet.ibm.com \
    --cc=gdb-patches@sourceware.org \
    --cc=pedro@codesourcery.com \
    --cc=uweigand@de.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox