import gdb-2000-01-17 snapshot

This commit is contained in:
Jason Molenda 2000-01-18 00:55:13 +00:00
parent 67a95c88f3
commit c5394b80ae
23 changed files with 1442 additions and 170 deletions

View file

@ -1,3 +1,82 @@
2000-01-17 Jason Molenda (jsm@bugshack.cygnus.com)
* configure.in (NEW_PROC_API): Fix Unixware-matching regexp.
Fix from Robert Lipe <robertl@sco.com>.
* configure: Regenerated.
2000-01-17 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
* stack.c (print_frame_info_base): Break up into the frame info
(location) printing part and the rest (source line printing).
(print_frame): New function. Take care of printing the location
information.
Update copyright.
* infrun.c (normal_stop): Use enum values rather than integers for the
source_flag to be passed to show_and_print_stack_frame().
Update copyright.
* frame.h (print_what): New enum for 'source' argument to
print_frame_info_base(). Use this instead of obscure numbers.
Update copyright.
Sun Jan 16 17:58:00 2000 David Taylor <taylor@texas.cygnus.com>
* event-top.c (stdin_event_handler): call quit_command rather than
exit -- run cleanups, give target code a chance to say goodbye to
the target. Fixes bug where the inferior processes were left
around on Solaris (and probably elsewhere) by the testsuite.
2000-01-14 Mark Salter <msalter@cygnus.com>
* v850-tdep.c (v850_target_architecture_hook): Setup correct
machine id for disassembly.
Thu Jan 13 23:34:17 EST 2000 Nicholas Duffek <nsd@cygnus.com>
* uw-thread.c: Document libthread.so debugging interface. Minor
comment and formatting tweaks.
(DEBUG): #define as 0 instead of 1.
(CALL_BASE): Include function name in error msg.
(libthread_stub): Adjust inferior_pid after thread exit.
(uw_thread_create_inferior): Deactivate uw_thread_ops before
asking procfs_ops to create inferior.
(libthread_init): Don't return nonlocally on error.
2000-01-12 Fernando Nasser <fnasser@totem.to.cygnus.com>
* rdi-share/ardi.c (negotiate_params): Fix initialization of static
variable.
2000-01-12 Fernando Nasser <fnasser@totem.to.cygnus.com>
* remote-rdi.c (arm_rdi_open): Call arm-rdi-close() to make sure
both sides are on the same state.
2000-01-12 Fernando Nasser <fnasser@totem.to.cygnus.com>
* rdi-share/serdrv.c (find_baud_rate): Fix entries for 57600 and
115200 (minor syntax mistake).
2000-01-12 Jim Blandy <jimb@cygnus.com>
* config/sparc/tm-sun4sol2.h (MERGEPID): Provide a definition for
this here, to go along with the definitions of PIDGET and TIDGET.
2000-01-12 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
* thread.c (do_captured_thread_select): New function. Switch
current thread, safely from within catch_errors().
(gdb_thread_select): New function. Switch threads safely.
(thread_command): Use gdb_thread_select().
2000-01-11 Christopher Faylor <cgf@cygnus.com>
* configure.in: Avoid linking -limagehlp unless it's a native build.
* configure: Regenerate.
* thread.cc (add_thread): Clear private data pointer here or suffer
strange behavior when it is checked for NULL later.
2000-01-09 Christopher Faylor <cgf@cygnus.com> 2000-01-09 Christopher Faylor <cgf@cygnus.com>
* win32nat.c (handle_exceptions): Handle various arithmetic exceptions. * win32nat.c (handle_exceptions): Handle various arithmetic exceptions.

View file

@ -229,7 +229,7 @@ CDEPS = $(XM_CDEPS) $(TM_CDEPS) $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE) \
ADD_FILES = $(REGEX) $(XM_ADD_FILES) $(TM_ADD_FILES) $(NAT_ADD_FILES) ADD_FILES = $(REGEX) $(XM_ADD_FILES) $(TM_ADD_FILES) $(NAT_ADD_FILES)
ADD_DEPS = $(REGEX1) $(XM_ADD_FILES) $(TM_ADD_FILES) $(NAT_ADD_FILES) ADD_DEPS = $(REGEX1) $(XM_ADD_FILES) $(TM_ADD_FILES) $(NAT_ADD_FILES)
VERSION = 20000110 VERSION = 20000117
DIST=gdb DIST=gdb
LINT=/usr/5bin/lint LINT=/usr/5bin/lint

View file

@ -78,4 +78,4 @@ extern char *sunpro_static_transform_name PARAMS ((char *));
/* Macros to extract process id and thread id from a composite pid/tid */ /* Macros to extract process id and thread id from a composite pid/tid */
#define PIDGET(pid) ((pid) & 0xffff) #define PIDGET(pid) ((pid) & 0xffff)
#define TIDGET(pid) (((pid) >> 16) & 0xffff) #define TIDGET(pid) (((pid) >> 16) & 0xffff)
#define MERGEPID(pid, tid) (((tid) << 16) | (pid))

34
gdb/configure vendored
View file

