public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Andrew Burgess <aburgess@redhat.com>
To: Tom de Vries <tdevries@suse.de>, Simon Marchi <simark@simark.ca>,
	gdb-patches@sourceware.org
Subject: Re: [PATCH 2/3] gdb: improve disassembler styling when Pygments raises an exception
Date: Mon, 10 Oct 2022 12:16:08 +0100	[thread overview]
Message-ID: <87o7ukdj47.fsf@redhat.com> (raw)
In-Reply-To: <32ac73a1-c0b8-75cf-72d3-bd11471d0fe6@suse.de>

Tom de Vries <tdevries@suse.de> writes:

> On 10/10/22 11:32, Andrew Burgess via Gdb-patches wrote:
>> Simon Marchi <simark@simark.ca> writes:
>> 
>>> On 2022-10-08 12:00, Andrew Burgess wrote:
>>>> Simon Marchi <simark@simark.ca> writes:
>>>>
>>>>>> +# Check that, if the user is using Python Pygments for disassembler
>>>>>> +# styling, then the styling correctly switches off when an error is
>>>>>> +# detected in the Python code.
>>>>>> +proc test_disassembler_error_handling { } {
>>>>>> +
>>>>>> +    # This test requires the Python Pygments module to be installed
>>>>>> +    # and used by GDB.
>>>>>> +    if { !$::python_disassembly_styling } {
>>>>>> +	return
>>>>>> +    }
>>>>>> +
>>>>>> +    save_vars { env(TERM) } {
>>>>>> +	# We need an ANSI-capable terminal to get the output.
>>>>>> +	setenv TERM ansi
>>>>>> +
>>>>>> +	# Restart GDB with the correct TERM variable setting, this
>>>>>> +	# means that GDB will enable styling.
>>>>>> +	clean_restart_and_disable "restart 4" $::binfile
>>>>>> +
>>>>>> +	# Disable use of libopcodes for styling.  As this function is
>>>>>> +	# only called when Python Pygments module is available, we
>>>>>> +	# should now be using that module to style the disassembler
>>>>>> +	# output.
>>>>>> +	gdb_test_no_output "maint set libopcodes-styling enabled off"
>>>>>> +
>>>>>> +	# Disassemble a single instruction and ensure that the output
>>>>>> +	# has styling markers in it.
>>>>>> +	set insn_before [get_single_disassembled_insn]
>>>>>> +	gdb_assert { [regexp "\033" $insn_before] } \
>>>>>> +	    "have style markers when Pygments is working fine"
>>>>>> +
>>>>>> +	# Now replace the standard function that colorizes the
>>>>>> +	# disassembler output, with a new function that always returns
>>>>>> +	# None, this should cause GDB to stop using the Pygments
>>>>>> +	# module for disassembler styling.
>>>>>> +	gdb_py_test_silent_cmd \
>>>>>> +	    [multi_line_input \
>>>>>> +		 "python" \
>>>>>> +		 "def replacement_colorize_disasm(content,gdbarch):" \
>>>>>> +		 "  return None" \
>>>>>> +		 "gdb.styling.colorize_disasm = replacement_colorize_disasm" \
>>>>>> +		 "\004"] \
>>>>>
>>>>> Any reason you are using \004 here, instead of end?  I don't quite
>>>>> understand why, but it seems to cause some random failures.  Running the
>>>>> test under `taskset -c 2` makes it fail most of the time.  Running it
>>>>> with check-read1 makes it fail consistently:
>>>>>
>>>>>    FAIL: gdb.base/style.exp: capture_command_output for x/1i *main
>>>>>
>>>>> When changing \004 for end, it passes.  I don't have an explanation why
>>>>> though.
>>>>
>>>> It'll be a copy&paste.  There's a couple of other places in the
>>>> testsuite where this pattern is used.
>>>>
>>>> The patch below changes all three to use 'end'.  How's this?
>>>>
>>>> Thanks,
>>>> Andrew
>>>
>>> This is fine with me, but again, I didn't dig into it so I don't really
>>> know what sending a \004 was causing,
>> 
>> Hi,
>> 
>> Given you were seeing problems with the use of \004, and the tests
>> definitely were not about whether \004 could be used or not, I've pushed
>> the patch I proposed (exact version is below).
>> 
>
> I found this independently and filed a PR ( 
> https://sourceware.org/bugzilla/show_bug.cgi?id=29664 ) and wrote the 
> same fix (in the same three test-cases), and was about to commit ...
>
> The FAIL is caused by using gdb_py_test_silent_cmd, which adds a "\n" at 
> the end of the command in combination with "\004", causing a stray "\n" 
> that generates an extra prompt, which makes the prompt matching 
> unpredictable.

Apologies for the duplicated effort.  Also, thanks for the explanation,
which, if I'd spotted sooner would have saved me investigating the
problem.

Again, thanks for picking up after me, and apologies for wasting your
time.

thanks,
Andrew


  reply	other threads:[~2022-10-10 11:16 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-30 14:16 [PATCH 0/3] Improvements for Pygments based disassembly styling Andrew Burgess
2022-08-30 14:16 ` [PATCH 1/3] gdb/testsuite: extend styling test for libopcodes styling Andrew Burgess
2022-08-30 14:16 ` [PATCH 2/3] gdb: improve disassembler styling when Pygments raises an exception Andrew Burgess
2022-10-08  2:25   ` Simon Marchi
2022-10-08 16:00     ` Andrew Burgess
2022-10-08 16:01       ` Simon Marchi
2022-10-10  9:32         ` Andrew Burgess
2022-10-10 10:31           ` Tom de Vries
2022-10-10 11:16             ` Andrew Burgess [this message]
2022-10-10 13:22               ` Tom de Vries
2022-10-10 14:04                 ` Andrew Burgess
2022-10-10 11:03     ` Andrew Burgess
2022-08-30 14:16 ` [PATCH 3/3] gdb/disasm: better intel flavour disassembly styling with Pygments Andrew Burgess
2022-10-02 16:38 ` [PATCH 0/3] Improvements for Pygments based disassembly styling Andrew Burgess

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=87o7ukdj47.fsf@redhat.com \
    --to=aburgess@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=simark@simark.ca \
    --cc=tdevries@suse.de \
    /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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).