From: "Pierre Muller" <pierre.muller@ics-cnrs.unistra.fr>
To: <gdb-patches@sourceware.org>
Cc: <drow@false.org>
Subject: PING [RFC] Testsuite: permit simple transformation of gdb_expect code
Date: Tue, 15 Jun 2010 06:20:00 -0000 [thread overview]
Message-ID: <000901cb0c52$b7d767b0$27863710$@muller@ics-cnrs.unistra.fr> (raw)
I didn't really get any return on the
hart of the patch yet.
As one of the main workers on the testsuite lately,
I will try to bug Daniel Jacobowitz.
Daniel, could you please tell me
if this patch could be acceptable
and if it needs more changes?
Pierre Muller
> -----Message d'origine-----
> De : gdb-patches-owner@sourceware.org [mailto:gdb-patches-
> owner@sourceware.org] De la part de Tom Tromey
> Envoyé : Thursday, June 03, 2010 5:40 PM
> À : Pierre Muller
> Cc : 'Joel Brobecker'; gdb-patches@sourceware.org
> Objet : Re: [RFC] Testsuite: permit simple transformation of gdb_expect
> code
>
> >>>>> "Pierre" == Pierre Muller <pierre.muller@ics-cnrs.unistra.fr>
> writes:
>
> Pierre> I thought about it, but I still didn't really
> Pierre> understand all the tcl command details:
> Pierre> info exists VAR_NAME
> Pierre> will return 1 if VAR_NAME exists
> Pierre> as either a global or a local variable,
> Pierre> but it seems that
> Pierre> info proc PROC_NAME
> Pierre> works as a regular expression,
>
> They both work using a glob-like syntax, not regular expressions...
Thats not what tcl 8.5 doc says...
and indeed
[info exists transform_gdb_expect_code]
returns 1
while
[info exists transform_gdb_expect_code*]
returns 0
> Pierre> and can thus return a list containing both PROC_NAME and
> Pierre> PROC_NAME_VERSION_2 procedures ...
>
> ... so this happens only if you do "info proc PROC_NAME*".
But of course you are right on that,
which leaves us with two possibilities:
use only a procedure, but this would mean
that there is no way to insert its code inside
gdb.exp itself.
Thus I would still prefer that we do use a variable.
So, here is a new proposal:
- declare transform_gdb_expect_code as a global variable,
without setting it, and give some information in "gdb.exp"
about its use.
- inside gdb_expect, test if the variable exists.
If it exists, also test that it does refer to an existing proc.
If the proc exists, call it, if not, issue a "perror"
unless the value of the variable is empty.
This allows to use either
unset transform_gdb_expect_code
or
set transform_gdb_expect_code ""
to disable the transformation at any point
in the testsuite.
Tested on gcc16, no changes found.
Comments?
Pierre
2010-06-04 Pierre Muller <muller@ics.u-strasbg.fr>
* testsuite/lib/gdb.exp (transform_gdb_expect_code): New global
variable, not defined by default.
(gdb_expect): Call TRANSFORM_GDB_EXPECT_CODE procedure
if variable exists and refers to an existing procedure.
Index: src/gdb/testsuite/lib/gdb.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/lib/gdb.exp,v
retrieving revision 1.149
diff -u -p -r1.149 gdb.exp
--- src/gdb/testsuite/lib/gdb.exp 3 Jun 2010 20:29:27 -0000
1.149
+++ src/gdb/testsuite/lib/gdb.exp 4 Jun 2010 07:09:01 -0000
@@ -98,6 +98,12 @@ if ![info exists env(EXEEXT)] {
set octal "\[0-7\]+"
+# The variable transform_gdb_expect_code can be set to the name of
+# a procedure that will transform the code parameter of gdb_expect call
+# in order to cope for some target dependant problems
+# it can also be reset to an empty string to disable that operation
+global transform_gdb_expect_code
+
### Only procedures should come after this point.
#
@@ -2171,6 +2177,14 @@ proc gdb_expect { args } {
}
}
+ global transform_gdb_expect_code;
+ if [info exists transform_gdb_expect_code] {
+ if { "[info procs $transform_gdb_expect_code]" != "" } {
+ set expcode [$transform_gdb_expect_code $expcode];
+ } elseif { "$transform_gdb_expect_code" != "" } {
+ perror "Procedure $transform_gdb_expect_code unknown"
+ }
+ }
global suppress_flag;
global remote_suppress_flag;
if [info exists remote_suppress_flag] {
next reply other threads:[~2010-06-15 6:20 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-15 6:20 Pierre Muller [this message]
2010-06-16 14:14 ` Jan Kratochvil
2010-06-16 15:34 ` Pierre Muller
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='000901cb0c52$b7d767b0$27863710$@muller@ics-cnrs.unistra.fr' \
--to=pierre.muller@ics-cnrs.unistra.fr \
--cc=drow@false.org \
--cc=gdb-patches@sourceware.org \
/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