Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <pedro@palves.net>
To: Simon Marchi <simon.marchi@efficios.com>, gdb-patches@sourceware.org
Cc: Laurent <Laurent.Morichetti@amd.com>
Subject: Re: [PATCH 3/4] gdb: pass target to thread_ptid_changed observable
Date: Wed, 5 Aug 2020 15:50:29 +0100	[thread overview]
Message-ID: <5e34235b-a256-0255-b268-d929ff2e7a1d@palves.net> (raw)
In-Reply-To: <6bd06f25-c89b-58b5-3639-94813a7284f5@efficios.com>

On 7/30/20 4:27 PM, Simon Marchi wrote:
> On 2020-07-23 4:42 p.m., Pedro Alves wrote:
>>> @@ -1817,6 +1818,58 @@ cooked_write_test (struct gdbarch *gdbarch)
>>>      }
>>>  }
>>>  
>>> +/* Verify that when two threads with the same ptid exist (from two different
>>> +   targets) and one of them changes ptid, we only update the appropriate
>>> +   regcaches.  */
>>> +
>>> +static void
>>> +regcache_thread_ptid_changed ()
>>> +{
>>> +  /* Any arch will do.  */
>>> +  gdbarch *arch = current_inferior ()->gdbarch;
>>> +
>>> +  /* Prepare two targets with one thread each, with the same ptid.  */
>>> +  scoped_mock_context<test_target_ops> target1 (arch);
>>> +  scoped_mock_context<test_target_ops> target2 (arch);
>>> +  target2.mock_inferior.next = &target1.mock_inferior;
>>> +
>>> +  ptid_t old_ptid (111, 222);
>>> +  ptid_t new_ptid (111, 333);
>>> +
>>> +  target1.mock_inferior.pid = old_ptid.pid ();
>>> +  target1.mock_thread.ptid = old_ptid;
>>> +  target2.mock_inferior.pid = old_ptid.pid ();
>>> +  target2.mock_thread.ptid = old_ptid;
>>> +
>>> +  gdb_assert (regcaches.empty ());
>>
>> This will fail if you debug something, e.g., run to main,
>> and then do:
>>
>>  (gdb) maint selftest regcache_thread_ptid_changed
> 
> I don't know, do we really want to support this?  I don't really see the point.  We can design
> the selftests to make it possible, but is there any advantage?  In the selftests command, we
> could ensure that you are not debugging something, and otherwise error out with "You can't run
> selftests while debugging.".

I don't see why we shouldn't.  Assuming that the regcaches are empty
like in the current patch can also fail is someone inserts some test
before this new test that ends up filling in the regcache.  I see it as
your new test being fragile because of that, and running the
"maint selftest" while some program is running is just a way
to trigger it.  To me, not allowing selftests while the
program is running is just an admission that the tests
aren't well isolated enough.


  reply	other threads:[~2020-08-05 14:50 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-20 20:40 [PATCH 0/4] Regcache fix and optimization Simon Marchi
2020-07-20 20:40 ` [PATCH 1/4] gdb: rename regcache::current_regcache to regcache::regcaches Simon Marchi
2020-07-23 20:01   ` Pedro Alves
2020-07-20 20:40 ` [PATCH 2/4] gdb: move regcache::regcaches to regcache.c Simon Marchi
2020-07-23 20:03   ` Pedro Alves
2020-07-20 20:41 ` [PATCH 3/4] gdb: pass target to thread_ptid_changed observable Simon Marchi
2020-07-23 20:42   ` Pedro Alves
2020-07-30 15:27     ` Simon Marchi
2020-08-05 14:50       ` Pedro Alves [this message]
2020-08-05 19:08         ` Simon Marchi
2020-08-05 22:29           ` Pedro Alves
2020-07-20 20:41 ` [PATCH 4/4] gdb: change regcache list to be a map Simon Marchi
2020-07-24  1:53   ` Pedro Alves
2020-07-24 16:59     ` John Baldwin
2020-07-30 16:26       ` Simon Marchi
2020-07-30 16:58     ` Simon Marchi
2020-07-30 17:03       ` Simon Marchi
2020-08-05 18:02         ` Pedro Alves
2020-08-05 20:25           ` Simon Marchi
2020-07-30 17:07       ` Simon Marchi
2020-07-30 18:17     ` Simon Marchi
2020-08-05 18:14       ` Pedro Alves
2020-08-10 19:15   ` Tom Tromey
2020-08-10 19:25     ` Simon Marchi
2020-08-12 12:52   ` Tom Tromey
2020-08-12 15:17     ` Tom Tromey
2020-08-06 20:27 ` [PATCH 0/4] Regcache fix and optimization Simon Marchi

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=5e34235b-a256-0255-b268-d929ff2e7a1d@palves.net \
    --to=pedro@palves.net \
    --cc=Laurent.Morichetti@amd.com \
    --cc=gdb-patches@sourceware.org \
    --cc=simon.marchi@efficios.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