2fd33e9448
This patch updates several exec-related tests and some of the library functions in order to get them running with extended-remote. There were three changes that were required, as follows: In gdb.base/foll-exec.exp, use 'clean_start' in place of proc 'zap_session' to reset the state of the debugger between tests. This sets 'remote exec-file' to execute the correct binary file in each subsequent test. In gdb.base/pie-execl.exp, there is an expect statement with an expression that is used to match output from both gdb and the program under debug. For the remote target, this had to be split into two expressions, using $inferior_spawn_id to match the output from the program. Because I had encountered problems with extended-remote exec events in non-stop mode in my manual testing, I added non-stop testing to the non-ldr-exc-[1234].exp tests. In order to set non-stop mode for remote targets, it is necessary to 'set non-stop on' after gdb has started, but before it connects to gdbserver. This is done using 'save_vars' to set non-stop mode in GDBFLAGS, so GDB sets non-stop mode on startup. gdb/testsuite/ChangeLog: * gdb.base/foll-exec.c: Add copyright header. Fix formatting issues. * gdb.base/foll-exec.exp (zap_session): Delete proc. (do_exec_tests): Use clean_restart in place of zap_session, and for test initialization. Fix formatting issues. Use fail in place of perror. * gdb.base/pie-execl.exp (main): Use 'inferior_spawn_id' in an expect statement to match an expression with output from the program under debug. * gdb.threads/non-ldr-exc-1.exp (do_test, main): Add non-stop tests and pass stop mode argument to clean_restart. Use save_vars to enable non-stop in GDBFLAGS. * gdb.threads/non-ldr-exc-2.exp: Likewise. * gdb.threads/non-ldr-exc-3.exp: Likewise. * gdb.threads/non-ldr-exc-4.exp: Likewise.
55 lines
1.5 KiB
C
55 lines
1.5 KiB
C
/* This test program is part of GDB, the GNU debugger.
|
|
|
|
Copyright 1997-2015 Free Software Foundation, Inc.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#include <string.h>
|
|
|
|
int global_i = 100;
|
|
|
|
int main (void)
|
|
{
|
|
int local_j = global_i + 1;
|
|
int local_k = local_j + 1;
|
|
|
|
printf ("foll-exec is about to execlp(execd-prog)...\n");
|
|
|
|
execlp (BASEDIR "/execd-prog",
|
|
BASEDIR "/execd-prog",
|
|
"execlp arg1 from foll-exec",
|
|
(char *) 0);
|
|
|
|
printf ("foll-exec is about to execl(execd-prog)...\n");
|
|
|
|
execl (BASEDIR "/execd-prog", /* tbreak-execl */
|
|
BASEDIR "/execd-prog",
|
|
"execl arg1 from foll-exec",
|
|
"execl arg2 from foll-exec",
|
|
(char *) 0);
|
|
|
|
{
|
|
static char * argv[] = {
|
|
(char *) BASEDIR "/execd-prog",
|
|
(char *) "execv arg1 from foll-exec",
|
|
(char *) 0};
|
|
|
|
printf ("foll-exec is about to execv(execd-prog)...\n");
|
|
|
|
execv (BASEDIR "/execd-prog", argv); /* tbreak-execv */
|
|
}
|
|
}
|