From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2205) id 9BD563896C09; Tue, 15 Nov 2022 14:25:20 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9BD563896C09 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1668522320; bh=coHgsjoLG+fYtOjcWjKCmqdXd90WFDoT8J/6hJbHoik=; h=From:To:Subject:Date:From; b=a0HHijxJJGdt/4MnklYxJ+7DDqIR8evpMCunvhxWY75yK8cObEewTTlXpX8fn/YKf RhaRe9mcQ7ppVdA/bbLsmmWn3xfBbBAmdKsUKTnzSEsoUW1pkhj2iL1anpr4iskt+I 0x0VQvRBJbP0wP52pW1FHJcTpoHSWN9UCd0fqcIE= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Tom de Vries To: gdb-cvs@sourceware.org Subject: [binutils-gdb] [gdb/testsuite] Fix gdb.base/infcall-exec.exp for remote target X-Act-Checkin: binutils-gdb X-Git-Author: Tom de Vries X-Git-Refname: refs/heads/master X-Git-Oldrev: 4b4f2a7d2551ecb98dbb3fbfff3e3ba177916f78 X-Git-Newrev: 3b35fb7cd0e2eeba611baf503d078fa395ebe1a8 Message-Id: <20221115142520.9BD563896C09@sourceware.org> Date: Tue, 15 Nov 2022 14:25:20 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D3b35fb7cd0e2= eeba611baf503d078fa395ebe1a8 commit 3b35fb7cd0e2eeba611baf503d078fa395ebe1a8 Author: Tom de Vries Date: Tue Nov 15 15:24:54 2022 +0100 [gdb/testsuite] Fix gdb.base/infcall-exec.exp for remote target =20 When running test-case gdb.base/infcall-exec.exp with target board remote-gdbserver-on-localhost (using REMOTE_TARGET_USERNAME) we run int= o: ... (gdb) call (int) execlp ("$outputs/gdb.base/infcall-exec/infcall-exec2"= , \ "$outputs/gdb.base/infcall-exec/infcall-exec2", (char *)0)^M $1 =3D -1^M (gdb) FAIL: gdb.base/infcall-exec.exp: call execlp ... =20 Fix this by using just: ... (gdb) call (int) execlp ("infcall-exec2", "infcall-exec2", (char *)0)^M ... and using putenv ("PATH=3D...") to allow infcall-exec to exec infcall-e= xec2 if it's available alongside. =20 Also fix the exec name in the test-case, such that we can successfully run the test-case: ... $ ./outputs/gdb.base/infcall-exec/infcall-exec PATH SETTING: 'PATH=3D./outputs/gdb.base/infcall-exec' $ ... =20 Tested on x86_64-linux. =20 Co-Authored-by: Ivan Tetyushkin Diff: --- gdb/testsuite/gdb.base/infcall-exec.c | 48 +++++++++++++++++++++++++++++= ++-- gdb/testsuite/gdb.base/infcall-exec.exp | 10 ++++++- 2 files changed, 55 insertions(+), 3 deletions(-) diff --git a/gdb/testsuite/gdb.base/infcall-exec.c b/gdb/testsuite/gdb.base= /infcall-exec.c index 75b629872d0..49c1f40a8d9 100644 --- a/gdb/testsuite/gdb.base/infcall-exec.c +++ b/gdb/testsuite/gdb.base/infcall-exec.c @@ -16,13 +16,57 @@ along with this program. If not, see . = */ =20 #include +#include +#include +#include +#include +#include + +static void +set_path (int argc, char ** argv) +{ + if (argc < 1) + return; + + char path[PATH_MAX]; + strcpy (path, argv[0]); + int len =3D strlen (path); + + /* Make a path name out of an exec name. */ + int i; + for (i =3D len - 1; i >=3D 0; i--) + { + char c =3D path[i]; + if (c =3D=3D '/' || c =3D=3D '\\') + { + path[i] =3D '\0'; + break; + } + } + len =3D i; + + if (len =3D=3D 0) + return; + + /* Prefix with "PATH=3D". */ + const char *prefix =3D "PATH=3D"; + int prefix_len =3D strlen (prefix); + memmove (path + prefix_len, path, len); + path[prefix_len + len] =3D '\0'; + memcpy (path, prefix, prefix_len); + + printf ("PATH SETTING: '%s'\n", path); + putenv (path); +} =20 int main (int argc, char ** argv) { - const char *prog =3D "inf-exec2"; + set_path (argc, argv); + const char *prog =3D "infcall-exec2"; =20 - execlp (prog, prog, (char *) 0); + int res =3D execlp (prog, prog, (char *) 0); /* break here */ + assert (res !=3D -1); =20 return 0; } diff --git a/gdb/testsuite/gdb.base/infcall-exec.exp b/gdb/testsuite/gdb.ba= se/infcall-exec.exp index e8f6a218c36..033dacb5e88 100644 --- a/gdb/testsuite/gdb.base/infcall-exec.exp +++ b/gdb/testsuite/gdb.base/infcall-exec.exp @@ -32,13 +32,21 @@ if {[gdb_compile $srcdir/$subdir/$srcfile2 $binfile2 ex= ecutable debug] !=3D ""} { return -1 } =20 +if { [is_remote target] } { + set binfile2 [gdb_remote_download target $binfile2] +} + clean_restart $binfile =20 if {![runto_main]} { return -1 } =20 -set expected_result "process $decimal is executing new program: $binfile2" +set linenr [gdb_get_line_number "break here"] +gdb_breakpoint $linenr +gdb_continue_to_breakpoint "Ensure PATH is set" ".* break here .*" + +set expected_result "process $decimal is executing new program: \[^\r\n\]*= $binfile2" append expected_result "\[\r\n\]+.*" append expected_result "Breakpoint 1, main .*at .*$srcfile2:$decimal" append expected_result ".*"