@ -4181,7 +4181,7 @@ EOF
EOF EOF
;; ;;
*-*-unixware* | *-*-sysv4.2uw2.* | *-*-sysv4.2uw7.*) *-*-unixware* | *-*-sysv4.2* | *-*-sysv5*)
cat >> confdefs.h <<\EOF cat >> confdefs.h <<\EOF
#define NEW_PROC_API 1 #define NEW_PROC_API 1
EOF EOF
@ -5546,7 +5546,11 @@ fi
# libreadline needs libuser32.a in a cygwin environment # libreadline needs libuser32.a in a cygwin environment
WIN32LIBS= WIN32LIBS=
if test x$gdb_cv_os_cygwin = xyes; then if test x$gdb_cv_os_cygwin = xyes; then
WIN32LIBS="-luser32 -limagehlp" WIN32LIBS="-luser32"
case "${target}" in
*cygwin*) WIN32LIBS="$WIN32LIBS -limagehlp"
;;
esac
fi fi
@ -5556,7 +5560,7 @@ fi
# Uses ac_ vars as temps to allow command line to override cache and checks. # Uses ac_ vars as temps to allow command line to override cache and checks.
# --without-x overrides everything else, but does not touch the cache. # --without-x overrides everything else, but does not touch the cache.
echo $ac_n "checking for X""... $ac_c" 1>&6 echo $ac_n "checking for X""... $ac_c" 1>&6
echo "configure:6767: checking for X" >&5 echo "configure:6771: checking for X" >&5
# Check whether --with-x or --without-x was given. # Check whether --with-x or --without-x was given.
if test "${with_x+set}" = set; then if test "${with_x+set}" = set; then
@ -5618,12 +5622,12 @@ if test "$ac_x_includes" = NO; then
# First, try using that file with no special directory specified. # First, try using that file with no special directory specified.
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 6829 "configure" #line 6833 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <$x_direct_test_include> #include <$x_direct_test_include>
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:6834: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:6838: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
rm -rf conftest* rm -rf conftest*
@ -5692,14 +5696,14 @@ if test "$ac_x_libraries" = NO; then
ac_save_LIBS="$LIBS" ac_save_LIBS="$LIBS"
LIBS="-l$x_direct_test_library $LIBS" LIBS="-l$x_direct_test_library $LIBS"
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 6903 "configure" #line 6907 "configure"
#include "confdefs.h" #include "confdefs.h"
int main() { int main() {
${x_direct_test_function}() ${x_direct_test_function}()
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:6910: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then if { (eval echo configure:6914: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest* rm -rf conftest*
LIBS="$ac_save_LIBS" LIBS="$ac_save_LIBS"
# We can link X programs with no special library path. # We can link X programs with no special library path.
@ -5979,12 +5983,12 @@ fi
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
echo "configure:7261: checking for Cygwin environment" >&5 echo "configure:7265: checking for Cygwin environment" >&5
if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 7266 "configure" #line 7270 "configure"
#include "confdefs.h" #include "confdefs.h"
int main() { int main() {
@ -5995,7 +5999,7 @@ int main() {
return __CYGWIN__; return __CYGWIN__;
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:7277: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:7281: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
ac_cv_cygwin=yes ac_cv_cygwin=yes
else else
@ -6012,19 +6016,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
CYGWIN= CYGWIN=
test "$ac_cv_cygwin" = yes && CYGWIN=yes test "$ac_cv_cygwin" = yes && CYGWIN=yes
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
echo "configure:7294: checking for mingw32 environment" >&5 echo "configure:7298: checking for mingw32 environment" >&5
if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 7299 "configure" #line 7303 "configure"
#include "confdefs.h" #include "confdefs.h"
int main() { int main() {
return __MINGW32__; return __MINGW32__;
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:7306: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:7310: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
ac_cv_mingw32=yes ac_cv_mingw32=yes
else else
@ -6043,7 +6047,7 @@ test "$ac_cv_mingw32" = yes && MINGW32=yes
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
echo "configure:7325: checking for executable suffix" >&5 echo "configure:7329: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -6053,7 +6057,7 @@ else
rm -f conftest* rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext= ac_cv_exeext=
if { (eval echo configure:7335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then if { (eval echo configure:7339: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do for file in conftest.*; do
case $file in case $file in
*.c | *.o | *.obj | *.ilk | *.pdb) ;; *.c | *.o | *.obj | *.ilk | *.pdb) ;;

View file

@ -152,7 +152,7 @@ if test "${target}" = "${host}"; then
AC_DEFINE(START_INFERIOR_TRAPS_EXPECTED,2) AC_DEFINE(START_INFERIOR_TRAPS_EXPECTED,2)
AC_DEFINE(sys_quotactl) AC_DEFINE(sys_quotactl)
;; ;;
*-*-unixware* | *-*-sysv4.2uw2.* | *-*-sysv4.2uw7.*) *-*-unixware* | *-*-sysv4.2* | *-*-sysv5*)
AC_DEFINE(NEW_PROC_API) AC_DEFINE(NEW_PROC_API)
;; ;;
# FIXME: we would like to define NEW_PROC_API for all versions of # FIXME: we would like to define NEW_PROC_API for all versions of
@ -488,7 +488,11 @@ AC_SUBST(TERM_LIB)
# libreadline needs libuser32.a in a cygwin environment # libreadline needs libuser32.a in a cygwin environment
WIN32LIBS= WIN32LIBS=
if test x$gdb_cv_os_cygwin = xyes; then if test x$gdb_cv_os_cygwin = xyes; then
WIN32LIBS="-luser32 -limagehlp" WIN32LIBS="-luser32"
case "${target}" in
*cygwin*) WIN32LIBS="$WIN32LIBS -limagehlp"
;;
esac
fi fi
AC_SUBST(WIN32LIBS) AC_SUBST(WIN32LIBS)

View file

@ -1,3 +1,9 @@
2000-01-16 Tom Tromey <tromey@cygnus.com>
* gdb.texinfo (Breakpoints): Mention breakpoint ranges.
(Delete Breaks): Mention range arguments.
(Disabling): Likewise.
2000-01-05 Dmitry Sivachenko <dima@Chg.RU> 2000-01-05 Dmitry Sivachenko <dima@Chg.RU>
* gdb.texinfo: Wrap "ASCII" in @sc{}; clarify a few sentences. * gdb.texinfo: Wrap "ASCII" in @sc{}; clarify a few sentences.

View file

@ -2100,6 +2100,14 @@ breakpoint you want to change. Each breakpoint may be @dfn{enabled} or
@dfn{disabled}; if disabled, it has no effect on your program until you @dfn{disabled}; if disabled, it has no effect on your program until you
enable it again. enable it again.
@cindex breakpoint ranges
@cindex ranges of breakpoints
Some @value{GDBN} commands accept a range of breakpoints on which to
operate. A breakpoint range is either a single breakpoint number, like
@samp{5}, or two such numbers, in increasing order, separated by a
hyphen, like @samp{5-7}. When a breakpoint range is given to a command,
all breakpoint in that range are operated on.
@menu @menu
* Set Breaks:: Setting breakpoints * Set Breaks:: Setting breakpoints
* Set Watchpoints:: Setting watchpoints * Set Watchpoints:: Setting watchpoints
@ -2633,9 +2641,9 @@ Delete any breakpoints set at or within the code of the specified line.
@cindex delete breakpoints @cindex delete breakpoints
@kindex delete @kindex delete
@kindex d @kindex d
@item delete @r{[}breakpoints@r{]} @r{[}@var{bnums}@dots{}@r{]} @item delete @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
Delete the breakpoints, watchpoints, or catchpoints of the numbers Delete the breakpoints, watchpoints, or catchpoints of the breakpoint
specified as arguments. If no argument is specified, delete all ranges specified as arguments. If no argument is specified, delete all
breakpoints (@value{GDBN} asks confirmation, unless you have @code{set breakpoints (@value{GDBN} asks confirmation, unless you have @code{set
confirm off}). You can abbreviate this command as @code{d}. confirm off}). You can abbreviate this command as @code{d}.
@end table @end table
@ -2681,7 +2689,7 @@ watchpoints, and catchpoints:
@kindex disable breakpoints @kindex disable breakpoints
@kindex disable @kindex disable
@kindex dis @kindex dis
@item disable @r{[}breakpoints@r{]} @r{[}@var{bnums}@dots{}@r{]} @item disable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
Disable the specified breakpoints---or all breakpoints, if none are Disable the specified breakpoints---or all breakpoints, if none are
listed. A disabled breakpoint has no effect but is not forgotten. All listed. A disabled breakpoint has no effect but is not forgotten. All
options such as ignore-counts, conditions and commands are remembered in options such as ignore-counts, conditions and commands are remembered in
@ -2690,15 +2698,15 @@ case the breakpoint is enabled again later. You may abbreviate
@kindex enable breakpoints @kindex enable breakpoints
@kindex enable @kindex enable
@item enable @r{[}breakpoints@r{]} @r{[}@var{bnums}@dots{}@r{]} @item enable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
Enable the specified breakpoints (or all defined breakpoints). They Enable the specified breakpoints (or all defined breakpoints). They
become effective once again in stopping your program. become effective once again in stopping your program.
@item enable @r{[}breakpoints@r{]} once @var{bnums}@dots{} @item enable @r{[}breakpoints@r{]} once @var{range}@dots{}
Enable the specified breakpoints temporarily. @value{GDBN} disables any Enable the specified breakpoints temporarily. @value{GDBN} disables any
of these breakpoints immediately after stopping your program. of these breakpoints immediately after stopping your program.
@item enable @r{[}breakpoints@r{]} delete @var{bnums}@dots{} @item enable @r{[}breakpoints@r{]} delete @var{range}@dots{}
Enable the specified breakpoints to work once, then die. @value{GDBN} Enable the specified breakpoints to work once, then die. @value{GDBN}
deletes any of these breakpoints as soon as your program stops there. deletes any of these breakpoints as soon as your program stops there.
@end table @end table

View file

@ -410,7 +410,7 @@ stdin_event_handler (int error, gdb_client_data client_data)
delete_file_handler (input_fd); delete_file_handler (input_fd);
discard_all_continuations (); discard_all_continuations ();
/* If stdin died, we may as well kill gdb. */ /* If stdin died, we may as well kill gdb. */
exit (1); quit_command ((char *) 0, stdin == instream);
} }
else else
(*call_readline) (client_data); (*call_readline) (client_data);

View file

@ -1,5 +1,5 @@
/* Definitions for dealing with stack frames, for GDB, the GNU debugger. /* Definitions for dealing with stack frames, for GDB, the GNU debugger.
Copyright 1986, 1989, 1991, 1992, 1999 Free Software Foundation, Inc. Copyright 1986, 1989, 1991, 1992, 1999, 2000 Free Software Foundation, Inc.
This file is part of GDB. This file is part of GDB.
@ -99,6 +99,20 @@ struct frame_info
struct frame_info *next, *prev; struct frame_info *next, *prev;
}; };
/* Values for the source flag to be used in print_frame_info_base(). */
enum print_what
{
/* Print only the source line, like in stepi. */
SRC_LINE = -1,
/* Print only the location, i.e. level, address (sometimes)
function, args, file, line, line num. */
LOCATION,
/* Print both of the above. */
SRC_AND_LOC,
/* Print location only, but always include the address. */
LOC_AND_ADDRESS
};
/* Allocate additional space for appendices to a struct frame_info. */ /* Allocate additional space for appendices to a struct frame_info. */
#ifndef SIZEOF_FRAME_SAVED_REGS #ifndef SIZEOF_FRAME_SAVED_REGS

View file

@ -146,7 +146,7 @@ fill_gregset (gregset_t *gregsetp,
signed char valid[NUM_GREGS]; signed char valid[NUM_GREGS];
memset (valid, 0, sizeof (valid)); memset (valid, 0, sizeof (valid));
valid[regno] = 1; valid[regno] = 1;
convert_to_gregset (gregsetp, valid, valid); convert_to_gregset (gregsetp, registers, valid);
} }
} }

View file

@ -1,5 +1,5 @@
/* Target-struct-independent code to start (run) and stop an inferior process. /* Target-struct-independent code to start (run) and stop an inferior process.
Copyright 1986-1989, 1991-1999 Free Software Foundation, Inc. Copyright 1986-1989, 1991-2000 Free Software Foundation, Inc.
This file is part of GDB. This file is part of GDB.
@ -3381,15 +3381,15 @@ The same program may be running in another process.\n");
if (stop_step if (stop_step
&& step_frame_address == FRAME_FP (get_current_frame ()) && step_frame_address == FRAME_FP (get_current_frame ())
&& step_start_function == find_pc_function (stop_pc)) && step_start_function == find_pc_function (stop_pc))
source_flag = -1; /* finished step, just print source line */ source_flag = SRC_LINE; /* finished step, just print source line */
else else
source_flag = 1; /* print location and source line */ source_flag = SRC_AND_LOC; /* print location and source line */
break; break;
case PRINT_SRC_AND_LOC: case PRINT_SRC_AND_LOC:
source_flag = 1; /* print location and source line */ source_flag = SRC_AND_LOC; /* print location and source line */
break; break;
case PRINT_SRC_ONLY: case PRINT_SRC_ONLY:
source_flag = -1; source_flag = SRC_LINE;
break; break;
case PRINT_NOTHING: case PRINT_NOTHING:
do_frame_printing = 0; do_frame_printing = 0;
@ -3400,9 +3400,9 @@ The same program may be running in another process.\n");
/* The behavior of this routine with respect to the source /* The behavior of this routine with respect to the source
flag is: flag is:
-1: Print only source line SRC_LINE: Print only source line
0: Print only location LOCATION: Print only location
1: Print location and source line */ SRC_AND_LOC: Print location and source line */
if (do_frame_printing) if (do_frame_printing)
show_and_print_stack_frame (selected_frame, -1, source_flag); show_and_print_stack_frame (selected_frame, -1, source_flag);

View file

@ -320,9 +320,12 @@ static AdpErrs negotiate_params( const ParameterOptions *user_options )
time_t t; time_t t;
static volatile NegotiateState n_state = { static volatile NegotiateState n_state;
FALSE, FALSE, FALSE, &accepted_config }; n_state.negotiate_resp = FALSE;
n_state.negotiate_ack = FALSE;
n_state.link_check_resp = FALSE;
n_state.accepted_config = &accepted_config;
#ifdef DEBUG #ifdef DEBUG
angel_DebugPrint( "negotiate_params\n" ); angel_DebugPrint( "negotiate_params\n" );
#endif #endif

View file

@ -85,10 +85,10 @@ static struct writestate wstate;
* The set of parameter options supported by the device * The set of parameter options supported by the device
*/ */
static unsigned int baud_options[] = { static unsigned int baud_options[] = {
#ifdef B115200 || __hpux #if defined(B115200) || defined(__hpux)
115200, 115200,
#endif #endif
#ifdef B57600 || __hpux #if defined(B57600) || defined(__hpux)
57600, 57600,
#endif #endif
38400, 19200, 9600 38400, 19200, 9600

View file

@ -251,7 +251,7 @@ device is attached to the remote system (e.g. /dev/ttya).");
/* Make the basic low-level connection. */ /* Make the basic low-level connection. */
Adp_CloseDevice (); arm_rdi_close (0);
rslt = Adp_OpenDevice (devName, openArgs, rdi_heartbeat); rslt = Adp_OpenDevice (devName, openArgs, rdi_heartbeat);
if (rslt != adp_ok) if (rslt != adp_ok)

View file

@ -1,5 +1,5 @@
/* Print and select stack frames for GDB, the GNU debugger. /* Print and select stack frames for GDB, the GNU debugger.
Copyright 1986, 87, 89, 91, 92, 93, 94, 95, 96, 98, 1999 Copyright 1986, 87, 89, 91, 92, 93, 94, 95, 96, 98, 1999, 2000
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of GDB. This file is part of GDB.
@ -92,6 +92,12 @@ static int print_block_frame_locals PARAMS ((struct block *,
int, int,
GDB_FILE *)); GDB_FILE *));
static void print_frame (struct frame_info *fi,
int level,
int source,
int args,
struct symtab_and_line sal);
static void print_frame_info_base PARAMS ((struct frame_info *, int, int, int)); static void print_frame_info_base PARAMS ((struct frame_info *, int, int, int));
static void print_stack_frame_base PARAMS ((struct frame_info *, int, int)); static void print_stack_frame_base PARAMS ((struct frame_info *, int, int));
@ -328,14 +334,14 @@ print_args_stub (args)
} }
/* Print information about a frame for frame "fi" at level "level". /* Print information about a frame for frame "fi" at level "level".
* Used in "where" output, also used to emit breakpoint or step messages. Used in "where" output, also used to emit breakpoint or step
* LEVEL is the level of the frame, or -1 if it is the innermost frame messages.
* but we don't want to print the level. LEVEL is the level of the frame, or -1 if it is the
* The meaning of the SOURCE argument is: innermost frame but we don't want to print the level.
* -1: Print only source line The meaning of the SOURCE argument is:
* 0: Print only location SRC_LINE: Print only source line
* 1: Print location and source line LOCATION: Print only location
*/ LOC_AND_SRC: Print location and source line. */
static void static void
print_frame_info_base (fi, level, source, args) print_frame_info_base (fi, level, source, args)
@ -345,9 +351,8 @@ print_frame_info_base (fi, level, source, args)
int args; int args;
{ {
struct symtab_and_line sal; struct symtab_and_line sal;
struct symbol *func; int source_print;
register char *funname = 0; int location_print;
enum language funlang = language_unknown;
#if 0 #if 0
char buf[MAX_REGISTER_RAW_SIZE]; char buf[MAX_REGISTER_RAW_SIZE];
@ -406,6 +411,57 @@ print_frame_info_base (fi, level, source, args)
&& !fi->next->signal_handler_caller && !fi->next->signal_handler_caller
&& !frame_in_dummy (fi->next)); && !frame_in_dummy (fi->next));
location_print = (source == LOCATION
|| source == LOC_AND_ADDRESS
|| source == SRC_AND_LOC);
if (location_print || !sal.symtab)
print_frame (fi, level, source, args, sal);
source_print = (source == SRC_LINE || source == SRC_AND_LOC);
if (source_print && sal.symtab)
{
int done = 0;
int mid_statement = (source == SRC_LINE) && (fi->pc != sal.pc);
if (annotation_level)
done = identify_source_line (sal.symtab, sal.line, mid_statement,
fi->pc);
if (!done)
{
if (addressprint && mid_statement && !tui_version)
{
print_address_numeric (fi->pc, 1, gdb_stdout);
printf_filtered ("\t");
}
if (print_frame_info_listing_hook)
print_frame_info_listing_hook (sal.symtab, sal.line, sal.line + 1, 0);
else if (!tui_version)
print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
}
current_source_line = max (sal.line - lines_to_list / 2, 1);
}
if (source != 0)
set_default_breakpoint (1, fi->pc, sal.symtab, sal.line);
annotate_frame_end ();
gdb_flush (gdb_stdout);
}
static void
print_frame (struct frame_info *fi,
int level,
int source,
int args,
struct symtab_and_line sal)
{
struct symbol *func;
register char *funname = 0;
enum language funlang = language_unknown;
func = find_pc_function (fi->pc); func = find_pc_function (fi->pc);
if (func) if (func)
{ {
@ -446,19 +502,17 @@ print_frame_info_base (fi, level, source, args)
} }
else else
{ {
/* I'd like to use SYMBOL_SOURCE_NAME() here, to display /* I'd like to use SYMBOL_SOURCE_NAME() here, to display the
* the demangled name that we already have stored in demangled name that we already have stored in the symbol
* the symbol table, but we stored a version with table, but we stored a version with DMGL_PARAMS turned
* DMGL_PARAMS turned on, and here we don't want on, and here we don't want to display parameters. So call
* to display parameters. So call the demangler again, the demangler again, with DMGL_ANSI only. (Yes, I know
* with DMGL_ANSI only. RT that printf_symbol_filtered() will again try to demangle
* (Yes, I know that printf_symbol_filtered() will the name on the fly, but the issue is that if
* again try to demangle the name on the fly, but cplus_demangle() fails here, it'll fail there too. So we
* the issue is that if cplus_demangle() fails here, want to catch the failure ("demangled==NULL" case below)
* it'll fail there too. So we want to catch the failure here, while we still have our hands on the function
* ("demangled==NULL" case below) here, while we still symbol.) */
* have our hands on the function symbol.)
*/
char *demangled; char *demangled;
funname = SYMBOL_NAME (func); funname = SYMBOL_NAME (func);
funlang = SYMBOL_LANGUAGE (func); funlang = SYMBOL_LANGUAGE (func);
@ -466,10 +520,9 @@ print_frame_info_base (fi, level, source, args)
{ {
demangled = cplus_demangle (funname, DMGL_ANSI); demangled = cplus_demangle (funname, DMGL_ANSI);
if (demangled == NULL) if (demangled == NULL)
/* If the demangler fails, try the demangled name /* If the demangler fails, try the demangled name from
* from the symbol table. This'll have parameters, the symbol table. This'll have parameters, but
* but that's preferable to diplaying a mangled name. that's preferable to diplaying a mangled name. */
*/
funname = SYMBOL_SOURCE_NAME (func); funname = SYMBOL_SOURCE_NAME (func);
} }
} }
@ -484,104 +537,76 @@ print_frame_info_base (fi, level, source, args)
} }
} }
if (source >= 0 || !sal.symtab) annotate_frame_begin (level == -1 ? 0 : level, fi->pc);
{
annotate_frame_begin (level == -1 ? 0 : level, fi->pc);
if (level >= 0)
printf_filtered ("#%-2d ", level); if (level >= 0)
if (addressprint) printf_filtered ("#%-2d ", level);
if (fi->pc != sal.pc || !sal.symtab) if (addressprint)
{ if (fi->pc != sal.pc || !sal.symtab || source == LOC_AND_ADDRESS)
annotate_frame_address (); {
print_address_numeric (fi->pc, 1, gdb_stdout); annotate_frame_address ();
annotate_frame_address_end (); print_address_numeric (fi->pc, 1, gdb_stdout);
printf_filtered (" in "); annotate_frame_address_end ();
} printf_filtered (" in ");
annotate_frame_function_name (); }
fprintf_symbol_filtered (gdb_stdout, funname ? funname : "??", funlang, annotate_frame_function_name ();
DMGL_ANSI); fprintf_symbol_filtered (gdb_stdout, funname ? funname : "??", funlang,
DMGL_ANSI);
wrap_here (" ");
annotate_frame_args ();
fputs_filtered (" (", gdb_stdout);
if (args)
{
struct print_args_args args;
args.fi = fi;
args.func = func;
args.stream = gdb_stdout;
catch_errors (print_args_stub, &args, "", RETURN_MASK_ALL);
QUIT;
}
printf_filtered (")");
if (sal.symtab && sal.symtab->filename)
{
annotate_frame_source_begin ();
wrap_here (" "); wrap_here (" ");
annotate_frame_args (); printf_filtered (" at ");
fputs_filtered (" (", gdb_stdout); annotate_frame_source_file ();
if (args) printf_filtered ("%s", sal.symtab->filename);
{ annotate_frame_source_file_end ();
struct print_args_args args; printf_filtered (":");
args.fi = fi; annotate_frame_source_line ();
args.func = func; printf_filtered ("%d", sal.line);
args.stream = gdb_stdout; annotate_frame_source_end ();
catch_errors (print_args_stub, &args, "", RETURN_MASK_ALL); }
QUIT;
}
printf_filtered (")");
if (sal.symtab && sal.symtab->filename)
{
annotate_frame_source_begin ();
wrap_here (" ");
printf_filtered (" at ");
annotate_frame_source_file ();
printf_filtered ("%s", sal.symtab->filename);
annotate_frame_source_file_end ();
printf_filtered (":");
annotate_frame_source_line ();
printf_filtered ("%d", sal.line);
annotate_frame_source_end ();
}
#ifdef PC_LOAD_SEGMENT #ifdef PC_LOAD_SEGMENT
/* If we couldn't print out function name but if can figure out what /* If we couldn't print out function name but if can figure out what
load segment this pc value is from, at least print out some info load segment this pc value is from, at least print out some info
about its load segment. */ about its load segment. */
if (!funname) if (!funname)
{
annotate_frame_where ();
wrap_here (" ");
printf_filtered (" from %s", PC_LOAD_SEGMENT (fi->pc));
}
#endif /* PC_LOAD_SEGMENT */
#ifdef PC_SOLIB
if (!funname || (!sal.symtab || !sal.symtab->filename))
{
char *lib = PC_SOLIB (fi->pc);
if (lib)
{ {
annotate_frame_where (); annotate_frame_where ();
wrap_here (" "); wrap_here (" ");
printf_filtered (" from %s", PC_LOAD_SEGMENT (fi->pc)); printf_filtered (" from %s", lib);
} }
#endif
#ifdef PC_SOLIB
if (!funname || (!sal.symtab || !sal.symtab->filename))
{
char *lib = PC_SOLIB (fi->pc);
if (lib)
{
annotate_frame_where ();
wrap_here (" ");
printf_filtered (" from %s", lib);
}
}
#endif
printf_filtered ("\n");
} }
#endif /* PC_SOLIB */
if ((source != 0) && sal.symtab) printf_filtered ("\n");
{
int done = 0;
int mid_statement = source < 0 && fi->pc != sal.pc;
if (annotation_level)
done = identify_source_line (sal.symtab, sal.line, mid_statement,
fi->pc);
if (!done)
{
if (addressprint && mid_statement && !tui_version)
{
print_address_numeric (fi->pc, 1, gdb_stdout);
printf_filtered ("\t");
}
if (print_frame_info_listing_hook)
print_frame_info_listing_hook (sal.symtab, sal.line, sal.line + 1, 0);
else if (!tui_version)
print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
}
current_source_line = max (sal.line - lines_to_list / 2, 1);
}
if (source != 0)
set_default_breakpoint (1, fi->pc, sal.symtab, sal.line);
annotate_frame_end ();
gdb_flush (gdb_stdout);
} }

