diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/testsuite/ChangeLog | 30 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/foll-exec-mode.c | 13 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/foll-exec-mode.exp | 2 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/foll-exec.c | 26 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/foll-exec.exp | 24 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/foll-vfork-exit.c | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/foll-vfork.c | 22 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/foll-vfork.exp | 8 | ||||
-rw-r--r-- | gdb/testsuite/gdb.multi/bkpt-multi-exec.c | 16 | ||||
-rw-r--r-- | gdb/testsuite/gdb.multi/bkpt-multi-exec.exp | 2 | ||||
-rw-r--r-- | gdb/testsuite/gdb.multi/multi-arch-exec.c | 17 | ||||
-rw-r--r-- | gdb/testsuite/gdb.multi/multi-arch-exec.exp | 4 |
12 files changed, 130 insertions, 39 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index ab74e6e..046f112 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,33 @@ +2016-02-04 Yao Qi <yao.qi@linaro.org> + + * gdb.base/foll-exec-mode.c: Include limits.h. + (main): Add parameters argc and argv. Get directory from + argv[0]. + * gdb.base/foll-exec-mode.exp: Don't pass -DBASEDIR in + compilation. + * gdb.base/foll-exec.c: Include limits.h. + (main): Add parameters argc and argv. + Get directory from argv[0]. + * gdb.base/foll-exec.exp: Don't pass -DBASEDIR in compilation. + Adjust tests on the number of lines as source code changed. + * gdb.base/foll-vfork-exit.c: Include limits.h. + (main): Add one line of statement before vfork. + * gdb.base/foll-vfork.c: Include limits.h and string.h. + (main): Add parameters argc and argv. Get directory from + argv[0]. + * gdb.base/foll-vfork.exp: Don't pass -DBASEDIR in compilation. + (setup_gdb): Set tbreak to skip some source lines. + * gdb.multi/bkpt-multi-exec.c: Include limits.h. + (main): Add parameters argc and argv. Get directory from + argv[0]. + * gdb.multi/bkpt-multi-exec.exp: Don't pass -DBASEDIR in + compilation. + * gdb.multi/multi-arch-exec.c: Include limits.h and string.h. + (main): Add parameters argc and argv. Get directory from + argv[0]. + * gdb.multi/multi-arch-exec.exp: Don't pass -DBASEDIR in + compilation. + 2016-02-01 Doug Evans <dje@google.com> * gdb.base/skip.exp: Clean up multiple references to same test name. diff --git a/gdb/testsuite/gdb.base/foll-exec-mode.c b/gdb/testsuite/gdb.base/foll-exec-mode.c index 1a482a5..67686d7 100644 --- a/gdb/testsuite/gdb.base/foll-exec-mode.c +++ b/gdb/testsuite/gdb.base/foll-exec-mode.c @@ -19,17 +19,26 @@ #include <stdlib.h> #include <unistd.h> #include <string.h> +#include <limits.h> int global_i = 100; -int main (void) +int main (int argc, char ** argv) { int local_j = global_i + 1; int local_k = local_j + 1; + char prog[PATH_MAX]; + int len; + + strcpy (prog, argv[0]); + len = strlen (prog); + /* Replace "foll-exec-mode" with "execd-prog". */ + memcpy (prog + len - 14, "execd-prog", 10); + prog[len - 4] = 0; printf ("foll-exec is about to execlp(execd-prog)...\n"); - execlp (BASEDIR "/execd-prog", /* Set breakpoint here. */ + execlp (prog, /* Set breakpoint here. */ "/execd-prog", "execlp arg1 from foll-exec", (char *) 0); diff --git a/gdb/testsuite/gdb.base/foll-exec-mode.exp b/gdb/testsuite/gdb.base/foll-exec-mode.exp index 41d788b..aa7b4143 100644 --- a/gdb/testsuite/gdb.base/foll-exec-mode.exp +++ b/gdb/testsuite/gdb.base/foll-exec-mode.exp @@ -46,8 +46,6 @@ set srcfile2 ${testfile2}.c set binfile2 [standard_output_file ${testfile2}] set compile_options debug -set dirname [relative_filename [pwd] [file dirname $binfile]] -lappend compile_options "additional_flags=-DBASEDIR=\"$dirname\"" # build the first test case if { [gdb_compile "${srcdir}/${subdir}/${srcfile2}" "${binfile2}" executable $compile_options] != "" } { diff --git a/gdb/testsuite/gdb.base/foll-exec.c b/gdb/testsuite/gdb.base/foll-exec.c index 639698c..1ae171f 100644 --- a/gdb/testsuite/gdb.base/foll-exec.c +++ b/gdb/testsuite/gdb.base/foll-exec.c @@ -20,36 +20,48 @@ #include <unistd.h> #include <string.h> +#include <limits.h> + int global_i = 100; -int main (void) +int main (int argc, char ** argv) { int local_j = global_i + 1; int local_k = local_j + 1; + char prog[PATH_MAX]; + int len; printf ("foll-exec is about to execlp(execd-prog)...\n"); - execlp (BASEDIR "/execd-prog", - BASEDIR "/execd-prog", + strcpy (prog, argv[0]); + len = strlen (prog); + /* Replace "foll-exec" with "execd-prog". */ + memcpy (prog + len - 9, "execd-prog", 10); + prog[len + 1] = 0; + + execlp (prog, /* tbreak-execlp */ + 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 (prog, /* tbreak-execl */ + prog, "execl arg1 from foll-exec", "execl arg2 from foll-exec", (char *) 0); { static char * argv[] = { - (char *) BASEDIR "/execd-prog", + (char *) "", (char *) "execv arg1 from foll-exec", (char *) 0}; + argv[0] = prog; + printf ("foll-exec is about to execv(execd-prog)...\n"); - execv (BASEDIR "/execd-prog", argv); /* tbreak-execv */ + execv (prog, argv); /* tbreak-execv */ } } diff --git a/gdb/testsuite/gdb.base/foll-exec.exp b/gdb/testsuite/gdb.base/foll-exec.exp index 7d86d01..8859f9f 100644 --- a/gdb/testsuite/gdb.base/foll-exec.exp +++ b/gdb/testsuite/gdb.base/foll-exec.exp @@ -29,8 +29,6 @@ set srcfile2 ${testfile2}.c set binfile2 [standard_output_file ${testfile2}] set compile_options debug -set dirname [relative_filename [pwd] [file dirname $binfile]] -lappend compile_options "additional_flags=-DBASEDIR=\"$dirname\"" # build the first test case if { [gdb_compile "${srcdir}/${subdir}/${srcfile2}" "${binfile2}" executable $compile_options] != "" } { @@ -80,19 +78,17 @@ proc do_exec_tests {} { fail "Couldn't run ${testfile}" return } + # Execute the code setting up variable PROG. + set tbreak_line [gdb_get_line_number " tbreak-execlp " $srcfile] + gdb_test "tbreak ${tbreak_line}" + gdb_continue_to_breakpoint "line tbreak-execlp" ".*execlp \\(.*" # Verify that we can see various global and local variables # in this program, and that they have expected values. Some # of these variables are also declared in the program we'll # exec in a moment. # - send_gdb "next 3\n" - gdb_expect { - -re "execlp \\(.*$gdb_prompt $"\ - {pass "step to exec call"} - -re "$gdb_prompt $" {fail "step to exec call"} - timeout {fail "(timeout) step to exec call"} - } + send_gdb "print global_i\n" gdb_expect { -re ".* = 100.*$gdb_prompt $"\ @@ -238,11 +234,15 @@ proc do_exec_tests {} { fail "Couldn't run ${testfile} (3rd try)" return } + # Execute the code setting up variable PROG. + set tbreak_line [gdb_get_line_number " tbreak-execlp " $srcfile] + gdb_test "tbreak ${tbreak_line}" + gdb_continue_to_breakpoint "line tbreak-execlp" ".*execlp \\(.*" # Verify that we can follow through follow an execl() # call. (We must jump around earlier exec* calls.) # - set tbreak_line [gdb_get_line_number "tbreak-execl" $srcfile] + set tbreak_line [gdb_get_line_number " tbreak-execl " $srcfile] send_gdb "tbreak ${tbreak_line}\n" gdb_expect { -re "Temporary breakpoint .*file .*${srcfile}, line ${tbreak_line}.*$gdb_prompt $"\ @@ -299,6 +299,10 @@ proc do_exec_tests {} { fail "Couldn't run ${testfile} (4th try)" return } + # Execute the code setting up variable PROG. + set tbreak_line [gdb_get_line_number " tbreak-execlp " $srcfile] + gdb_test "tbreak ${tbreak_line}" + gdb_continue_to_breakpoint "line tbreak-execlp" ".*execlp \\(.*" # Verify that we can follow through follow an execv() # call. (We must jump around earlier exec* calls.) diff --git a/gdb/testsuite/gdb.base/foll-vfork-exit.c b/gdb/testsuite/gdb.base/foll-vfork-exit.c index 6f168e2..c431ded 100644 --- a/gdb/testsuite/gdb.base/foll-vfork-exit.c +++ b/gdb/testsuite/gdb.base/foll-vfork-exit.c @@ -23,7 +23,10 @@ main () { int pid; - pid = vfork (); + /* A statement before vfork to make sure a breakpoint on main isn't + set on vfork below. */ + pid = 1; + pid = vfork (); /* VFORK */ if (pid == 0) { printf ("I'm the child!\n"); diff --git a/gdb/testsuite/gdb.base/foll-vfork.c b/gdb/testsuite/gdb.base/foll-vfork.c index 24b2a53..5949d45 100644 --- a/gdb/testsuite/gdb.base/foll-vfork.c +++ b/gdb/testsuite/gdb.base/foll-vfork.c @@ -18,14 +18,30 @@ #include <stdio.h> #include <unistd.h> -int main (void) +#include <limits.h> +#include <string.h> + +int +main (int argc, char ** argv) { int pid; - pid = vfork (); + /* A statement before vfork to make sure a breakpoint on main isn't + set on vfork below. */ + pid = 1 + argc; + pid = vfork (); /* VFORK */ if (pid == 0) { + char prog[PATH_MAX]; + int len; + + strcpy (prog, argv[0]); + len = strlen (prog); + /* Replace "foll-vfork" with "vforked-prog". */ + memcpy (prog + len - 10, "vforked-prog", 12); + prog[len + 2] = 0; + printf ("I'm the child!\n"); - execlp (BASEDIR "/vforked-prog", BASEDIR "/vforked-prog", (char *)0); + execlp (prog, prog, (char *) 0); perror ("exec failed"); _exit (1); } diff --git a/gdb/testsuite/gdb.base/foll-vfork.exp b/gdb/testsuite/gdb.base/foll-vfork.exp index bf9b893..481dcb7 100644 --- a/gdb/testsuite/gdb.base/foll-vfork.exp +++ b/gdb/testsuite/gdb.base/foll-vfork.exp @@ -28,8 +28,6 @@ if {![istarget "*-linux*"]} then { standard_testfile set compile_options debug -set dirname [relative_filename [pwd] [file dirname $binfile]] -lappend compile_options "additional_flags=-DBASEDIR=\"$dirname\"" if {[build_executable $testfile.exp $testfile $srcfile $compile_options] == -1} { untested "failed to compile $testfile" @@ -53,7 +51,7 @@ set timeout [expr "$timeout + 10"] # error, behave as "return", so we don't try to continue testing with # a borked session. proc setup_gdb {} { - global testfile + global testfile srcfile clean_restart $testfile @@ -64,6 +62,10 @@ proc setup_gdb {} { if ![runto_main] { return -code return } + + set tbreak_line [gdb_get_line_number " VFORK " $srcfile] + gdb_test "tbreak ${tbreak_line}" + gdb_continue_to_breakpoint ".*" } proc check_vfork_catchpoints {} { diff --git a/gdb/testsuite/gdb.multi/bkpt-multi-exec.c b/gdb/testsuite/gdb.multi/bkpt-multi-exec.c index 94c9668..eb002fb 100644 --- a/gdb/testsuite/gdb.multi/bkpt-multi-exec.c +++ b/gdb/testsuite/gdb.multi/bkpt-multi-exec.c @@ -2,12 +2,22 @@ #include <stdlib.h> #include <unistd.h> #include <string.h> +#include <limits.h> -int main (void) +int main (int argc, char ** argv) { + char prog[PATH_MAX]; + int len; + + strcpy (prog, argv[0]); + len = strlen (prog); + /* Replace "bkpt-multi-exec" with "crashme". */ + memcpy (prog + len - 15, "crashme", 7); + prog[len - 8] = 0; + printf ("foll-exec is about to execl(crashme)...\n"); - execl (BASEDIR "/crashme", - BASEDIR "/crashme", + execl (prog, + prog, (char *)0); } diff --git a/gdb/testsuite/gdb.multi/bkpt-multi-exec.exp b/gdb/testsuite/gdb.multi/bkpt-multi-exec.exp index b7662df..e522413 100644 --- a/gdb/testsuite/gdb.multi/bkpt-multi-exec.exp +++ b/gdb/testsuite/gdb.multi/bkpt-multi-exec.exp @@ -34,8 +34,6 @@ set srcfile2 ${exec2}.c set binfile2 [standard_output_file ${exec2}] set compile_options {debug} -set dirname [relative_filename [pwd] [file dirname $binfile1]] -lappend compile_options "additional_flags=-DBASEDIR=\"$dirname\"" if { [build_executable ${testfile}.exp ${exec1} "${srcfile1}" $compile_options] == -1 } { return -1 diff --git a/gdb/testsuite/gdb.multi/multi-arch-exec.c b/gdb/testsuite/gdb.multi/multi-arch-exec.c index 864e264..168b484 100644 --- a/gdb/testsuite/gdb.multi/multi-arch-exec.c +++ b/gdb/testsuite/gdb.multi/multi-arch-exec.c @@ -18,12 +18,23 @@ #include <stdlib.h> #include <stdio.h> #include <unistd.h> +#include <limits.h> +#include <string.h> int -main () +main (int argc, char ** argv) { - execl (BASEDIR "/multi-arch-exec-hello", - BASEDIR "/multi-arch-exec-hello", + char prog[PATH_MAX]; + int len; + + strcpy (prog, argv[0]); + len = strlen (prog); + /* Replace "multi-arch-exec" with "multi-arch-exec-hello". */ + memcpy (prog + len - 15, "multi-arch-exec-hello", 21); + prog[len + 6] = 0; + + execl (prog, + prog, (char *) NULL); perror ("execl failed"); exit (1); diff --git a/gdb/testsuite/gdb.multi/multi-arch-exec.exp b/gdb/testsuite/gdb.multi/multi-arch-exec.exp index 5e9b59a..88e5a62 100644 --- a/gdb/testsuite/gdb.multi/multi-arch-exec.exp +++ b/gdb/testsuite/gdb.multi/multi-arch-exec.exp @@ -52,11 +52,9 @@ if [istarget "s390*-*-*"] { set march2 "-m32" } -set dirname [relative_filename [pwd] [file dirname $binfile2]] if { [prepare_for_testing ${testfile}.exp ${exec1} "${srcfile1}" \ [list debug \ - additional_flags=${march1} \ - additional_flags=-DBASEDIR=\"$dirname\"]] } { + additional_flags=${march1}]] } { return -1 } |