From: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
To: Kevin Buettner <kevinb@redhat.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH 2/2] gdb/testsuite: Add gdb.base/memops-watchpoint.exp
Date: Sun, 21 Apr 2024 21:24:42 -0300 [thread overview]
Message-ID: <87wmoq2qid.fsf@linaro.org> (raw)
In-Reply-To: <20240421142019.0f6d75d0@f39-zbm-amd> (Kevin Buettner's message of "Sun, 21 Apr 2024 14:20:19 -0700")
Thank you for your review!
Kevin Buettner <kevinb@redhat.com> writes:
> On Sat, 20 Apr 2024 18:33:07 -0300
> Thiago Jung Bauermann <thiago.bauermann@linaro.org> wrote:
>
>> diff --git a/gdb/testsuite/gdb.base/memops-watchpoint.exp
>> b/gdb/testsuite/gdb.base/memops-watchpoint.exp
>> new file mode 100644
>> index 000000000000..6fc84eb469c4
>> --- /dev/null
>> +++ b/gdb/testsuite/gdb.base/memops-watchpoint.exp
>> @@ -0,0 +1,83 @@
>> +# Copyright 2024 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 3 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, see <http://www.gnu.org/licenses/>.
>> +
>> +# Test a binary that uses standard libc memory operation functions. They are
>> +# frequently optimized with specialized instructions, so make sure GDB behaves
>> +# correctly in their presence.
>> +
>> +# It's not possible to check in which libc function the watchpoint triggers
>> +# without its debug info.
>> +require libc_has_debug_info
>
> I'm wondering about the need for this requirement. When I comment it
> out and run it on a machine without libc debuginfo, I do see 3 FAILs,
> but it seems to me that those could be turned into PASSes by changing
> the regular expressions for the "continue until..." tests.
>
> E.g. for the first one, with libc debuginfo, I see:
>
> continue
> Continuing.
>
> Hardware watchpoint 2: -location a[31]
>
> Old value = 101 'e'
> New value = 0 '\000'
> __memset_avx2_unaligned () at ../sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S:146
> 146 VMOVU %VMM(0), (%rdi)
> (gdb) PASS: gdb.base/memops-watchpoint.exp: continue until memset watchpoint hits
>
> But, without libc debuginfo, the watchpoint still works:
>
> continue
> Continuing.
>
> Hardware watchpoint 2: -location a[31]
>
> Old value = 101 'e'
> New value = 0 '\000'
> 0x00007ffff7e3553a in __memset_avx2_unaligned () from /lib64/libc.so.6
> (gdb) FAIL: gdb.base/memops-watchpoint.exp: continue until memset watchpoint hits
>
> As stated earlier, this could be turned into a PASS by tweaking the RE.
>
> In both cases, we know that it's in a "memset" function. (The presence
> of minimal symbols provides GDB with this information.)
I added the requirement because in my aarch64-linux system without libc6
debug info I get:
continue
Continuing.
Hardware watchpoint 2: -location a[28]
Old value = 104 'h'
New value = 0 '\000'
0x0000fffff7e90664 in ?? () from /lib/aarch64-linux-gnu/libc.so.6
(gdb) FAIL: gdb.base/memops-watchpoint.exp: continue until memset watchpoint hits
And I just tested removing libc6-dbg from my x86_64-linux laptop:
continue
Continuing.
Hardware watchpoint 2: -location a[28]
Old value = 104 'h'
New value = 0 '\000'
0x00007ffff7d8e05f in ?? () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) FAIL: gdb.base/memops-watchpoint.exp: continue until memset watchpoint hits
So it depends on the system.
One alternative would be to not use the require statement and run the
test until the watchpoint hits, and have a case in gdb_test_multiple to
mark as UNRESOLVED if the function name is '??'.
--
Thiago
next prev parent reply other threads:[~2024-04-22 0:25 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-20 21:33 [PATCH 0/2] Add testcase for libc memory operations Thiago Jung Bauermann
2024-04-20 21:33 ` [PATCH 1/2] gdb/testsuite: Add libc_has_debug_info require helper Thiago Jung Bauermann
2024-04-21 20:44 ` Kevin Buettner
2024-04-21 21:02 ` Kevin Buettner
2024-04-22 0:05 ` Thiago Jung Bauermann
2024-04-20 21:33 ` [PATCH 2/2] gdb/testsuite: Add gdb.base/memops-watchpoint.exp Thiago Jung Bauermann
2024-04-21 21:20 ` Kevin Buettner
2024-04-22 0:24 ` Thiago Jung Bauermann [this message]
2024-04-22 18:40 ` Kevin Buettner
2024-04-23 1:20 ` Thiago Jung Bauermann
2024-04-22 23:04 ` Thiago Jung Bauermann
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=87wmoq2qid.fsf@linaro.org \
--to=thiago.bauermann@linaro.org \
--cc=gdb-patches@sourceware.org \
--cc=kevinb@redhat.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