View file

@ -1,3 +1,8 @@
2000-01-17 Fernando Nasser <fnasser@totem.to.cygnus.com>
* gdb.base/default.exp: Fix expected pattern.
* gdb.base/help.exp: Same.
2000-01-10 Elena Zannoni <ezannoni@kwikemart.cygnus.com> 2000-01-10 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
* gdb.base/so-indr-cl.exp: Don't execute the test if not on HPUX. * gdb.base/so-indr-cl.exp: Don't execute the test if not on HPUX.

View file

@ -727,7 +727,7 @@ gdb_expect {
if ![istarget "*-*-udi*"] then { if ![istarget "*-*-udi*"] then {
send_gdb "target remote\n" send_gdb "target remote\n"
gdb_expect { gdb_expect {
-re "To open a remote debug connection, you need to specify what.*serial.*device is attached to the remote system .e.g. .*$gdb_prompt $"\ -re "To open a remote debug connection, you need to specify what.*serial.*device is attached to the remote system.*.e.g. .*$gdb_prompt $"\
{ pass "target remote" } { pass "target remote" }
-re ".*A program is being debugged already. Kill it. .y or n.*$" { -re ".*A program is being debugged already. Kill it. .y or n.*$" {
send_gdb "n\n" send_gdb "n\n"

View file

@ -504,7 +504,7 @@ gdb_test "help target core" ".*Use a core file as a target.*Specify the filename
# test help target exec # test help target exec
gdb_test "help target exec" "Use an executable file as a target..*\[\r\n\]+Specify the filename of the executable file." "help target exec" gdb_test "help target exec" "Use an executable file as a target..*\[\r\n\]+Specify the filename of the executable file." "help target exec"
# test help target remote # test help target remote
gdb_test "help target remote" "Use a remote computer via a serial line, using a gdb-specific protocol..*\[\r\n\]+Specify the serial device it is connected to .e.g. .*" "help target remote" gdb_test "help target remote" "Use a remote computer via a serial line, using a gdb-specific protocol..*\[\r\n\]+Specify the serial device it is connected to.*\[\r\n\]+.e.g. .*" "help target remote"
# test help target # test help target
# the child process target may be "target child" or "target procfs" # the child process target may be "target child" or "target procfs"
gdb_test "help target" "Connect to a target machine or process..*\[\r\n\]+The first argument is the type or protocol of the target machine..*\[\r\n\]+Remaining arguments are interpreted by the target protocol. For more.*\[\r\n\]+information on the arguments for a particular protocol, type.*\[\r\n\]+`help target ' followed by the protocol name..*\[\r\n\]+List of target subcommands:.*\[\r\n\]+target exec -- Use an executable file as a target.*\[\r\n\]+Type \"help target\" followed by target subcommand name for full documentation..*\[\r\n\]+Command name abbreviations are allowed if unambiguous." "help target" gdb_test "help target" "Connect to a target machine or process..*\[\r\n\]+The first argument is the type or protocol of the target machine..*\[\r\n\]+Remaining arguments are interpreted by the target protocol. For more.*\[\r\n\]+information on the arguments for a particular protocol, type.*\[\r\n\]+`help target ' followed by the protocol name..*\[\r\n\]+List of target subcommands:.*\[\r\n\]+target exec -- Use an executable file as a target.*\[\r\n\]+Type \"help target\" followed by target subcommand name for full documentation..*\[\r\n\]+Command name abbreviations are allowed if unambiguous." "help target"

View file

@ -106,6 +106,7 @@ add_thread (pid)
tp->stepping_through_solib_catchpoints = NULL; tp->stepping_through_solib_catchpoints = NULL;
tp->stepping_through_sigtramp = 0; tp->stepping_through_sigtramp = 0;
tp->next = thread_list; tp->next = thread_list;
tp->private = NULL;
thread_list = tp; thread_list = tp;
return tp; return tp;
} }
@ -602,9 +603,6 @@ thread_command (tidstr, from_tty)
char *tidstr; char *tidstr;
int from_tty; int from_tty;
{ {
int num;
struct thread_info *tp;
if (!tidstr) if (!tidstr)
{ {
/* Don't generate an error, just say which thread is current. */ /* Don't generate an error, just say which thread is current. */
@ -621,7 +619,17 @@ thread_command (tidstr, from_tty)
error ("No stack."); error ("No stack.");
return; return;
} }
num = atoi (tidstr);
gdb_thread_select (tidstr);
}
static int
do_captured_thread_select (void *tidstr)
{
int num;
struct thread_info *tp;
num = atoi ((char *)tidstr);
tp = find_thread_id (num); tp = find_thread_id (num);
@ -634,9 +642,6 @@ see the IDs of currently known threads.", num);
switch_to_thread (tp->pid); switch_to_thread (tp->pid);
if (context_hook)
context_hook (num);
printf_filtered ("[Switching to thread %d (%s)]\n", printf_filtered ("[Switching to thread %d (%s)]\n",
pid_to_thread_id (inferior_pid), pid_to_thread_id (inferior_pid),
#if defined(HPUXHPPA) #if defined(HPUXHPPA)
@ -645,7 +650,16 @@ see the IDs of currently known threads.", num);
target_pid_to_str (inferior_pid) target_pid_to_str (inferior_pid)
#endif #endif
); );
print_stack_frame (selected_frame, selected_frame_level, 1); print_stack_frame (selected_frame, selected_frame_level, 1);
return GDB_RC_OK;
}
enum gdb_rc
gdb_thread_select (char *tidstr)
{
return catch_errors (do_captured_thread_select, tidstr,
NULL, RETURN_MASK_ALL);
} }
/* Commands with a prefix of `thread'. */ /* Commands with a prefix of `thread'. */

1095
gdb/uw-thread.c Normal file

File diff suppressed because it is too large Load diff

View file

@ -869,6 +869,7 @@ v850_target_architecture_hook (ap)
if (v850_processor_type_table[i].mach == ap->mach) if (v850_processor_type_table[i].mach == ap->mach)
{ {
v850_register_names = v850_processor_type_table[i].regnames; v850_register_names = v850_processor_type_table[i].regnames;
tm_print_insn_info.mach = ap->mach;
return 1; return 1;
} }
} }

View file

@ -1,3 +1,8 @@
2000-01-13 Nick Clifton <nickc@cygnus.com>
* interp.c (sim_resume): Do not rely upon host semantics of shift
operators to implement M*Core semantics.
Thu Sep 2 18:15:53 1999 Andrew Cagney <cagney@b1.cygnus.com> Thu Sep 2 18:15:53 1999 Andrew Cagney <cagney@b1.cygnus.com>
* configure: Regenerated to track ../common/aclocal.m4 changes. * configure: Regenerated to track ../common/aclocal.m4 changes.

View file

@ -1181,7 +1181,9 @@ sim_resume (sd, step, siggnal)
unsigned long dst, src; unsigned long dst, src;
dst = cpu.gr[RD]; dst = cpu.gr[RD];
src = cpu.gr[RS]; src = cpu.gr[RS];
dst = dst >> src; /* We must not rely solely upon the native shift operations, since they
may not match the M*Core's behaviour on boundary conditions. */
dst = src > 31 ? 0 : dst >> src;
cpu.gr[RD] = dst; cpu.gr[RD] = dst;
} }
break; break;
@ -1256,11 +1258,18 @@ sim_resume (sd, step, siggnal)
break; break;
case 0x1A: /* asr */ case 0x1A: /* asr */
cpu.gr[RD] = (long)cpu.gr[RD] >> cpu.gr[RS]; /* We must not rely solely upon the native shift operations, since they
may not match the M*Core's behaviour on boundary conditions. */
if (cpu.gr[RS] > 30)
cpu.gr[RD] = ((long) cpu.gr[RD]) < 0 ? -1 : 0;
else
cpu.gr[RD] = (long) cpu.gr[RD] >> cpu.gr[RS];
break; break;
case 0x1B: /* lsl */ case 0x1B: /* lsl */
cpu.gr[RD] = cpu.gr[RD] << cpu.gr[RS]; /* We must not rely solely upon the native shift operations, since they
may not match the M*Core's behaviour on boundary conditions. */
cpu.gr[RD] = cpu.gr[RS] > 31 ? 0 : cpu.gr[RD] << cpu.gr[RS];
break; break;
case 0x1C: /* addu */ case 0x1C: /* addu */