Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Daniel Jacobowitz <drow@false.org>
To: Jim Blandy <jimb@red-bean.com>
Cc: gdb@sourceware.org
Subject: Re: Quoting, backslashes, CLI and MI
Date: Wed, 22 Feb 2006 18:01:00 -0000	[thread overview]
Message-ID: <20060222142953.GA20393@nevyn.them.org> (raw)
In-Reply-To: <8f2776cb0602212223p1b8fda93meb9b12e5d187b3b6@mail.gmail.com>

On Tue, Feb 21, 2006 at 10:23:38PM -0800, Jim Blandy wrote:
> How does buildargv-style quoting interact with commands that take
> expressions as arguments?  Aren't there 'set' commands that do this?

Oof.  That's a good question.

Yes, there are.  var_string, var_string_noescape,
var_optional_filename, and var_filename all take literal text.
So do var_boolean, var_auto_boolean, and var_enum.  var_integer,
var_zinteger, and var_uinteger all take expressions.

In the CLI buildargv and the expression parser are clearly
incompatible; we'll have to use it only for non-expression
commands.  Too many languages, et cetera.

For MI it's messier... there's an obvious way in which MI clients can
quote expressions using double quotes, and it would be nice if they did
so.  But read on.

Of the 133 MI commands listed in mi-cmds.c, 53 have an MI
implementation and use the MI parser; 4 have a CLI implementation but
take no arguments; 64 are unimplemented; and 12 pass straight through
to CLI commands with arguments.  That's a gratifyingly small number,
I was afraid it would be much worse.  They are:

  -break-after
  -break-condition
  -break-delete
  -break-disable
  -break-enable
  -break-info
  -exec-arguments
  -file-exec-and-symbols
  -file-exec-file
  -file-symbol-file
  -gdb-set
  -gdb-show

So, some quoting issues there.  For MI, the -gdb-set example in
the manual is very unfortunate:

  -gdb-set $foo=3

And I know that Eclipse will issue:

  -gdb-set auto-solib-add 0

What I am considering at the moment is adjusting mi3 to support only
the second form, i.e. for GDB configuration variables.  Then the
syntax would be:

  -gdb-set IDENTIFIER [IDENTIFIER...] VALUE

After all, you can always use -data-evaluate-expression to accomplish
the other meaning.  Again, this is an incompatible change and would
have to be done only for mi3.  Does it sound like a good idea?  Bad
idea?

Similar problems apply to the other listed MI commands.  For instance,
-exec-arguments ARGS; should it take a single string which is then
split by buildargv into a vector, or should it take freeform text which
is then split into an argument vector?  Well, right now it takes a
literal string, since it just passes the text to CLI "set args". 
That's saved as a string and then passed to create_inferior as a
string, and eventually passed directly to a shell in the fork-child.c
case.  So, as un-MI-like as it is, I think I'd have to leave this one
alone for now - it's just too big a can of worms!

-- 
Daniel Jacobowitz
CodeSourcery


  reply	other threads:[~2006-02-22 14:29 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-22  4:30 Daniel Jacobowitz
2006-02-22  4:35 ` Paul Koning
2006-02-22 19:57   ` Daniel Jacobowitz
2006-02-22 21:57     ` Paul Koning
2006-02-23  4:25       ` Mark Kettenis
2006-02-25  1:30       ` Eli Zaretskii
2006-02-22  4:40 ` Eli Zaretskii
2006-02-22  5:24   ` Daniel Jacobowitz
2006-02-22 19:30     ` Eli Zaretskii
2006-02-22 20:59       ` Daniel Jacobowitz
2006-02-22 17:39 ` Jim Blandy
2006-02-22 18:01   ` Daniel Jacobowitz [this message]
2006-02-22 18:05     ` Jim Blandy
2006-02-22 18:11       ` Daniel Jacobowitz
2006-02-22 19:24         ` Andrew STUBBS
2006-02-22 19:28           ` Daniel Jacobowitz
2006-02-22 19:50         ` Eli Zaretskii
2006-02-22 19:34     ` Eli Zaretskii
2006-02-22 19:53       ` Daniel Jacobowitz
2006-02-23 11:13         ` Eli Zaretskii
2006-02-22 19:25 ` Eli Zaretskii
2006-02-22 19:51   ` Daniel Jacobowitz
2006-02-23  4:32     ` Eli Zaretskii

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=20060222142953.GA20393@nevyn.them.org \
    --to=drow@false.org \
    --cc=gdb@sourceware.org \
    --cc=jimb@red-bean.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