Commit cd0fc7c3 authored by Stan Shebs's avatar Stan Shebs
Browse files

import gdb-1999-05-10

parent e9868447
1999-05-10 Martin Hunt <>
* debugify.c, debugify.h: Removed because they are no
longer used.
1999-05-08 Jim Blandy <>
* infrun.c (_initialize_infrun): Handle TARGET_SIGNAL_LWP,
SIGIO --- pass them through to the inferior silently.
* target.h (enum target_signals): Add TARGET_SIGNAL_CANCEL, for
Solaris's SIGCANCEL.
* target.c (target_signal_from_host, target_signal_to_host): Add
(signals): Add entry for SIGCANCEL.
1999-05-07 Stan Shebs <>
After years of talking about it, finally break up the
wait_for_inferior loop.
* infrun.c (struct execution_control_state): New struct,
holds what used to be local vars governing wfi behavior.
(init_execution_control_state): New function, was code in
wfi that set up execution control state.
(handle_inferior_event): New function, was body of main
wfi loop. Rewrite all local var references to go through
the ecs structure passed into this function.
(wait_for_inferior): Rewrite to set up and use execution control
state, and to call the new functions.
(currently_stepping): New function, was the macro
(enum infwait_states): Rename from wfi_states.
(infwait_normal_state, etc): Similarly.
Thu May 6 15:25:32 1999 Philippe De Muyter <>
* coffread.c (coff_symtab_read): Call `record_line' with the line
number of the ".bf" symbol only for one-line functions.
1999-05-06 Michael Snyder <>
* thread.o depends on target.h.
1999-05-06 Elena Zannoni <>
* event-top.c (change_line_handler): Use POLLIN instead of
POLLRDNORM, for compatibility with Linux.
(setup_event_loop): Ditto.
1999-05-06 Jim Blandy <>
* mips-tdep.c (heuristic_proc_start): Rewrite cryptic error
message about hitting the "heuristic fence post" with something
that actually gives the user a fighting chance of figuring out
why GDB is unhappy.
1999-05-06 Elena Zannoni <>
* top.c: Include event-loop.h.
(init_main): Add async version of 'set prompt' command.
If in async mode define the editing and annotate set
commands in a different way.
Initialize new variable asyn_command_editing_p to 1.
Initialize the gdb prompt for async mode.
(quit_cover): Make not static, for use by the event loop.
(gdb_init): Call async_init_signals for the asynchronous case.
(source_line_number, source_file_name, source_error,
source_pre_error, history_expansion_p): Make non-static, so
event-top.c can use them.
(command_loop_marker): Make non-static, for use in event-top.c.
Include event-loop.h.
* top.h: Add prototype for async_init_signals.
(SET_TOP_LEVEL): Move here from main.c.
Add setup_event_loop to exported functions.
* defs.h: Add async_hook to exported variables.
* main.c (SET_TOP_LEVEL): Move to top.h, so that it is visible in
event-loop.c. Add new global variable async to determine whether
we are running in async mode or not.
(main): Add support for --async switch. Use async_hook to call
setup_event_loop, when running in async mode.
* event-top.c: New file. Gdb input line handler and command line
handler for the event loop. Initialization of signal handlers.
All the handled signals have handlers called handle_<signalname>.
Set up all the appropriate tokens for asynchronous signal
* event-loop.h: New file. Data structures and definitions for the
event loop.
* event-loop.c: New file. Functions for the event loop
* Regenerate with autoheader.
* (AC_CHECK_FUNCS): Add poll to list of functions
to be checked for.
* configure: Regenerate.
* (SFILES): Add new source files.
(eventloop_h): Define.
(COMMON_OBS): Add new object files.
(event-loop.o): Add rule for target object.
(event-top.o): Ditto.
1999-05-05 Stan Shebs <>
* infrun.c (wait_for_inferior): Transform breaks and continues
into gotos, move the target_wait to the very top of the loop.
1999-05-05 Jonathan Larmour <>
* Ensure that GDB links with libuser32.a under
cygwin because libreadline requires it.
* (WIN32LIBS): Substitute in result from configure
* configure: regenerate
1999-05-04 Jim Blandy <>
Fix from John Rigby. Richard Henderson says it seems okay.
* alpha-tdep.c (PROC_DUMMY_FRAME): As long as we're abusing fields
of (proc)->pdr, we ought to at least abuse one large enough to
hold the value we're trying to store in it. iopt is only 32 bits
wide; cbLineOffset is a bfd_vma.
1999-05-04 DJ Delorie <>
DJGPP changes from Robert Hoehne <>
......@@ -148,6 +148,8 @@ OPCODES_CFLAGS = -I$(OP_INCLUDE)
# should set this to list all the .o or .a files to be linked in.
......@@ -217,7 +219,7 @@ CDEPS = $(XM_CDEPS) $(TM_CDEPS) $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE) \
VERSION = 19990504
VERSION = 19990510
......@@ -368,6 +370,7 @@ SFILES = ax-general.c ax-gdb.c bcache.c blockframe.c breakpoint.c \
ch-exp.c ch-lang.c ch-typeprint.c ch-valprint.c coffread.c \
command.c complaints.c corefile.c cp-valprint.c dbxread.c \
demangle.c dwarfread.c dwarf2read.c elfread.c environ.c eval.c \
event-loop.c event-top.c \
expprint.c f-exp.y f-lang.c f-typeprint.c f-valprint.c \
findvar.c gdbarch.c gdbtypes.c infcmd.c inflow.c infrun.c language.c \
jv-exp.y jv-lang.c jv-valprint.c jv-typeprint.c \
......@@ -436,6 +439,7 @@ defs_h = defs.h xm.h tm.h nm.h config.status config.h gdbarch.h
inferior_h = inferior.h $(breakpoint_h)
tracepoint_h = tracepoint.h
ax_h = ax.h
event_loop_h = event-loop.h
# Header files that need to have srcdir added. Note that in the cases
# where we use a macro like $(gdbcmd_h), things are carefully arranged
......@@ -491,7 +495,9 @@ TAGFILES_WITH_SRCDIR = $(HFILES_WITH_SRCDIR)
COMMON_OBS = version.o blockframe.o breakpoint.o findvar.o stack.o thread.o \
source.o values.o eval.o valops.o valarith.o valprint.o printcmd.o \
symtab.o symfile.o symmisc.o infcmd.o infrun.o command.o \
expprint.o environ.o gdbarch.o gdbtypes.o copying.o $(DEPFILES) \
expprint.o environ.o \
event-loop.o event-top.o \
gdbarch.o gdbtypes.o copying.o $(DEPFILES) \
mem-break.o target.o parse.o language.o $(YYOBJ) buildsym.o \
exec.o bcache.o objfiles.o minsyms.o maint.o demangle.o \
dbxread.o coffread.o elfread.o \
......@@ -1101,6 +1107,11 @@ eval.o: eval.c $(bfd_h) $(defs_h) $(expression_h) $(frame_h) \
$(gdbtypes_h) language.h $(symtab_h) target.h $(value_h) \
event-loop.o: event-loop.c $(event_loop_h)
event-top.o: event-top.c top.h $(readline_headers) \
$(defs_h) $(inferior_h) $(event_loop_h)
exec.o: exec.c $(defs_h) $(gdbcmd_h) $(gdbcore_h) $(inferior_h) \
target.h language.h gdb_string.h
......@@ -1545,11 +1556,11 @@ tic80-tdep.o: tic80-tdep.c $(defs_h)
target.o: target.c $(bfd_h) $(defs_h) $(gdbcmd_h) $(inferior_h) \
objfiles.h symfile.h target.h gdb_string.h
thread.o: thread.c $(defs_h) gdbthread.h $(gdbcmd_h)
thread.o: thread.c $(defs_h) gdbthread.h $(gdbcmd_h) target.h
top.o: top.c top.h $(bfd_h) $(getopt_h) $(readline_headers) call-cmds.h \
$(defs_h) $(gdbcmd_h) $(inferior_h) language.h signals.h \
$(remote_utils_h) gdb_string.h
$(remote_utils_h) gdb_string.h $(event_loop_h)
typeprint.o: typeprint.c $(defs_h) $(expression_h) $(gdbcmd_h) \
$(gdbcore_h) $(gdbtypes_h) language.h $(symtab_h) target.h \
......@@ -764,6 +764,7 @@ coff_symtab_read (symtab_offset, nsyms, section_offsets, objfile)
char *filestring = "";
int depth = 0;
int fcn_first_line = 0;
CORE_ADDR fcn_first_line_addr;
int fcn_last_line = 0;
int fcn_start_addr = 0;
long fcn_line_ptr = 0;
......@@ -1020,6 +1021,7 @@ coff_symtab_read (symtab_offset, nsyms, section_offsets, objfile)
if (cs->c_naux != 1)
complain (&bf_no_aux_complaint, cs->c_symnum);
fcn_first_line = main_aux.x_sym.x_misc.x_lnsz.x_lnno;
fcn_first_line_addr = cs->c_value;
/* Might want to check that locals are 0 and
context_stack_depth is zero, and complain if not. */
......@@ -1030,7 +1032,6 @@ coff_symtab_read (symtab_offset, nsyms, section_offsets, objfile)
new->name =
process_coff_symbol (&fcn_cs_saved, &fcn_aux_saved,
section_offsets, objfile);
record_line (current_subfile, fcn_first_line, cs->c_value);
else if (STREQ (cs->c_name, ".ef"))
......@@ -1063,8 +1064,18 @@ coff_symtab_read (symtab_offset, nsyms, section_offsets, objfile)
fcn_last_line = main_aux.x_sym.x_misc.x_lnsz.x_lnno;
enter_linenos (fcn_line_ptr, fcn_first_line, fcn_last_line,
/* fcn_first_line is the line number of the opening '{'.
Do not record it - because it would affect gdb's idea
of the line number of the first statement of the function -
except for one-line functions, for which it is also the line
number of all the statements and of the closing '}', and
for which we do not have any other statement-line-number. */
if (fcn_last_line == 1)
record_line (current_subfile, fcn_first_line,
enter_linenos (fcn_line_ptr, fcn_first_line, fcn_last_line,
finish_block (new->name, &local_symbols, new->old_blocks,
......@@ -135,6 +135,9 @@
/* Define if you have the bzero function. */
/* Define if you have the poll function. */
#undef HAVE_POLL
/* Define if you have the dcgettext function. */
......@@ -3371,7 +3371,7 @@ EOF
for ac_func in setpgid sbrk sigaction isascii bzero bcopy btowc
for ac_func in setpgid sbrk sigaction isascii bzero bcopy btowc poll
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:3378: checking for $ac_func" >&5
......@@ -5372,6 +5372,11 @@ fi
# libreadline needs libuser32.a in a cygwin environment
if test x$gdb_cv_os_cygwin = xyes; then
......@@ -5380,7 +5385,7 @@ fi
# 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.
echo $ac_n "checking for X""... $ac_c" 1>&6
echo "configure:6593: checking for X" >&5
echo "configure:6597: checking for X" >&5
# Check whether --with-x or --without-x was given.
if test "${with_x+set}" = set; then
......@@ -5442,12 +5447,12 @@ if test "$ac_x_includes" = NO; then
# First, try using that file with no special directory specified.
cat > conftest.$ac_ext <<EOF
#line 6655 "configure"
#line 6659 "configure"
#include "confdefs.h"
#include <$x_direct_test_include>
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:6660: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:6664: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
......@@ -5516,14 +5521,14 @@ if test "$ac_x_libraries" = NO; then
LIBS="-l$x_direct_test_library $LIBS"
cat > conftest.$ac_ext <<EOF
#line 6729 "configure"
#line 6733 "configure"
#include "confdefs.h"
int main() {
; return 0; }
if { (eval echo configure:6736: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:6740: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
# We can link X programs with no special library path.
......@@ -5796,12 +5801,12 @@ fi
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
echo "configure:7080: checking for Cygwin environment" >&5
echo "configure:7084: checking for Cygwin environment" >&5
if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
cat > conftest.$ac_ext <<EOF
#line 7085 "configure"
#line 7089 "configure"
#include "confdefs.h"
int main() {
......@@ -5812,7 +5817,7 @@ int main() {
return __CYGWIN__;
; return 0; }
if { (eval echo configure:7096: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:7100: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
......@@ -5829,19 +5834,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
test "$ac_cv_cygwin" = yes && CYGWIN=yes
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
echo "configure:7113: checking for mingw32 environment" >&5
echo "configure:7117: checking for mingw32 environment" >&5
if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
cat > conftest.$ac_ext <<EOF
#line 7118 "configure"
#line 7122 "configure"
#include "confdefs.h"
int main() {
return __MINGW32__;
; return 0; }
if { (eval echo configure:7125: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:7129: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
......@@ -5860,7 +5865,7 @@ test "$ac_cv_mingw32" = yes && MINGW32=yes
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
echo "configure:7144: checking for executable suffix" >&5
echo "configure:7148: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
......@@ -5870,10 +5875,10 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
if { (eval echo configure:7154: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
if { (eval echo configure:7158: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
*.c | *.o | *.obj | *.ilk | *.pdb) ;;
*.c | *.o | *.obj) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
......@@ -6082,6 +6087,7 @@ s%@MACHINE_OBS@%$MACHINE_OBS%g
......@@ -6091,7 +6097,6 @@ s%@IDE_X@%$IDE_X%g
......@@ -75,7 +75,7 @@ AC_HEADER_STAT
AC_CHECK_FUNCS(setpgid sbrk sigaction isascii bzero bcopy btowc)
AC_CHECK_FUNCS(setpgid sbrk sigaction isascii bzero bcopy btowc poll)
......@@ -447,7 +447,12 @@ fi
# libreadline needs libuser32.a in a cygwin environment
if test x$gdb_cv_os_cygwin = xyes; then
......@@ -1012,7 +1012,7 @@ extern void store_floating PARAMS ((void *, int, DOUBLEST));
I'm not sure it's used in all contexts. It exists to deal with there
being a few stray bits in the PC which would mislead us, not as some sort
of generic thing to handle alignment or segmentation (it's possible it
should be in TARGET_READ_PC instead). */
should be in TARGET_READ_PC instead). */
#if !defined (ADDR_BITS_REMOVE)
#define ADDR_BITS_REMOVE(addr) (addr)
#endif /* No ADDR_BITS_REMOVE. */
......@@ -1032,6 +1032,7 @@ struct target_waitstatus;
struct cmd_list_element;
extern void (*async_hook) PARAMS ((void));
extern void (*init_ui_hook) PARAMS ((char *argv0));
extern void (*command_loop_hook) PARAMS ((void));
extern void (*fputs_unfiltered_hook) PARAMS ((const char *linebuffer,
This diff is collapsed.
......@@ -35,19 +35,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "gdb_string.h"
/* Temporary variable for SET_TOP_LEVEL. */
static int top_level_val;
/* Do a setjmp on error_return and quit_return. catch_errors is
generally a cleaner way to do this, but main() would look pretty
ugly if it had to use catch_errors each time. */
#define SET_TOP_LEVEL() \
(((top_level_val = SIGSETJMP (error_return)) \
? (PTR) 0 : (PTR) memcpy (quit_return, error_return, sizeof (SIGJMP_BUF))) \
, top_level_val)
/* If nonzero, display time usage both at startup and for each command. */
int display_time;
......@@ -56,6 +43,12 @@ int display_time;
int display_space;
/* Whether this is the async version or not. The async version is
invoked on the command line with the -nw --async options. In this
version, the usual command_loop is substituted by and event loop which
processes UI events asynchronously. */
int async = 0;
/* Whether this is the command line version or not */
int tui_version = 0;
......@@ -185,7 +178,8 @@ main (argc, argv)
short option (or arbitrary numbers starting at 10 for those
with no equivalent). */
static struct option long_options[] =
{"async", no_argument, &async, 1},
#if defined(TUI)
{"tui", no_argument, &tui_version, 1},
......@@ -397,6 +391,10 @@ main (argc, argv)
quiet = 1;
/* Get ready to invoke the event loop instead of the
command_loop. See event-loop.h for more details.*/
if (async)
async_hook = setup_event_loop;
#if defined(TUI)
if (tui_version)
init_ui_hook = tuiInit;
......@@ -624,6 +622,12 @@ main (argc, argv)
/* Call the event loop, if gdb was invoked with the --async
option. Control will never get back to this file, if the event
loop is invoked. See the files event-*.[ch] for details. */
if (async_hook)
/* The default command loop.
The WIN32 Gui calls this main to set up gdb's state, and
has its own command loop. */
......@@ -1153,21 +1153,29 @@ heuristic_proc_start (pc)
static int blurb_printed = 0;
if (fence == VM_MIN_ADDRESS)
warning("Hit beginning of text section without finding");
warning("Hit heuristic-fence-post without finding");
warning ("Warning: GDB can't find the start of the function at 0x%s.",
paddr_nz (pc));
warning("enclosing function for address 0x%s", paddr_nz (pc));
if (!blurb_printed)
printf_filtered ("\
This warning occurs if you are debugging a function without any symbols\n\
(for example, in a stripped executable). In that case, you may wish to\n\
increase the size of the search with the `set heuristic-fence-post' command.\n\
Otherwise, you told GDB there was a function where there isn't one, or\n\
(more likely) you have encountered a bug in GDB.\n");
/* This actually happens frequently in embedded
development, when you first connect to a board
and your stack pointer and pc are nowhere in
particular. This message needs to give people
in that situation enough information to
determine that it's no big deal. */
printf_filtered ("\n\
GDB is unable to find the start of the function at 0x%s\n\
and thus can't determine the size of that function's stack frame.\n\
This means that GDB may be unable to access that stack frame, or\n\
the frames below it.\n\
This problem is most likely caused by an invalid program counter or\n\
stack pointer.\n\
However, if you think GDB should simply search farther back\n\
from 0x%s for code which looks like the beginning of a\n\
function, you can increase the range of the search using the `set\n\
heuristic-fence-post' command.\n",
paddr_nz (pc), paddr_nz (pc));
blurb_printed = 1;
......@@ -1258,6 +1258,7 @@ static struct {
{"SIG61", "Real-time event 61"},
{"SIG62", "Real-time event 62"},
{"SIG63", "Real-time event 63"},
{"SIGCANCEL", "LWP internal signal"},
#if defined(MACH) || defined(__MACH__)
/* Mach exceptions */
......@@ -1446,6 +1447,9 @@ target_signal_from_host (hostsig)
#if defined (SIGWAITING)
#if defined (SIGCANCEL)
if (hostsig == SIGCANCEL) return TARGET_SIGNAL_CANCEL;
#if defined (SIGLWP)
if (hostsig == SIGLWP) return TARGET_SIGNAL_LWP;
......@@ -1624,6 +1628,9 @@ target_signal_to_host (oursig)
#if defined (SIGWAITING)
#if defined (SIGCANCEL)
#if defined (SIGLWP)
......@@ -106,9 +106,14 @@ enum target_waitkind {
signals (insofar as various unices use the same numbers, anyway).
It is also the numbering of the GDB remote protocol. Other remote
protocols, if they use a different numbering, should make sure to
translate appropriately. */
translate appropriately.
/* This is based strongly on Unix/POSIX signals for several reasons:
Since these numbers have actually made it out into other software
(stubs, etc.), you mustn't disturb the assigned numbering. If you
need to add new signals here, add them to the end of the explicitly
numbered signals.
This is based strongly on Unix/POSIX signals for several reasons:
(1) This set of signals represents a widely-accepted attempt to
represent events of this sort in a portable fashion, (2) we want a
signal to make it from wait to child_wait to the user intact, (3) many
......@@ -205,6 +210,10 @@ enum target_signal {
/* Used internally by Solaris threads. See signal(5) on Solaris. */
#if defined(MACH) || defined(__MACH__)
/* Mach exceptions */
1999-05-06 Keith Seitz <>
* gdb.base/ Include stdio.h.
Wed May 5 17:44:31 1999 Stan Shebs <>
* gdb.base/crossload.exp: Remove, this has been disabled ever
since BFD stopped including all targets, and cross-GDB gets
plenty of testing anyway.
* gdb.base/i486-elf.u, gdb.base/m68k-aout.u, gdb.base/m68k-elf.u,
gdb.base/sparc-aout.u, gdb.base/i860-elf.u, gdb.base/m68k-aout2.u,
gdb.base/mips-ecoff.u, gdb.base/sparc-elf.u: Remove.
* gdb.base/README: Remove, was doc for this.
* gdb.base/ (CROSS_EXECUTABLES): Remove, no longer
1999-05-04 Elena Zannoni <>
* gdb.base/call-ar-st.exp: Fix one regular expression in test
......@@ -14,10 +14,6 @@ EXECUTABLES = all-types bitfields break \
solib so-impl-ld so-indr-cl \
step-test structs structs2 twice-tmp varargs watchpoint whatis
# uuencoded format to avoid SCCS/RCS problems with binary files.
CROSS_EXECUTABLES = i486-elf i860-elf m68k-elf m68k-aout m68k-aout2 \
mips-ecoff sparc-aout sparc-elf
......@@ -32,7 +28,7 @@ installcheck:
clean mostlyclean:
-rm -f *~ *.o a.out xgdb *.x $(CROSS_EXECUTABLES) *.ci *.tmp
-rm -f *~ *.o a.out xgdb *.x *.ci *.tmp
-rm -f core core.coremaker coremaker.core corefile $(EXECUTABLES)
-rm -f $(MISCELLANEOUS) twice-tmp.c