public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug testsuite/16947] New: Fail to compile test case when board file local-remote-host.exp is used
@ 2014-05-15 8:38 qiyao at gcc dot gnu.org
2014-05-15 8:47 ` [Bug testsuite/16947] " qiyao at gcc dot gnu.org
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: qiyao at gcc dot gnu.org @ 2014-05-15 8:38 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=16947
Bug ID: 16947
Summary: Fail to compile test case when board file
local-remote-host.exp is used
Product: gdb
Version: HEAD
Status: NEW
Severity: normal
Priority: P2
Component: testsuite
Assignee: unassigned at sourceware dot org
Reporter: qiyao at gcc dot gnu.org
$ make check RUNTESTFLAGS='--host_board=local-remote-host foll-exec.exp'
...
Running ../../../../git/gdb/testsuite/gdb.base/foll-exec.exp ...
gdb compile failed,
/home/yao/Source/gnu/gdb/build-git/x86/gdb/testsuite/../../../../git/gdb/testsuite/gdb.base/foll-exec.c:
In function 'main':
<command-line>:0:9: error: 'gdb' undeclared (first use in this function)
/home/yao/Source/gnu/gdb/build-git/x86/gdb/testsuite/../../../../git/gdb/testsuite/gdb.base/foll-exec.c:20:11:
note: in expansion of macro 'BASEDIR'
execlp (BASEDIR "/execd-prog",
^
<command-line>:0:9: note: each undeclared identifier is reported only once for
each function it appears in
/home/yao/Source/gnu/gdb/build-git/x86/gdb/testsuite/../../../../git/gdb/testsuite/gdb.base/foll-exec.c:20:11:
note: in expansion of macro 'BASEDIR'
execlp (BASEDIR "/execd-prog",
Looks macro BASEDIR isn't replaced successfully.
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug testsuite/16947] Fail to compile test case when board file local-remote-host.exp is used
2014-05-15 8:38 [Bug testsuite/16947] New: Fail to compile test case when board file local-remote-host.exp is used qiyao at gcc dot gnu.org
@ 2014-05-15 8:47 ` qiyao at gcc dot gnu.org
2022-11-05 10:53 ` vries at gcc dot gnu.org
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: qiyao at gcc dot gnu.org @ 2014-05-15 8:47 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=16947
--- Comment #1 from Yao Qi <qiyao at gcc dot gnu.org> ---
gdb.base/unload.exp, gdb.base/checkpoint.exp, gdb.base/foll-vfork.exp,
gdb.base/watchpoint-solib.exp and gdb.dwarf2/dw2-dir-file-name.exp have the
same problem.
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug testsuite/16947] Fail to compile test case when board file local-remote-host.exp is used
2014-05-15 8:38 [Bug testsuite/16947] New: Fail to compile test case when board file local-remote-host.exp is used qiyao at gcc dot gnu.org
2014-05-15 8:47 ` [Bug testsuite/16947] " qiyao at gcc dot gnu.org
@ 2022-11-05 10:53 ` vries at gcc dot gnu.org
2022-11-05 10:56 ` vries at gcc dot gnu.org
2022-11-05 14:06 ` vries at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: vries at gcc dot gnu.org @ 2022-11-05 10:53 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=16947
Tom de Vries <vries at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |vries at gcc dot gnu.org
--- Comment #2 from Tom de Vries <vries at gcc dot gnu.org> ---
Let's for a moment take this out of the dejagnu context.
This is a minimal test-case:
...
$ cat test.c
#include <stdio.h>
const char * s = S;
int
main (void)
{
printf ("S: '%s'\n", s);
return 0;
}
...
When using -DS=foo, we run into the problem that there are no quotes:
...
$ gcc -DS=foo test.c && ./a.out
<command-line>:0:3: error: ‘foo’ undeclared here (not in a function); did you
mean ‘feof’?
test.c:3:18: note: in expansion of macro ‘S’
const char * s = S;
... ^
There's a simple way to fix this (
https://gcc.gnu.org/onlinedocs/cpp/Stringizing.html ):
...
+#define STR(s) #s
+#define XSTR(s) STR (s)
-const char * s = S;
+const char * s = XSTR (S);
...
with which we have:
...
$ gcc -DS=foo test.c && ./a.out
S: 'foo'
...
That however breaks down when using names that have parts that are defined as
macros:
...
$ gcc -DS=/unix/is/number/one test.c && ./a.out
S: '/1/is/number/one'
...
See for instance commit 250e8e0d7fe ("[gdb/testsuite] Fix dwo path in
fission-*.S").
OK, so let's drop the stringizing patch, and try escaping instead:
...
$ gcc -DS=\"foo\" test.c && ./a.out
S: 'foo'
...
Well, that works.
Now lets try to do that through ssh:
...
$ ssh localhost "gcc -DS=\"foo\" test.c && ./a.out"
<command-line>:0:3: error: ‘foo’ undeclared here (not in a function); did you
mean ‘feof’?
test.c:3:18: note: in expansion of macro ‘S’
const char * s = S;
^
...
And so we arrive at:
...
$ ssh localhost "gcc -DS=\\\"foo\\\" test.c && ./a.out"
S: 'foo'
...
If we take the arguments passing of ssh out of the equation by using a command
file, we run into the same problem:
...
$ echo "gcc -DS=\"foo\" test.c && ./a.out" > cmd.sh; ssh localhost bash
./cmd.sh
<command-line>:0:3: error: ‘foo’ undeclared here (not in a function); did you
mean ‘feof’?
test.c:3:18: note: in expansion of macro ‘S’
const char * s = S;
^
...
because:
...
$ cat cmd.sh
gcc -DS="foo" test.c && ./a.out
...
So, again the same fix:
...
$ echo "gcc -DS=\\\"foo\\\" test.c && ./a.out" > cmd.sh; ssh localhost bash
./cmd.sh
S: 'foo'
...
A benefit of this approach though is that it's consistent: we run into the same
problems with and without ssh:
...
$ bash ./cmd.sh
S: 'foo'
...
As for the test-case mentioned, foll-exec.exp, it was fixed by commit
31d913c7e4e ("[testsuite] Remove BASEDIR"), which uses a different mechanism
and avoids quoting all-together: it uses argv[0] to determine the basedir of
the target exec.
So, let's try using argument passing:
...
$ cat test.c
#include <stdio.h>
int
main (int argc, const char *argv[])
{
const char *s = argv[1];
printf ("S: '%s'\n", s);
return 0;
}
$ gcc test.c && ./a.out foo
S: 'foo'
$ ssh localhost "gcc test.c && ./a.out foo"
S: 'foo'
...
That seems to work well.
I've also seen a solution in one test-case (can't remember which atm) which
uses gdb's ability to set a variable in the target exec:
...
$ gcc -g test.c; ./a.out; gdb -q -batch ./a.out -ex start -ex "set var
s=\"foo\"" -ex continue
S: '(null)'
Temporary breakpoint 1 at 0x40050b: file test.c, line 8.
Temporary breakpoint 1, main () at test.c:8
8 printf ("S: '%s'\n", s);
S: 'foo'
[Inferior 1 (process 10855) exited normally]
...
But that only works when there's debug info, and may need volatile to work in
presence of optimization. [ Note that the escaping is only there because we
use -ex, for interactive gdb, we'd just use (gdb) set var s="foo". ]
Still, it does work around the escaping issue for interactive gdb over ssh:
...
$ ssh localhost gdb -q ./a.out
Reading symbols from ./a.out...
(gdb) start
Temporary breakpoint 1 at 0x40050b: file test.c, line 8.
Starting program: /home/vries/a.out
Missing separate debuginfos, use: zypper install
glibc-debuginfo-2.31-150300.41.1.x86_64
Temporary breakpoint 1, main () at test.c:8
8 printf ("S: '%s'\n", s);
(gdb) set var s="foo"
(gdb) c
Continuing.
S: 'foo'
[Inferior 1 (process 11253) exited normally]
(gdb)
...
But ultimately, we run into the same problem with '$ORIGIN' in gdb_compile, and
this:
...
if { [is_remote host] } {
lappend new_options "ldflags=-Wl,-rpath,\\\\\$ORIGIN"
} else {
lappend new_options "ldflags=-Wl,-rpath,\\\$ORIGIN"
}
...
seems to be the only fix available.
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug testsuite/16947] Fail to compile test case when board file local-remote-host.exp is used
2014-05-15 8:38 [Bug testsuite/16947] New: Fail to compile test case when board file local-remote-host.exp is used qiyao at gcc dot gnu.org
2014-05-15 8:47 ` [Bug testsuite/16947] " qiyao at gcc dot gnu.org
2022-11-05 10:53 ` vries at gcc dot gnu.org
@ 2022-11-05 10:56 ` vries at gcc dot gnu.org
2022-11-05 14:06 ` vries at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: vries at gcc dot gnu.org @ 2022-11-05 10:56 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=16947
--- Comment #3 from Tom de Vries <vries at gcc dot gnu.org> ---
Note btw that the originally mentioned test-case foll-exec.exp doesn't work
with remote target, and needs:
...
diff --git a/gdb/testsuite/gdb.base/foll-exec.exp
b/gdb/testsuite/gdb.base/foll-exec.exp
index 8cddfa52c3b..a3d1a8781e9 100644
--- a/gdb/testsuite/gdb.base/foll-exec.exp
+++ b/gdb/testsuite/gdb.base/foll-exec.exp
@@ -36,6 +36,10 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile2}"
"${binfile2}"
executable $c
return -1
}
+if { [is_remote target] } {
+ gdb_remote_download target $binfile2
+}
+
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable
$compile_options]
!= "" } {
untested "failed to compile"
return -1
...
to get $binfile2 alongside $binfile on the remote target.
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug testsuite/16947] Fail to compile test case when board file local-remote-host.exp is used
2014-05-15 8:38 [Bug testsuite/16947] New: Fail to compile test case when board file local-remote-host.exp is used qiyao at gcc dot gnu.org
` (2 preceding siblings ...)
2022-11-05 10:56 ` vries at gcc dot gnu.org
@ 2022-11-05 14:06 ` vries at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: vries at gcc dot gnu.org @ 2022-11-05 14:06 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=16947
--- Comment #4 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to Tom de Vries from comment #2)
> But ultimately, we run into the same problem with '$ORIGIN' in gdb_compile,
> and this:
> ...
> if { [is_remote host] } {
> lappend new_options "ldflags=-Wl,-rpath,\\\\\$ORIGIN"
> } else {
> lappend new_options "ldflags=-Wl,-rpath,\\\$ORIGIN"
> }
> ...
> seems to be the only fix available.
And this is a way to fix this at board level:
...
diff --git a/gdb/testsuite/boards/local-remote-host.exp
b/gdb/testsuite/boards/local-remote
-host.exp
index fc87dd48014..36f152b8749 100644
--- a/gdb/testsuite/boards/local-remote-host.exp
+++ b/gdb/testsuite/boards/local-remote-host.exp
@@ -68,4 +68,10 @@ proc ${board}_spawn { board cmd } {
return $spawn_id
}
+proc ${board}_exec { boardname program pargs inp outp } {
+ set program [regsub -all {"} $program {\\\\"}]
+ set program [regsub -all {\\\$} $program {\\\\$}]
+ return [rsh_exec $boardname $program $pargs $inp $outp]
+}
+
set GDBFLAGS "${GDBFLAGS} -iex \"set style enabled off\""
...
This makes gdb.base/print-file-var.exp pass, which uses both $ORIGIN and
SHLIB_NAME.
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-11-05 14:06 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-05-15 8:38 [Bug testsuite/16947] New: Fail to compile test case when board file local-remote-host.exp is used qiyao at gcc dot gnu.org
2014-05-15 8:47 ` [Bug testsuite/16947] " qiyao at gcc dot gnu.org
2022-11-05 10:53 ` vries at gcc dot gnu.org
2022-11-05 10:56 ` vries at gcc dot gnu.org
2022-11-05 14:06 ` vries at gcc dot gnu.org
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).