mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-12-14 15:50:34 +00:00
gdb/testsuite/
* gdb.base/break-interp-lib.c: Include unistd.h, assert.h and stdio.h. (libfunc): New parameter action. Implement also selectable "sleep". * gdb.base/break-interp-main.c: Include assert.h. (libfunc): New parameter action. (main): New parameters argc and argv. Assert argc. Pass argv. * gdb.base/break-interp.exp (test_core): Pass the "segv" argument. (test_attach): New proc. (test_ld): Pass new "segv" exec parameter. Call also test_attach. * lib/gdb.exp (core_find): New parameter arg. Pass it to $binfile.
This commit is contained in:
parent
61f0d76280
commit
bbfba9ed15
@ -1,3 +1,15 @@
|
||||
2010-01-14 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* gdb.base/break-interp-lib.c: Include unistd.h, assert.h and stdio.h.
|
||||
(libfunc): New parameter action. Implement also selectable "sleep".
|
||||
* gdb.base/break-interp-main.c: Include assert.h.
|
||||
(libfunc): New parameter action.
|
||||
(main): New parameters argc and argv. Assert argc. Pass argv.
|
||||
* gdb.base/break-interp.exp (test_core): Pass the "segv" argument.
|
||||
(test_attach): New proc.
|
||||
(test_ld): Pass new "segv" exec parameter. Call also test_attach.
|
||||
* lib/gdb.exp (core_find): New parameter arg. Pass it to $binfile.
|
||||
|
||||
2010-01-14 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* gdb.base/break-interp.exp (test_core): New proc.
|
||||
|
@ -16,9 +16,25 @@
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <signal.h>
|
||||
#include <unistd.h>
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
|
||||
void
|
||||
libfunc (void)
|
||||
libfunc (const char *action)
|
||||
{
|
||||
raise (SIGSEGV);
|
||||
assert (action != NULL);
|
||||
|
||||
if (strcmp (action, "segv") == 0)
|
||||
raise (SIGSEGV);
|
||||
|
||||
if (strcmp (action, "sleep") == 0)
|
||||
{
|
||||
puts ("sleeping");
|
||||
fflush (stdout);
|
||||
|
||||
sleep (60);
|
||||
}
|
||||
|
||||
assert (0);
|
||||
}
|
||||
|
@ -15,12 +15,16 @@
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
extern void libfunc (void);
|
||||
#include <assert.h>
|
||||
|
||||
extern void libfunc (const char *action);
|
||||
|
||||
int
|
||||
main (void)
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
libfunc ();
|
||||
assert (argc == 2);
|
||||
|
||||
libfunc (argv[1]);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -240,7 +240,7 @@ proc reach {func command} {
|
||||
proc test_core {file} {
|
||||
global srcdir subdir gdb_prompt
|
||||
|
||||
set corefile [core_find $file]
|
||||
set corefile [core_find $file {} "segv"]
|
||||
if {$corefile == ""} {
|
||||
return
|
||||
}
|
||||
@ -258,6 +258,44 @@ proc test_core {file} {
|
||||
gdb_test "bt" "#\[0-9\]+ +\[^\r\n\]*\\mlibfunc\\M\[^\r\n\]*\r\n#\[0-9\]+ +\[^\r\n\]*\\mmain\\M.*" "core main bt"
|
||||
}
|
||||
|
||||
proc test_attach {file} {
|
||||
global board_info
|
||||
|
||||
gdb_exit
|
||||
|
||||
set test "sleep function started"
|
||||
|
||||
set command "${file} sleep"
|
||||
set res [remote_spawn host $command];
|
||||
if { $res < 0 || $res == "" } {
|
||||
perror "Spawning $command failed."
|
||||
fail $test
|
||||
return
|
||||
}
|
||||
set pid [exp_pid -i $res]
|
||||
gdb_expect {
|
||||
-re "sleeping\r\n" {
|
||||
pass $test
|
||||
}
|
||||
eof {
|
||||
fail "$test (eof)"
|
||||
return
|
||||
}
|
||||
timeout {
|
||||
fail "$test (timeout)"
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
gdb_exit
|
||||
gdb_start
|
||||
gdb_test "attach $pid" "Attaching to process $pid\r\n.*" "attach"
|
||||
gdb_test "bt" "#\[0-9\]+ +\[^\r\n\]*\\mlibfunc\\M\[^\r\n\]*\r\n#\[0-9\]+ +\[^\r\n\]*\\mmain\\M.*" "attach main bt"
|
||||
gdb_exit
|
||||
|
||||
remote_exec host "kill -9 $pid"
|
||||
}
|
||||
|
||||
proc test_ld {file ifmain trynosym} {
|
||||
global srcdir subdir gdb_prompt
|
||||
|
||||
@ -270,7 +308,7 @@ proc test_ld {file ifmain trynosym} {
|
||||
gdb_reinitialize_dir $srcdir/$subdir
|
||||
gdb_load $file
|
||||
|
||||
reach "dl_main" run
|
||||
reach "dl_main" "run segv"
|
||||
|
||||
gdb_test "bt" "#0 +\[^\r\n\]*\\mdl_main\\M.*" "dl bt"
|
||||
|
||||
@ -282,6 +320,8 @@ proc test_ld {file ifmain trynosym} {
|
||||
gdb_test "bt" "#0 +\[^\r\n\]*\\mlibfunc\\M\[^\r\n\]*\r\n#1 +\[^\r\n\]*\\mmain\\M.*" "main bt"
|
||||
|
||||
test_core $file
|
||||
|
||||
test_attach $file
|
||||
}
|
||||
|
||||
if !$trynosym {
|
||||
|
@ -3121,7 +3121,7 @@ if {[info exists TRANSCRIPT]} {
|
||||
}
|
||||
}
|
||||
|
||||
proc core_find {binfile {deletefiles {}}} {
|
||||
proc core_find {binfile {deletefiles {}} {arg ""}} {
|
||||
global objdir subdir
|
||||
|
||||
set destcore "$binfile.core"
|
||||
@ -3143,7 +3143,7 @@ proc core_find {binfile {deletefiles {}}} {
|
||||
set found 0
|
||||
set coredir "${objdir}/${subdir}/coredir.[getpid]"
|
||||
file mkdir $coredir
|
||||
catch "system \"(cd ${coredir}; ulimit -c unlimited; ${binfile}; true) >/dev/null 2>&1\""
|
||||
catch "system \"(cd ${coredir}; ulimit -c unlimited; ${binfile} ${arg}; true) >/dev/null 2>&1\""
|
||||
# remote_exec host "${binfile}"
|
||||
foreach i "${coredir}/core ${coredir}/core.coremaker.c ${binfile}.core" {
|
||||
if [remote_file build exists $i] {
|
||||
|
Loading…
Reference in New Issue
Block a user