mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-28 04:25:10 +08:00
* source.c: #if defined => #ifdef.
* main.c (main): Only try to attach "corefile" argument if it starts with a digit.
This commit is contained in:
parent
715d2e0649
commit
e522fb52bf
@ -1,6 +1,90 @@
|
|||||||
|
Tue Aug 13 16:17:56 1991 John Gilmore (gnu at cygint.cygnus.com)
|
||||||
|
|
||||||
|
* blockframe.c (frameless_look_for_prologue): Speed up by
|
||||||
|
calling SKIP_PROLOGUE_FRAMELESS_P if it's defined.
|
||||||
|
* tm-sparc.h (SKIP_PROLOGUE, SKIP_PROLOGUE_FRAMELESS_P):
|
||||||
|
Define two variants, one faster.
|
||||||
|
* sparc-tdep.c (sparc_frame_chain): Use target_read_memory
|
||||||
|
and return zero, rather than giving an error.
|
||||||
|
(setup_arbitrary_frame): Initialize the PC in the new frame.
|
||||||
|
(skip_prologue): Add a second arg saying whether we're just
|
||||||
|
checking for a frameless function or not.
|
||||||
|
|
||||||
|
* core.c (core_open, core_close, core_xfer_memory): Move
|
||||||
|
section table pointers and bfd* into the target_ops.
|
||||||
|
(core_open): Allow errors in shared lib reading, etc.
|
||||||
|
(core_files_info): Describe shared library sections.
|
||||||
|
|
||||||
|
* exec.c (exec_open, exec_close, exec_xfer_memory, xfer_memory,
|
||||||
|
exec_files_info, set_section_command): Move section table
|
||||||
|
pointers and bfd* into the target_ops.
|
||||||
|
(add_to_section_table): Add BFD to section table.
|
||||||
|
|
||||||
|
* target.c (target_xfer_memory, target_info): Pass target to
|
||||||
|
xfer_memory and target_info functions.
|
||||||
|
* target.h: ''
|
||||||
|
|
||||||
|
* gdbcore.h: Move struct section_table.
|
||||||
|
* target.h: New home of struct section_table.
|
||||||
|
|
||||||
|
* solib.c (solib_add): New argument is the target_ops whose
|
||||||
|
section list is to be added to, if any. Reallocate the
|
||||||
|
sections in that target to add any that come from shared libs.
|
||||||
|
(throughout) so_sections renamed to sections.
|
||||||
|
(solib_xfer_memory): Deleted.
|
||||||
|
* tm-sunos.h (SOLIB_ADD): Add target argument.
|
||||||
|
(SOLIB_XFER_MEMORY): Delete.
|
||||||
|
|
||||||
|
* core.c, exec.c, inftarg.c, remote-eb.c, remote-nindy.c,
|
||||||
|
remote-vx.c, remote.c, target.c, target.h: Remove add_syms vector
|
||||||
|
from target_ops. It's the same on all targets. Add two section
|
||||||
|
pointers to target_ops.
|
||||||
|
|
||||||
|
* stack.c (find_relative_frame): Dump ancient algorithm for
|
||||||
|
"down", just use handy "next" pointers.
|
||||||
|
(frame_command): Don't error if there is no stack; let user
|
||||||
|
set one.
|
||||||
|
|
||||||
|
* inflow.c (new_tty_prefork, new_tty): New prefork routine
|
||||||
|
modifies static state in the parent process; new_tty itself
|
||||||
|
runs in the child and modifies the child's file descriptors
|
||||||
|
to match the saved static state.
|
||||||
|
* infrun.c (child_create_inferior): Call new_tty_prefork,
|
||||||
|
fork, then new_tty.
|
||||||
|
|
||||||
|
* infptrace.c (child_xfer_memory): Add ignored target arg.
|
||||||
|
* remote-eb.c (eb_xfer_inferior_memory): ''
|
||||||
|
* remote-nindy.c (nindy_xfer_inferior_memory): ''
|
||||||
|
* remote-vx.c (vx_xfer_memory): ''
|
||||||
|
* remote.c (remote_xfer_memory): ''. Rename from
|
||||||
|
remote_xfer_inferior_memory.
|
||||||
|
|
||||||
|
* main.c (main): Only try to attach "corefile" argument if
|
||||||
|
it starts with a digit.
|
||||||
|
|
||||||
|
* symfile.c (symbol_reloading): New "set/show" variable.
|
||||||
|
(symbol_file_add): Shorten message about symbol reading.
|
||||||
|
(add_symbol_file_command): Merge with add_syms_addr_command,
|
||||||
|
since this should work on all targets now.
|
||||||
|
(stop_whining): Default to zero, to shut up complaints
|
||||||
|
about bad symbol tables on many systems.
|
||||||
|
(free_named_symtabs): Just exit unless symbol_reloading.
|
||||||
|
|
||||||
|
* xm-sun3os4.h, xm-sun4os4.h: Define BROKEN_LARGE_ALLOCA,
|
||||||
|
and add comment explaining shared library screw.
|
||||||
|
|
||||||
|
* source.c: #if defined => #ifdef.
|
||||||
|
|
||||||
|
Thu Aug 8 12:23:19 1991 John Gilmore (gnu at cygint.cygnus.com)
|
||||||
|
|
||||||
|
* doc/gdbint.texinfo: Improve doc on porting to new OS's.
|
||||||
|
|
||||||
Tue Aug 6 17:16:15 1991 Roland H. Pesch (pesch at cygint.cygnus.com)
|
Tue Aug 6 17:16:15 1991 Roland H. Pesch (pesch at cygint.cygnus.com)
|
||||||
|
|
||||||
* Makefile: use doc/Makefile for doc targets
|
* doc/rdl-apps.texinfo: provide default readline-appendix finder
|
||||||
|
(doc/Makefile knows how to make one for local config)
|
||||||
|
|
||||||
|
* Makefile.in: use doc/Makefile for doc targets
|
||||||
|
|
||||||
* doc/Makefile: GDB documentation now has its own Makefile
|
* doc/Makefile: GDB documentation now has its own Makefile
|
||||||
doc/refcard.tex: renamed from "gdbrc.tex"
|
doc/refcard.tex: renamed from "gdbrc.tex"
|
||||||
|
31
gdb/main.c
31
gdb/main.c
@ -3,19 +3,19 @@
|
|||||||
|
|
||||||
This file is part of GDB.
|
This file is part of GDB.
|
||||||
|
|
||||||
GDB is free software; you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation; either version 1, or (at your option)
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
GDB is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with GDB; see the file COPYING. If not, write to
|
along with this program; if not, write to the Free Software
|
||||||
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
int fclose ();
|
int fclose ();
|
||||||
@ -28,9 +28,11 @@ int fclose ();
|
|||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "breakpoint.h"
|
#include "breakpoint.h"
|
||||||
|
|
||||||
#include <getopt.h>
|
#include "getopt.h"
|
||||||
#include <readline/readline.h>
|
|
||||||
#include <readline/history.h>
|
/* readline include files */
|
||||||
|
#include "readline.h"
|
||||||
|
#include "history.h"
|
||||||
|
|
||||||
/* readline defines this. */
|
/* readline defines this. */
|
||||||
#undef savestring
|
#undef savestring
|
||||||
@ -45,11 +47,11 @@ int fclose ();
|
|||||||
#include <setjmp.h>
|
#include <setjmp.h>
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
#ifdef SET_STACK_LIMIT_HUGE
|
#ifdef SET_STACK_LIMIT_HUGE
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include <sys/resource.h>
|
#include <sys/resource.h>
|
||||||
#include <ctype.h>
|
|
||||||
|
|
||||||
int original_stack_limit;
|
int original_stack_limit;
|
||||||
#endif
|
#endif
|
||||||
@ -581,7 +583,7 @@ GDB manual (available as on-line info or a printed manual).\n", stderr);
|
|||||||
if (corearg != NULL)
|
if (corearg != NULL)
|
||||||
if (!setjmp (to_top_level))
|
if (!setjmp (to_top_level))
|
||||||
core_file_command (corearg, !batch);
|
core_file_command (corearg, !batch);
|
||||||
else if (!setjmp (to_top_level))
|
else if (isdigit (corearg[0]) && !setjmp (to_top_level))
|
||||||
attach_command (corearg, !batch);
|
attach_command (corearg, !batch);
|
||||||
do_cleanups (ALL_CLEANUPS);
|
do_cleanups (ALL_CLEANUPS);
|
||||||
|
|
||||||
@ -1157,6 +1159,13 @@ command_line_input (prrompt, repeat)
|
|||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
|
/* Reports are that some Sys V's don't flush stdout/err on reads
|
||||||
|
from stdin, when stdin/out are sockets rather than ttys. So we
|
||||||
|
have to do it ourselves, to make emacs-gdb and xxgdb work.
|
||||||
|
On other machines, doing this once per input should be a cheap nop. */
|
||||||
|
fflush (stdout);
|
||||||
|
fflush (stderr);
|
||||||
|
|
||||||
/* Don't use fancy stuff if not talking to stdin. */
|
/* Don't use fancy stuff if not talking to stdin. */
|
||||||
if (command_editing_p && instream == stdin
|
if (command_editing_p && instream == stdin
|
||||||
&& ISATTY (instream))
|
&& ISATTY (instream))
|
||||||
|
71
gdb/source.c
71
gdb/source.c
@ -3,19 +3,19 @@
|
|||||||
|
|
||||||
This file is part of GDB.
|
This file is part of GDB.
|
||||||
|
|
||||||
GDB is free software; you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation; either version 1, or (at your option)
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
GDB is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with GDB; see the file COPYING. If not, write to
|
along with this program; if not, write to the Free Software
|
||||||
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "defs.h"
|
#include "defs.h"
|
||||||
@ -34,13 +34,12 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
|||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include "gdbcore.h"
|
#include "gdbcore.h"
|
||||||
|
#include "regex.h"
|
||||||
|
|
||||||
extern char *strstr();
|
extern char *strstr();
|
||||||
|
|
||||||
extern void set_next_address ();
|
extern void set_next_address ();
|
||||||
|
|
||||||
void mod_path ();
|
|
||||||
|
|
||||||
/* Path of directories to search for source files.
|
/* Path of directories to search for source files.
|
||||||
Same format as the PATH environment variable's value. */
|
Same format as the PATH environment variable's value. */
|
||||||
|
|
||||||
@ -97,25 +96,27 @@ select_source_symtab (s)
|
|||||||
free (sals.sals);
|
free (sals.sals);
|
||||||
current_source_symtab = sal.symtab;
|
current_source_symtab = sal.symtab;
|
||||||
current_source_line = max (sal.line - (lines_to_list () - 1), 1);
|
current_source_line = max (sal.line - (lines_to_list () - 1), 1);
|
||||||
return;
|
if (current_source_symtab)
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* All right; find the last file in the symtab list (ignoring .h's). */
|
/* All right; find the last file in the symtab list (ignoring .h's). */
|
||||||
|
|
||||||
if (s = symtab_list)
|
current_source_line = 1;
|
||||||
|
|
||||||
|
for (s = symtab_list; s; s = s->next)
|
||||||
{
|
{
|
||||||
do
|
char *name = s->filename;
|
||||||
{
|
int len = strlen (name);
|
||||||
char *name = s->filename;
|
if (! (len > 2 && !strcmp (&name[len - 2], ".h")))
|
||||||
int len = strlen (name);
|
current_source_symtab = s;
|
||||||
if (! (len > 2 && !strcmp (&name[len - 2], ".h")))
|
|
||||||
current_source_symtab = s;
|
|
||||||
s = s->next;
|
|
||||||
}
|
|
||||||
while (s);
|
|
||||||
current_source_line = 1;
|
|
||||||
}
|
}
|
||||||
else if (partial_symtab_list)
|
if (current_source_symtab)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* Howabout the partial symtab list? */
|
||||||
|
|
||||||
|
if (partial_symtab_list)
|
||||||
{
|
{
|
||||||
ps = partial_symtab_list;
|
ps = partial_symtab_list;
|
||||||
while (ps)
|
while (ps)
|
||||||
@ -131,10 +132,11 @@ select_source_symtab (s)
|
|||||||
fatal ("Internal: select_source_symtab: readin pst found and no symtabs.");
|
fatal ("Internal: select_source_symtab: readin pst found and no symtabs.");
|
||||||
else
|
else
|
||||||
current_source_symtab = PSYMTAB_TO_SYMTAB (cs_pst);
|
current_source_symtab = PSYMTAB_TO_SYMTAB (cs_pst);
|
||||||
else
|
|
||||||
current_source_symtab = 0;
|
|
||||||
current_source_line = 1;
|
|
||||||
}
|
}
|
||||||
|
if (current_source_symtab)
|
||||||
|
return;
|
||||||
|
|
||||||
|
error ("Can't find a default source file");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -193,7 +195,7 @@ directory_command (dirname, from_tty)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
mod_path (dirname, from_tty, &source_path);
|
mod_path (dirname, &source_path);
|
||||||
if (from_tty)
|
if (from_tty)
|
||||||
show_directories ();
|
show_directories ();
|
||||||
forget_cached_source_info ();
|
forget_cached_source_info ();
|
||||||
@ -202,9 +204,8 @@ directory_command (dirname, from_tty)
|
|||||||
/* Add zero or more directories to the front of an arbitrary path. */
|
/* Add zero or more directories to the front of an arbitrary path. */
|
||||||
|
|
||||||
void
|
void
|
||||||
mod_path (dirname, from_tty, which_path)
|
mod_path (dirname, which_path)
|
||||||
char *dirname;
|
char *dirname;
|
||||||
int from_tty;
|
|
||||||
char **which_path;
|
char **which_path;
|
||||||
{
|
{
|
||||||
char *old = *which_path;
|
char *old = *which_path;
|
||||||
@ -541,7 +542,7 @@ find_source_lines (s, desc)
|
|||||||
if (exec_bfd && bfd_get_mtime(exec_bfd) < st.st_mtime)
|
if (exec_bfd && bfd_get_mtime(exec_bfd) < st.st_mtime)
|
||||||
printf ("Source file is more recent than executable.\n");
|
printf ("Source file is more recent than executable.\n");
|
||||||
|
|
||||||
#if defined (BROKEN_LARGE_ALLOCA)
|
#ifdef BROKEN_LARGE_ALLOCA
|
||||||
data = (char *) xmalloc (st.st_size);
|
data = (char *) xmalloc (st.st_size);
|
||||||
make_cleanup (free, data);
|
make_cleanup (free, data);
|
||||||
#else
|
#else
|
||||||
@ -773,7 +774,7 @@ list_command (arg, from_tty)
|
|||||||
char *p;
|
char *p;
|
||||||
|
|
||||||
if (symtab_list == 0 && partial_symtab_list == 0)
|
if (symtab_list == 0 && partial_symtab_list == 0)
|
||||||
error ("No symbol table is loaded. Use the \"symbol-file\" command.");
|
error ("No symbol table is loaded. Use the \"file\" command.");
|
||||||
|
|
||||||
/* Pull in a current source symtab if necessary */
|
/* Pull in a current source symtab if necessary */
|
||||||
if (current_source_symtab == 0 &&
|
if (current_source_symtab == 0 &&
|
||||||
@ -982,6 +983,7 @@ line_info (arg, from_tty)
|
|||||||
|
|
||||||
/* Commands to search the source file for a regexp. */
|
/* Commands to search the source file for a regexp. */
|
||||||
|
|
||||||
|
/* ARGSUSED */
|
||||||
static void
|
static void
|
||||||
forward_search_command (regex, from_tty)
|
forward_search_command (regex, from_tty)
|
||||||
char *regex;
|
char *regex;
|
||||||
@ -1024,15 +1026,16 @@ forward_search_command (regex, from_tty)
|
|||||||
stream = fdopen (desc, "r");
|
stream = fdopen (desc, "r");
|
||||||
clearerr (stream);
|
clearerr (stream);
|
||||||
while (1) {
|
while (1) {
|
||||||
|
/* FIXME!!! We walk right off the end of buf if we get a long line!!! */
|
||||||
char buf[4096]; /* Should be reasonable??? */
|
char buf[4096]; /* Should be reasonable??? */
|
||||||
register char *p = buf;
|
register char *p = buf;
|
||||||
|
|
||||||
c = fgetc (stream);
|
c = getc (stream);
|
||||||
if (c == EOF)
|
if (c == EOF)
|
||||||
break;
|
break;
|
||||||
do {
|
do {
|
||||||
*p++ = c;
|
*p++ = c;
|
||||||
} while (c != '\n' && (c = fgetc (stream)) >= 0);
|
} while (c != '\n' && (c = getc (stream)) >= 0);
|
||||||
|
|
||||||
/* we now have a source line in buf, null terminate and match */
|
/* we now have a source line in buf, null terminate and match */
|
||||||
*p = 0;
|
*p = 0;
|
||||||
@ -1052,6 +1055,7 @@ forward_search_command (regex, from_tty)
|
|||||||
fclose (stream);
|
fclose (stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ARGSUSED */
|
||||||
static void
|
static void
|
||||||
reverse_search_command (regex, from_tty)
|
reverse_search_command (regex, from_tty)
|
||||||
char *regex;
|
char *regex;
|
||||||
@ -1095,15 +1099,16 @@ reverse_search_command (regex, from_tty)
|
|||||||
clearerr (stream);
|
clearerr (stream);
|
||||||
while (line > 1)
|
while (line > 1)
|
||||||
{
|
{
|
||||||
|
/* FIXME!!! We walk right off the end of buf if we get a long line!!! */
|
||||||
char buf[4096]; /* Should be reasonable??? */
|
char buf[4096]; /* Should be reasonable??? */
|
||||||
register char *p = buf;
|
register char *p = buf;
|
||||||
|
|
||||||
c = fgetc (stream);
|
c = getc (stream);
|
||||||
if (c == EOF)
|
if (c == EOF)
|
||||||
break;
|
break;
|
||||||
do {
|
do {
|
||||||
*p++ = c;
|
*p++ = c;
|
||||||
} while (c != '\n' && (c = fgetc (stream)) >= 0);
|
} while (c != '\n' && (c = getc (stream)) >= 0);
|
||||||
|
|
||||||
/* We now have a source line in buf; null terminate and match. */
|
/* We now have a source line in buf; null terminate and match. */
|
||||||
*p = 0;
|
*p = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user