mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-24 20:49:43 +00:00
2004-08-27 Michael Chastain <mec.gnu@mindspring.com>
With code from Manoj Iyer <manjo@austin.ibm.com>: * lib/gdb.exp (gdb_file_cmd): Return more information in the return value. Add an arm for "no debugging symbols found". Change a stray "error" to "perror". (gdb_run_cmd): Adapt to new return value. * gdb.base/remote.exp: Adapt to new return value. * gdb.gdb/complaints.exp: Likewise. * gdb.gdb/observer.exp: Likewise. * gdb.gdb/selftest.exp: Likewise. * gdb.gdb/xfullpath.exp: Likewise.
This commit is contained in:
parent
0873df2aec
commit
3e3ffd2b74
@ -1,3 +1,16 @@
|
||||
2004-08-27 Michael Chastain <mec.gnu@mindspring.com>
|
||||
|
||||
With code from Manoj Iyer <manjo@austin.ibm.com>:
|
||||
* lib/gdb.exp (gdb_file_cmd): Return more information in the
|
||||
return value. Add an arm for "no debugging symbols found".
|
||||
Change a stray "error" to "perror".
|
||||
(gdb_run_cmd): Adapt to new return value.
|
||||
* gdb.base/remote.exp: Adapt to new return value.
|
||||
* gdb.gdb/complaints.exp: Likewise.
|
||||
* gdb.gdb/observer.exp: Likewise.
|
||||
* gdb.gdb/selftest.exp: Likewise.
|
||||
* gdb.gdb/xfullpath.exp: Likewise.
|
||||
|
||||
2004-08-27 Joel Brobecker <brobecker@gnat.com>
|
||||
|
||||
* gdb.threads/bp_in_thread.exp: New testcase.
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright 1999, 2001 Free Software Foundation, Inc.
|
||||
# Copyright 1999, 2001, 2004 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
|
||||
@ -119,7 +119,10 @@ proc gdb_load_timed {executable downloadsize class writesize} {
|
||||
set load_begin_time [clock clicks]
|
||||
set result [gdb_load $executable]
|
||||
set load_end_time [clock clicks]
|
||||
if {$result < 0} then { fail "$test - loading executable"; return }
|
||||
if { [lindex $result 0] != "" } then {
|
||||
fail "$test - loading executable"
|
||||
return
|
||||
}
|
||||
verbose "$test - time [expr ($load_end_time - $load_begin_time) / 1000] ms"
|
||||
pass $test
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright 2002
|
||||
# Free Software Foundation, Inc.
|
||||
# Copyright 2002, 2004
|
||||
# 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
|
||||
@ -15,9 +15,6 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
# Please email any bugs, comments, and/or additions to this file to:
|
||||
# bug-gdb@prep.ai.mit.edu
|
||||
|
||||
# This file was written by Andrew Cagney (cagney at redhat dot com),
|
||||
# derived from xfullpath.exp (written by Joel Brobecker), derived from
|
||||
# selftest.exp (written by Rob Savoye).
|
||||
@ -51,14 +48,15 @@ proc setup_test { executable } {
|
||||
set oldtimeout $timeout
|
||||
set timeout 600
|
||||
verbose "Timeout is now $timeout seconds" 2
|
||||
if {[gdb_load $executable] <0} then {
|
||||
set timeout $oldtimeout
|
||||
verbose "Timeout is now $timeout seconds" 2
|
||||
return -1
|
||||
}
|
||||
|
||||
set result [gdb_load $executable]
|
||||
set timeout $oldtimeout
|
||||
verbose "Timeout is now $timeout seconds" 2
|
||||
|
||||
if { [lindex $result 0] != "" } then {
|
||||
return -1
|
||||
}
|
||||
|
||||
# Set a breakpoint at main
|
||||
gdb_test "break captured_command_loop" \
|
||||
"Breakpoint.*at.* file.*, line.*" \
|
||||
|
@ -46,14 +46,15 @@ proc setup_test { executable } {
|
||||
set oldtimeout $timeout
|
||||
set timeout 600
|
||||
verbose "Timeout is now $timeout seconds" 2
|
||||
if {[gdb_load $executable] <0} then {
|
||||
set timeout $oldtimeout
|
||||
verbose "Timeout is now $timeout seconds" 2
|
||||
return -1
|
||||
}
|
||||
|
||||
set result [gdb_load $executable]
|
||||
set timeout $oldtimeout
|
||||
verbose "Timeout is now $timeout seconds" 2
|
||||
|
||||
if { [lindex $result 0] != "" } then {
|
||||
return -1
|
||||
}
|
||||
|
||||
# Set a breakpoint at main
|
||||
gdb_test "break captured_main" \
|
||||
"Breakpoint.*at.* file.*, line.*" \
|
||||
|
@ -15,9 +15,6 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
# Please email any bugs, comments, and/or additions to this file to:
|
||||
# bug-gdb@prep.ai.mit.edu
|
||||
|
||||
# This file was written by Rob Savoye. (rob@cygnus.com)
|
||||
|
||||
if $tracelevel then {
|
||||
@ -243,14 +240,15 @@ proc test_with_self { executable } {
|
||||
set oldtimeout $timeout
|
||||
set timeout 600
|
||||
verbose "Timeout is now $timeout seconds" 2
|
||||
if {[gdb_load $executable] <0} then {
|
||||
set timeout $oldtimeout
|
||||
verbose "Timeout is now $timeout seconds" 2
|
||||
return -1
|
||||
}
|
||||
|
||||
set result [gdb_load $executable]
|
||||
set timeout $oldtimeout
|
||||
verbose "Timeout is now $timeout seconds" 2
|
||||
|
||||
if { [lindex $result 0] != "" } then {
|
||||
return -1
|
||||
}
|
||||
|
||||
# disassemble yourself
|
||||
gdb_test "x/10i main" \
|
||||
"x/10i.*main.*main.$decimal.*main.$decimal.*" \
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
# Copyright 2002, 2003, 2004
|
||||
# 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
|
||||
@ -15,9 +15,6 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
# Please email any bugs, comments, and/or additions to this file to:
|
||||
# bug-gdb@prep.ai.mit.edu
|
||||
|
||||
# This file was written by Joel Brobecker. (brobecker@gnat.com), derived
|
||||
# from selftest.exp, written by Rob Savoye.
|
||||
|
||||
@ -50,14 +47,15 @@ proc setup_test { executable } {
|
||||
set oldtimeout $timeout
|
||||
set timeout 600
|
||||
verbose "Timeout is now $timeout seconds" 2
|
||||
if {[gdb_load $executable] <0} then {
|
||||
set timeout $oldtimeout
|
||||
verbose "Timeout is now $timeout seconds" 2
|
||||
return -1
|
||||
}
|
||||
|
||||
set result [gdb_load $executable]
|
||||
set timeout $oldtimeout
|
||||
verbose "Timeout is now $timeout seconds" 2
|
||||
|
||||
if { [lindex $result 0] != "" } then {
|
||||
return -1
|
||||
}
|
||||
|
||||
# Set a breakpoint at main
|
||||
gdb_test "break captured_main" \
|
||||
"Breakpoint.*at.* file.*, line.*" \
|
||||
|
@ -180,7 +180,8 @@ proc gdb_run_cmd {args} {
|
||||
if [target_info exists gdb,do_reload_on_run] {
|
||||
# Specifying no file, defaults to the executable
|
||||
# currently being debugged.
|
||||
if { [gdb_load ""] < 0 } {
|
||||
set status [gdb_load ""]
|
||||
if { [lindex $status 0] != "" } {
|
||||
return;
|
||||
}
|
||||
send_gdb "continue\n";
|
||||
@ -225,7 +226,8 @@ proc gdb_run_cmd {args} {
|
||||
send_gdb "y\n"
|
||||
}
|
||||
-re "The program is not being run.*$gdb_prompt $" {
|
||||
if { [gdb_load ""] < 0 } {
|
||||
set status [gdb_load ""]
|
||||
if { [lindex $status 0] != ""] } {
|
||||
return;
|
||||
}
|
||||
send_gdb "jump *$start\n";
|
||||
@ -247,7 +249,8 @@ proc gdb_run_cmd {args} {
|
||||
}
|
||||
|
||||
if [target_info exists gdb,do_reload_on_run] {
|
||||
if { [gdb_load ""] < 0 } {
|
||||
set status [gdb_load ""]
|
||||
if { [lindex $status 0] != "" } {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -953,35 +956,49 @@ proc default_gdb_exit {} {
|
||||
unset gdb_spawn_id
|
||||
}
|
||||
|
||||
# Load a file into the debugger.
|
||||
# The return value is a list with the following information:
|
||||
#
|
||||
# load a file into the debugger.
|
||||
# return a -1 if anything goes wrong.
|
||||
# { message word ... }
|
||||
#
|
||||
# MESSAGE has the following values:
|
||||
#
|
||||
# "" file was loaded successfully
|
||||
# "..." file was not loaded successfully.
|
||||
# A perror has been generated with MESSAGE.
|
||||
#
|
||||
# If the MESSAGE is "", then there is an optional set of words.
|
||||
# The words may be:
|
||||
#
|
||||
# nodebug this file does not contain debug information
|
||||
#
|
||||
# TODO: gdb.base/sepdebug.exp and gdb.stabs/weird.exp might
|
||||
# be able to use this if they can get more information
|
||||
# in the return value.
|
||||
|
||||
proc gdb_file_cmd { arg } {
|
||||
global verbose
|
||||
global loadpath
|
||||
global loadfile
|
||||
global GDB
|
||||
global gdb_prompt
|
||||
upvar timeout timeout
|
||||
global verbose
|
||||
global GDB
|
||||
|
||||
if [is_remote host] {
|
||||
set arg [remote_download host $arg];
|
||||
set arg [remote_download host $arg]
|
||||
if { $arg == "" } {
|
||||
error "download failed"
|
||||
return -1;
|
||||
set message "download failed"
|
||||
perror $message
|
||||
return { $message }
|
||||
}
|
||||
}
|
||||
|
||||
send_gdb "file $arg\n"
|
||||
gdb_expect 120 {
|
||||
-re "Reading symbols from.*no debugging symbols found.*done.*$gdb_prompt $" {
|
||||
verbose "\t\tLoaded $arg into the $GDB with no debugging symbols"
|
||||
return { "" nodebug }
|
||||
}
|
||||
-re "Reading symbols from.*done.*$gdb_prompt $" {
|
||||
verbose "\t\tLoaded $arg into the $GDB"
|
||||
return 0
|
||||
}
|
||||
-re "has no symbol-table.*$gdb_prompt $" {
|
||||
perror "$arg wasn't compiled with \"-g\""
|
||||
return -1
|
||||
return { "" }
|
||||
}
|
||||
-re "A program is being debugged already.*Kill it.*y or n. $" {
|
||||
send_gdb "y\n"
|
||||
@ -993,32 +1010,37 @@ proc gdb_file_cmd { arg } {
|
||||
gdb_expect 120 {
|
||||
-re "Reading symbols from.*done.*$gdb_prompt $" {
|
||||
verbose "\t\tLoaded $arg with new symbol table into $GDB"
|
||||
return 0
|
||||
return { "" }
|
||||
}
|
||||
timeout {
|
||||
perror "(timeout) Couldn't load $arg, other program already loaded."
|
||||
return -1
|
||||
set message "(timeout) Couldn't load $arg, other program already loaded."
|
||||
perror $message
|
||||
return { $message }
|
||||
}
|
||||
}
|
||||
}
|
||||
-re "No such file or directory.*$gdb_prompt $" {
|
||||
perror "($arg) No such file or directory\n"
|
||||
return -1
|
||||
set message "($arg) No such file or directory"
|
||||
perror $message
|
||||
return { $message }
|
||||
}
|
||||
-re "$gdb_prompt $" {
|
||||
perror "couldn't load $arg into $GDB."
|
||||
return -1
|
||||
set message "couldn't load $arg into $GDB."
|
||||
perror $message
|
||||
return { $message }
|
||||
}
|
||||
timeout {
|
||||
perror "couldn't load $arg into $GDB (timed out)."
|
||||
return -1
|
||||
set message "couldn't load $arg into $GDB (timed out)."
|
||||
perror $message
|
||||
return { $message }
|
||||
}
|
||||
eof {
|
||||
# This is an attempt to detect a core dump, but seems not to
|
||||
# work. Perhaps we need to match .* followed by eof, in which
|
||||
# gdb_expect does not seem to have a way to do that.
|
||||
perror "couldn't load $arg into $GDB (end of file)."
|
||||
return -1
|
||||
set message "couldn't load $arg into $GDB (end of file)."
|
||||
perror $message
|
||||
return { $message }
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1633,7 +1655,6 @@ proc gdb_exit { } {
|
||||
|
||||
#
|
||||
# gdb_load -- load a file into the debugger.
|
||||
# return a -1 if anything goes wrong.
|
||||
#
|
||||
proc gdb_load { arg } {
|
||||
return [gdb_file_cmd $arg]
|
||||
|
Loading…
Reference in New Issue
Block a user