From: Pedro Alves <palves@redhat.com>
To: "Metzger, Markus T" <markus.t.metzger@intel.com>
Cc: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: Re: [PATCH] btrace, vdso: add vdso target sections
Date: Mon, 19 May 2014 17:22:00 -0000 [thread overview]
Message-ID: <537A3DE1.6070805@redhat.com> (raw)
In-Reply-To: <A78C989F6D9628469189715575E55B230C16E478@IRSMSX104.ger.corp.intel.com>
On 05/19/2014 09:05 AM, Metzger, Markus T wrote:
>> -----Original Message-----
>> From: gdb-patches-owner@sourceware.org [mailto:gdb-patches-
>> owner@sourceware.org] On Behalf Of Pedro Alves
>> Sent: Friday, May 16, 2014 3:00 PM
>
> Thanks for your review.
>
>
>> Looks largely fine, but ...
>>
>> On 04/04/2014 09:53 AM, Markus Metzger wrote:
>>
>>> @@ -131,6 +133,27 @@ symbol_file_add_from_memory (struct bfd
>> *templ, CORE_ADDR addr,
>>> from_tty ? SYMFILE_VERBOSE : 0,
>>> sai, OBJF_SHARED, NULL);
>>>
>>> + if (add_sections)
>>> + {
>> ...
>>
>> Why is this conditional? Why not add the sections if the symbols are
>> added manually with add-symbol-file-from-memory? The use case for the
>> command was originally exactly to add the vdso's symbols to GDB.
>
> This function is used by the add-symbol-file-from-memory command, as well.
>
> I'm not sure if we want to add the target sections there, as well.
If there's no good reason, then I'd rather the command installed
the sections as well. add-symbol-file-from-memory was invented to
add the vdso manually. And in that case, we'd want btrace to work
just the same.
>>> +# disassemble the code around the current PC
>>> +gdb_test "disassemble \$pc, +10" [join [list \
>>> + ".*" \
>>> + "End of assembler dump\." \
>>> + ] "\r\n"]
>>
>> What is the error one gets without the fix? Doesn't
>> GDB say "End of assembler dump" in that case too?
>
> No. GDB says "Cannot access memory at address ...".
Alright. I was thinking that that might be a little
brittle: if GDB changes that for some reason, the test will no
longer catch problems. I think the best test is to make sure the
disassemble output when replaying is the same as when not
replaying at all.
Say, borrow the idea of capture_command_output from gcore.exp,
and do
proc disassemble { what test } {
global gdb_prompt
global expect_out
set output_string ""
set command "disassemble $what"
gdb_test_multiple "$command" "$command" {
-re "${command}\[\r\n\]+(.*)End of assembler dump\.\r\n$gdb_prompt $" {
set output_string $expect_out(1,string)
pass $command
}
}
return $output_string
}
set pre_btrace_disasm [disassemble "gettimeofday"]
# trace the test code
gdb_test_no_output "record btrace"
gdb_test "next"
# start replaying
gdb_test "reverse-stepi"
with_test_prefix "replay" {
set post_btrace_disasm [disassemble "gettimeofday"]
set test "disassembly output matched"
if ![string pre_btrace_disasm $post_btrace_disasm] {
pass $test
} else {
fail $test
}
}
Also, how about making sure we're actually testing the
vdso code, by e.g., expecting "Dump of assembler code for
function __vdso_gettimeofday", or making sure the disassembled
region is within what "info proc maps" shows is the
vdso region?
The idea would be that if the kernel ever changes, we'd
realize that the test is no longer disassembling the
vdso (due to a FAIL/UNSUPPORTED, etc.), thus no longer
exercising what the test was meant to exercise.
--
Pedro Alves
prev parent reply other threads:[~2014-05-19 17:22 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-04 8:53 Markus Metzger
2014-04-22 14:32 ` Metzger, Markus T
2014-04-22 14:39 ` Pedro Alves
2014-05-16 13:12 ` Pedro Alves
2014-05-19 8:07 ` Metzger, Markus T
2014-05-19 11:30 ` Metzger, Markus T
2014-05-19 21:41 ` Pedro Alves
2014-05-20 6:40 ` Metzger, Markus T
2014-05-20 11:12 ` Pedro Alves
2014-05-20 11:16 ` Metzger, Markus T
2014-05-20 17:15 ` [PATCH] Make the dcache (code/stack cache) handle line reading errors better Pedro Alves
[not found] ` <A78C989F6D9628469189715575E55B230C16FA4E@IRSMSX104.ger.corp.intel.com>
2014-05-21 9:45 ` [PATCH v2] " Pedro Alves
2014-05-21 11:29 ` Metzger, Markus T
2014-05-19 17:22 ` Pedro Alves [this message]
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=537A3DE1.6070805@redhat.com \
--to=palves@redhat.com \
--cc=gdb-patches@sourceware.org \
--cc=markus.t.metzger@intel.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