Changes for MacGDB:
Thu May 12 17:04:58 1994 Stan Shebs (shebs@andros.cygnus.com) * mpw-make.in (INCLUDE_CFLAGS): Add readline source dir. (READLINE_CFLAGS, READLINE_SRC, READLINE_DIR): Uncomment. (TSOBS): Don't compile inflow.c. (all, install): Add MacGDB. * main.c (main): Do Mac-specific init and command loop if a standalone app, skip full option help message if compiling with MPW C. (gdb_readline): If MPW, add a newline after the (gdb) prompt. * utils.c (_initialize_utils): If MPW, don't try to use termcap to compute the window size. * config/m68k/xm-mpw.h (printf, fprintf, fputs, fputc, putc, fflush): Define as macros that expand into hacked_... versions. (StandAlone, mac_app): Declare. * macgdb.r (SIZE): Set the default partition to 4000K. * mac-xdep.c (readline.h, history.h): Include. (terminal.h): Don't include. (mac_app): Define. (gdb_has_a_terminal): Define Mac-specific version. (do_keyboard_command): Simplify search for command string. (readline): Define as gdb_readline. Add other history/readline stubs to make main gdb link. (hacked_fprintf, hacked_printf, hacked_vfprintf, hacked_fputs, hacked_fputc, hacked_fflush): New functions, intercept output to stdout and stderr, send to console window.
This commit is contained in:
parent
edfb9ffd1f
commit
a6b26c4431
7 changed files with 357 additions and 40 deletions
|
@ -1,3 +1,30 @@
|
||||||
|
Thu May 12 17:04:58 1994 Stan Shebs (shebs@andros.cygnus.com)
|
||||||
|
|
||||||
|
* mpw-make.in (INCLUDE_CFLAGS): Add readline source dir.
|
||||||
|
(READLINE_CFLAGS, READLINE_SRC, READLINE_DIR): Uncomment.
|
||||||
|
(TSOBS): Don't compile inflow.c.
|
||||||
|
(all, install): Add MacGDB.
|
||||||
|
* main.c (main): Do Mac-specific init and command loop if a
|
||||||
|
standalone app, skip full option help message if compiling
|
||||||
|
with MPW C.
|
||||||
|
(gdb_readline): If MPW, add a newline after the (gdb) prompt.
|
||||||
|
* utils.c (_initialize_utils): If MPW, don't try to use termcap to
|
||||||
|
compute the window size.
|
||||||
|
* config/m68k/xm-mpw.h (printf, fprintf, fputs, fputc, putc,
|
||||||
|
fflush): Define as macros that expand into hacked_... versions.
|
||||||
|
(StandAlone, mac_app): Declare.
|
||||||
|
* macgdb.r (SIZE): Set the default partition to 4000K.
|
||||||
|
* mac-xdep.c (readline.h, history.h): Include.
|
||||||
|
(terminal.h): Don't include.
|
||||||
|
(mac_app): Define.
|
||||||
|
(gdb_has_a_terminal): Define Mac-specific version.
|
||||||
|
(do_keyboard_command): Simplify search for command string.
|
||||||
|
(readline): Define as gdb_readline.
|
||||||
|
Add other history/readline stubs to make main gdb link.
|
||||||
|
(hacked_fprintf, hacked_printf, hacked_vfprintf, hacked_fputs,
|
||||||
|
hacked_fputc, hacked_fflush): New functions, intercept output to
|
||||||
|
stdout and stderr, send to console window.
|
||||||
|
|
||||||
Tue Apr 26 17:44:27 1994 Stan Shebs (shebs@andros.cygnus.com)
|
Tue Apr 26 17:44:27 1994 Stan Shebs (shebs@andros.cygnus.com)
|
||||||
|
|
||||||
* mpw-make.in (MacGDB): New target, standalone Mac-hosted gdb.
|
* mpw-make.in (MacGDB): New target, standalone Mac-hosted gdb.
|
||||||
|
|
|
@ -61,6 +61,15 @@ void mpw_abort ();
|
||||||
#define fseek mpw_fseek
|
#define fseek mpw_fseek
|
||||||
#define abort mpw_abort
|
#define abort mpw_abort
|
||||||
|
|
||||||
|
#define printf hacked_printf
|
||||||
|
#define fprintf hacked_fprintf
|
||||||
|
#define vprintf hacked_vfprintf
|
||||||
|
#define fputs hacked_fputs
|
||||||
|
#define fputc hacked_fputc
|
||||||
|
#undef putc
|
||||||
|
#define putc hacked_putc
|
||||||
|
#define fflush hacked_fflush
|
||||||
|
|
||||||
/* Define as macros so as to mask the previous enum. */
|
/* Define as macros so as to mask the previous enum. */
|
||||||
|
|
||||||
#ifndef BFD_TRUE_FALSE
|
#ifndef BFD_TRUE_FALSE
|
||||||
|
@ -112,3 +121,7 @@ char *strdup (char *s1);
|
||||||
#ifndef R_OK
|
#ifndef R_OK
|
||||||
#define R_OK 4
|
#define R_OK 4
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
extern int StandAlone;
|
||||||
|
|
||||||
|
extern int mac_app;
|
||||||
|
|
238
gdb/mac-xdep.c
238
gdb/mac-xdep.c
|
@ -20,6 +20,9 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
#include "defs.h"
|
#include "defs.h"
|
||||||
|
|
||||||
|
#include "readline.h"
|
||||||
|
#include "history.h"
|
||||||
|
|
||||||
#include <Values.h>
|
#include <Values.h>
|
||||||
#include <Types.h>
|
#include <Types.h>
|
||||||
#include <Resources.h>
|
#include <Resources.h>
|
||||||
|
@ -75,10 +78,11 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
#include "gdbtypes.h"
|
#include "gdbtypes.h"
|
||||||
#include "expression.h"
|
#include "expression.h"
|
||||||
#include "language.h"
|
#include "language.h"
|
||||||
#include "terminal.h" /* For job_control. */
|
|
||||||
|
|
||||||
#include "mac-defs.h"
|
#include "mac-defs.h"
|
||||||
|
|
||||||
|
int mac_app;
|
||||||
|
|
||||||
int useWNE;
|
int useWNE;
|
||||||
|
|
||||||
int hasColorQD;
|
int hasColorQD;
|
||||||
|
@ -102,6 +106,10 @@ TEHandle console_text;
|
||||||
|
|
||||||
Rect console_text_rect;
|
Rect console_text_rect;
|
||||||
|
|
||||||
|
/* This will go away eventually. */
|
||||||
|
gdb_has_a_terminal () { return 1; }
|
||||||
|
|
||||||
|
|
||||||
mac_init ()
|
mac_init ()
|
||||||
{
|
{
|
||||||
SysEnvRec se;
|
SysEnvRec se;
|
||||||
|
@ -154,7 +162,7 @@ mac_init ()
|
||||||
else
|
else
|
||||||
console_window = GetNewWindow (wConsole, NULL, (WindowPtr) -1L);
|
console_window = GetNewWindow (wConsole, NULL, (WindowPtr) -1L);
|
||||||
|
|
||||||
if (1) DebugStr("\pnear beginning");
|
if (0) DebugStr("\pnear beginning");
|
||||||
SetPort (console_window);
|
SetPort (console_window);
|
||||||
console_text_rect = console_window->portRect;
|
console_text_rect = console_window->portRect;
|
||||||
console_text_rect.bottom -= sbarwid - 1;
|
console_text_rect.bottom -= sbarwid - 1;
|
||||||
|
@ -526,6 +534,7 @@ do_keyboard_command (key)
|
||||||
char key;
|
char key;
|
||||||
{
|
{
|
||||||
int startpos, endpos, i;
|
int startpos, endpos, i;
|
||||||
|
char *last_newline;
|
||||||
char buf[10], *text_str, *command;
|
char buf[10], *text_str, *command;
|
||||||
CharsHandle text;
|
CharsHandle text;
|
||||||
|
|
||||||
|
@ -544,24 +553,20 @@ char key;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (i = startpos; i > 0; --i)
|
DebugStr("\plooking for command");
|
||||||
|
last_newline = strrchr(*text+startpos, '\n');
|
||||||
|
if (last_newline)
|
||||||
{
|
{
|
||||||
strncpy (buf, *text + i, 5);
|
strncpy (commandbuf + 1,
|
||||||
buf[5] = 0;
|
last_newline,
|
||||||
if (strncmp (buf, "(gdb)") == 0)
|
last_newline - (*text+startpos));
|
||||||
break;
|
commandbuf[1 + last_newline - (*text+startpos)] = 0;
|
||||||
}
|
command = commandbuf + 1;
|
||||||
if (i > 0)
|
|
||||||
{
|
|
||||||
strncpy (commandbuf + 1, *text + i + 5, startpos - i);
|
|
||||||
commandbuf[1 + startpos - i] = '\0';
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SysBeep (20);
|
command = "help";
|
||||||
commandbuf[1] = '\0';
|
|
||||||
}
|
}
|
||||||
command = commandbuf + 1;
|
|
||||||
}
|
}
|
||||||
HUnlock ((Handle) text);
|
HUnlock ((Handle) text);
|
||||||
commandbuf[0] = strlen(command);
|
commandbuf[0] = strlen(command);
|
||||||
|
@ -623,8 +628,207 @@ adjust_console_scrollbars ()
|
||||||
newmax = lines - (((*console_text)->viewRect.bottom - (*console_text)->viewRect.top)
|
newmax = lines - (((*console_text)->viewRect.bottom - (*console_text)->viewRect.top)
|
||||||
/ (*console_text)->lineHeight);
|
/ (*console_text)->lineHeight);
|
||||||
if (newmax < 0) newmax = 0;
|
if (newmax < 0) newmax = 0;
|
||||||
SetCtlMax(console_v_scrollbar, newmax);
|
SetCtlMax (console_v_scrollbar, newmax);
|
||||||
value = ((*console_text)->viewRect.top - (*console_text)->destRect.top)
|
value = ((*console_text)->viewRect.top - (*console_text)->destRect.top)
|
||||||
/ (*console_text)->lineHeight;
|
/ (*console_text)->lineHeight;
|
||||||
SetCtlValue(console_v_scrollbar, value);
|
SetCtlValue (console_v_scrollbar, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Readline substitute. */
|
||||||
|
|
||||||
|
char *
|
||||||
|
readline (char *prrompt)
|
||||||
|
{
|
||||||
|
return gdb_readline (prrompt);
|
||||||
|
}
|
||||||
|
|
||||||
|
char *rl_completer_word_break_characters;
|
||||||
|
|
||||||
|
char *rl_completer_quote_characters;
|
||||||
|
|
||||||
|
int (*rl_completion_entry_function) ();
|
||||||
|
|
||||||
|
int rl_point;
|
||||||
|
|
||||||
|
char *rl_line_buffer;
|
||||||
|
|
||||||
|
char *rl_readline_name;
|
||||||
|
|
||||||
|
/* History substitute. */
|
||||||
|
|
||||||
|
void
|
||||||
|
add_history (char *buf)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
stifle_history (int n)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
unstifle_history ()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
read_history (char *name)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
write_history (char *name)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
history_expand (char *x, char **y)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
extern HIST_ENTRY *
|
||||||
|
history_get (int xxx)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int history_base;
|
||||||
|
|
||||||
|
char *
|
||||||
|
filename_completion_function (char *text, char *name)
|
||||||
|
{
|
||||||
|
return "?";
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
tilde_expand (char *str)
|
||||||
|
{
|
||||||
|
return strsave (str);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Modified versions of standard I/O. */
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#undef fprintf
|
||||||
|
|
||||||
|
int
|
||||||
|
hacked_fprintf (FILE *fp, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
va_start (ap, fmt);
|
||||||
|
if (mac_app && (fp == stdout || fp == stderr))
|
||||||
|
{
|
||||||
|
char buf[1000];
|
||||||
|
|
||||||
|
ret = vsprintf(buf, fmt, ap);
|
||||||
|
TEInsert (buf, strlen(buf), console_text);
|
||||||
|
TESetSelect (100000, 100000, console_text);
|
||||||
|
draw_console ();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
ret = vfprintf (fp, fmt, ap);
|
||||||
|
va_end (ap);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef printf
|
||||||
|
|
||||||
|
int
|
||||||
|
hacked_printf (const char *fmt, ...)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
va_start (ap, fmt);
|
||||||
|
if (mac_app)
|
||||||
|
{
|
||||||
|
ret = hacked_vfprintf(stdout, fmt, ap);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
ret = vfprintf (stdout, fmt, ap);
|
||||||
|
va_end (ap);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef vfprintf
|
||||||
|
|
||||||
|
int
|
||||||
|
hacked_vfprintf (FILE *fp, const char *format, va_list args)
|
||||||
|
{
|
||||||
|
if (mac_app && (fp == stdout || fp == stderr))
|
||||||
|
{
|
||||||
|
char buf[1000];
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = vsprintf(buf, format, args);
|
||||||
|
TEInsert (buf, strlen(buf), console_text);
|
||||||
|
TESetSelect (100000, 100000, console_text);
|
||||||
|
draw_console ();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return vfprintf (fp, format, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef fputs
|
||||||
|
|
||||||
|
hacked_fputs (const char *s, FILE *fp)
|
||||||
|
{
|
||||||
|
if (mac_app && (fp == stdout || fp == stderr))
|
||||||
|
{
|
||||||
|
TEInsert (s, strlen(s), console_text);
|
||||||
|
TESetSelect (100000, 100000, console_text);
|
||||||
|
draw_console ();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return fputs (s, fp);
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef fputc
|
||||||
|
|
||||||
|
hacked_fputc (const char c, FILE *fp)
|
||||||
|
{
|
||||||
|
if (mac_app && (fp == stdout || fp == stderr))
|
||||||
|
{
|
||||||
|
char buf[2];
|
||||||
|
|
||||||
|
buf[0] = c;
|
||||||
|
TEInsert (buf, 1, console_text);
|
||||||
|
TESetSelect (100000, 100000, console_text);
|
||||||
|
draw_console ();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return fputc (c, fp);
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef putc
|
||||||
|
|
||||||
|
hacked_putc (const char c, FILE *fp)
|
||||||
|
{
|
||||||
|
if (mac_app && (fp == stdout || fp == stderr))
|
||||||
|
{
|
||||||
|
char buf[2];
|
||||||
|
|
||||||
|
buf[0] = c;
|
||||||
|
TEInsert (buf, 1, console_text);
|
||||||
|
TESetSelect (100000, 100000, console_text);
|
||||||
|
draw_console ();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return fputc (c, fp);
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef fflush
|
||||||
|
|
||||||
|
hacked_fflush (FILE *fp)
|
||||||
|
{
|
||||||
|
if (mac_app && (fp == stdout || fp == stderr))
|
||||||
|
return 0;
|
||||||
|
return fflush (fp);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -138,8 +138,8 @@ resource 'SIZE' (-1) {
|
||||||
reserved,
|
reserved,
|
||||||
reserved,
|
reserved,
|
||||||
reserved,
|
reserved,
|
||||||
50000,
|
4000*1024,
|
||||||
50000
|
4000*1024
|
||||||
};
|
};
|
||||||
|
|
||||||
resource 'DLOG' (128) {
|
resource 'DLOG' (128) {
|
||||||
|
|
86
gdb/main.c
86
gdb/main.c
|
@ -382,6 +382,18 @@ return_to_top_level (reason)
|
||||||
|
|
||||||
disable_current_display ();
|
disable_current_display ();
|
||||||
do_cleanups (ALL_CLEANUPS);
|
do_cleanups (ALL_CLEANUPS);
|
||||||
|
|
||||||
|
if (annotation_level > 1)
|
||||||
|
switch (reason)
|
||||||
|
{
|
||||||
|
case RETURN_QUIT:
|
||||||
|
printf_unfiltered ("\n\032\032quit\n");
|
||||||
|
break;
|
||||||
|
case RETURN_ERROR:
|
||||||
|
printf_unfiltered ("\n\032\032error\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
(NORETURN void) longjmp
|
(NORETURN void) longjmp
|
||||||
(reason == RETURN_ERROR ? error_return : quit_return, 1);
|
(reason == RETURN_ERROR ? error_return : quit_return, 1);
|
||||||
}
|
}
|
||||||
|
@ -551,6 +563,16 @@ main (argc, argv)
|
||||||
|
|
||||||
register int i;
|
register int i;
|
||||||
|
|
||||||
|
/* start-sanitize-mpw */
|
||||||
|
#ifdef MPW
|
||||||
|
/* Drop into MacsBug, but only if the executable is specially named. */
|
||||||
|
if (strcmp(argv[0], "DEBUGGDB") == 0)
|
||||||
|
DebugStr("\pat start of GDB main");
|
||||||
|
|
||||||
|
if (StandAlone)
|
||||||
|
mac_app = mac_init ();
|
||||||
|
#endif /* MPW */
|
||||||
|
/* end-sanitize-mpw */
|
||||||
/* This needs to happen before the first use of malloc. */
|
/* This needs to happen before the first use of malloc. */
|
||||||
init_malloc ((PTR) NULL);
|
init_malloc ((PTR) NULL);
|
||||||
|
|
||||||
|
@ -790,6 +812,12 @@ main (argc, argv)
|
||||||
|
|
||||||
/* But don't use *_filtered here. We don't want to prompt for continue
|
/* But don't use *_filtered here. We don't want to prompt for continue
|
||||||
no matter how small the screen or how much we're going to print. */
|
no matter how small the screen or how much we're going to print. */
|
||||||
|
/* start-sanitize-mpw */
|
||||||
|
/* For reasons too ugly to describe... */
|
||||||
|
#ifdef MPW_C
|
||||||
|
fputs_unfiltered ("This is the GNU debugger.\n", gdb_stdout);
|
||||||
|
#else
|
||||||
|
/* end-sanitize-mpw */
|
||||||
fputs_unfiltered ("\
|
fputs_unfiltered ("\
|
||||||
This is the GNU debugger. Usage:\n\
|
This is the GNU debugger. Usage:\n\
|
||||||
gdb [options] [executable-file [core-file or process-id]]\n\
|
gdb [options] [executable-file [core-file or process-id]]\n\
|
||||||
|
@ -812,6 +840,9 @@ Options:\n\
|
||||||
--mapped Use mapped symbol files if supported on this system.\n\
|
--mapped Use mapped symbol files if supported on this system.\n\
|
||||||
--readnow Fully read symbol files on first access.\n\
|
--readnow Fully read symbol files on first access.\n\
|
||||||
", gdb_stdout);
|
", gdb_stdout);
|
||||||
|
/* start-sanitize-mpw */
|
||||||
|
#endif /* MPW_C */
|
||||||
|
/* end-sanitize-mpw */
|
||||||
#ifdef ADDITIONAL_OPTION_HELP
|
#ifdef ADDITIONAL_OPTION_HELP
|
||||||
fputs_unfiltered (ADDITIONAL_OPTION_HELP, gdb_stdout);
|
fputs_unfiltered (ADDITIONAL_OPTION_HELP, gdb_stdout);
|
||||||
#endif
|
#endif
|
||||||
|
@ -990,6 +1021,17 @@ GDB manual (available as on-line info or a printed manual).\n", gdb_stdout);
|
||||||
if (!SET_TOP_LEVEL ())
|
if (!SET_TOP_LEVEL ())
|
||||||
{
|
{
|
||||||
do_cleanups (ALL_CLEANUPS); /* Do complete cleanup */
|
do_cleanups (ALL_CLEANUPS); /* Do complete cleanup */
|
||||||
|
/* start-sanitize-mpw */
|
||||||
|
#ifdef MPW
|
||||||
|
/* If we're being a Mac application, go into a Mac-specific
|
||||||
|
event-handling loop instead. We still want to be inside
|
||||||
|
the outer loop, because that will catch longjmps resulting
|
||||||
|
from some command executions. */
|
||||||
|
if (mac_app)
|
||||||
|
mac_command_loop ();
|
||||||
|
else
|
||||||
|
#endif /* MPW */
|
||||||
|
/* start-sanitize-mpw */
|
||||||
command_loop ();
|
command_loop ();
|
||||||
quit_command ((char *)0, instream == stdin);
|
quit_command ((char *)0, instream == stdin);
|
||||||
}
|
}
|
||||||
|
@ -1119,7 +1161,7 @@ command_loop ()
|
||||||
reinitialize_more_filter ();
|
reinitialize_more_filter ();
|
||||||
old_chain = make_cleanup (command_loop_marker, 0);
|
old_chain = make_cleanup (command_loop_marker, 0);
|
||||||
command = command_line_input (instream == stdin ? prompt : (char *) NULL,
|
command = command_line_input (instream == stdin ? prompt : (char *) NULL,
|
||||||
instream == stdin);
|
instream == stdin, "prompt");
|
||||||
if (command == 0)
|
if (command == 0)
|
||||||
return;
|
return;
|
||||||
execute_command (command, instream == stdin);
|
execute_command (command, instream == stdin);
|
||||||
|
@ -1166,6 +1208,13 @@ gdb_readline (prrompt)
|
||||||
character position to be off, since the newline we read from
|
character position to be off, since the newline we read from
|
||||||
the user is not accounted for. */
|
the user is not accounted for. */
|
||||||
fputs_unfiltered (prrompt, gdb_stdout);
|
fputs_unfiltered (prrompt, gdb_stdout);
|
||||||
|
/* start-sanitize-mpw */
|
||||||
|
#ifdef MPW
|
||||||
|
/* Move to a new line so the entered line doesn't have a prompt
|
||||||
|
on the front of it. */
|
||||||
|
fputs_unfiltered ("\n", gdb_stdout);
|
||||||
|
#endif /* MPW */
|
||||||
|
/* end-sanitize-mpw */
|
||||||
gdb_flush (gdb_stdout);
|
gdb_flush (gdb_stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1691,9 +1740,10 @@ init_signals ()
|
||||||
simple input as the user has requested. */
|
simple input as the user has requested. */
|
||||||
|
|
||||||
char *
|
char *
|
||||||
command_line_input (prrompt, repeat)
|
command_line_input (prrompt, repeat, annotation_suffix)
|
||||||
char *prrompt;
|
char *prrompt;
|
||||||
int repeat;
|
int repeat;
|
||||||
|
char *annotation_suffix;
|
||||||
{
|
{
|
||||||
static char *linebuffer = 0;
|
static char *linebuffer = 0;
|
||||||
static unsigned linelength = 0;
|
static unsigned linelength = 0;
|
||||||
|
@ -1705,11 +1755,17 @@ command_line_input (prrompt, repeat)
|
||||||
char *nline;
|
char *nline;
|
||||||
char got_eof = 0;
|
char got_eof = 0;
|
||||||
|
|
||||||
if (annotation_level > 1 && prrompt != NULL)
|
if (annotation_level > 1 && instream == stdin)
|
||||||
{
|
{
|
||||||
local_prompt = alloca (strlen (prrompt) + 20);
|
local_prompt = alloca ((prrompt == NULL ? 0 : strlen (prrompt))
|
||||||
strcpy (local_prompt, prrompt);
|
+ strlen (annotation_suffix) + 40);
|
||||||
strcat (local_prompt, "\n\032\032prompt\n");
|
if (prrompt == NULL)
|
||||||
|
local_prompt[0] = '\0';
|
||||||
|
else
|
||||||
|
strcpy (local_prompt, prrompt);
|
||||||
|
strcat (local_prompt, "\n\032\032");
|
||||||
|
strcat (local_prompt, annotation_suffix);
|
||||||
|
strcat (local_prompt, "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (linebuffer == 0)
|
if (linebuffer == 0)
|
||||||
|
@ -1748,7 +1804,11 @@ command_line_input (prrompt, repeat)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (annotation_level > 1 && instream == stdin)
|
if (annotation_level > 1 && instream == stdin)
|
||||||
printf_unfiltered ("\n\032\032pre-prompt\n");
|
{
|
||||||
|
printf_unfiltered ("\n\032\032pre-");
|
||||||
|
printf_unfiltered (annotation_suffix);
|
||||||
|
printf_unfiltered ("\n");
|
||||||
|
}
|
||||||
|
|
||||||
/* 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
|
||||||
|
@ -1758,7 +1818,11 @@ command_line_input (prrompt, repeat)
|
||||||
rl = gdb_readline (local_prompt);
|
rl = gdb_readline (local_prompt);
|
||||||
|
|
||||||
if (annotation_level > 1 && instream == stdin)
|
if (annotation_level > 1 && instream == stdin)
|
||||||
printf_unfiltered ("\n\032\032post-prompt\n");
|
{
|
||||||
|
printf_unfiltered ("\n\032\032post-");
|
||||||
|
printf_unfiltered (annotation_suffix);
|
||||||
|
printf_unfiltered ("\n");
|
||||||
|
}
|
||||||
|
|
||||||
if (!rl || rl == (char *) EOF)
|
if (!rl || rl == (char *) EOF)
|
||||||
{
|
{
|
||||||
|
@ -1827,7 +1891,7 @@ command_line_input (prrompt, repeat)
|
||||||
if (expanded < 0)
|
if (expanded < 0)
|
||||||
{
|
{
|
||||||
free (history_value);
|
free (history_value);
|
||||||
return command_line_input (prrompt, repeat);
|
return command_line_input (prrompt, repeat, annotation_suffix);
|
||||||
}
|
}
|
||||||
if (strlen (history_value) > linelength)
|
if (strlen (history_value) > linelength)
|
||||||
{
|
{
|
||||||
|
@ -1861,7 +1925,7 @@ command_line_input (prrompt, repeat)
|
||||||
&& ISATTY (stdin) && *linebuffer)
|
&& ISATTY (stdin) && *linebuffer)
|
||||||
add_history (linebuffer);
|
add_history (linebuffer);
|
||||||
|
|
||||||
/* Note: lines consisting soley of comments are added to the command
|
/* Note: lines consisting solely of comments are added to the command
|
||||||
history. This is useful when you type a command, and then
|
history. This is useful when you type a command, and then
|
||||||
realize you don't want to execute it quite yet. You can comment
|
realize you don't want to execute it quite yet. You can comment
|
||||||
out the command and then later fetch it from the value history
|
out the command and then later fetch it from the value history
|
||||||
|
@ -1928,7 +1992,7 @@ read_command_lines ()
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
dont_repeat ();
|
dont_repeat ();
|
||||||
p = command_line_input ((char *) NULL, instream == stdin);
|
p = command_line_input ((char *) NULL, instream == stdin, "commands");
|
||||||
if (p == NULL)
|
if (p == NULL)
|
||||||
/* Treat end of file like "end". */
|
/* Treat end of file like "end". */
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -112,7 +112,7 @@ CC-LD={CC}
|
||||||
# This is essentially the header file directory for the library
|
# This is essentially the header file directory for the library
|
||||||
# routines in libiberty.
|
# routines in libiberty.
|
||||||
INCLUDE_DIR = "{srcroot}"include
|
INCLUDE_DIR = "{srcroot}"include
|
||||||
INCLUDE_CFLAGS = -i {INCLUDE_DIR} -i {INCLUDE_DIR}:mpw -i ::extra-include -i "{srcroot}"bfd
|
INCLUDE_CFLAGS = -i {INCLUDE_DIR} -i {INCLUDE_DIR}:mpw -i ::extra-include -i "{srcroot}"bfd -i "{srcroot}"readline
|
||||||
# Where is the "-liberty" library, containing getopt and obstack?
|
# Where is the "-liberty" library, containing getopt and obstack?
|
||||||
LIBIBERTY = ::libiberty:libiberty.o
|
LIBIBERTY = ::libiberty:libiberty.o
|
||||||
|
|
||||||
|
@ -133,12 +133,12 @@ BFD_SRC = "{srcdir}"{BFD_DIR}
|
||||||
BFD_CFLAGS = -i {BFD_DIR} -i {BFD_SRC}
|
BFD_CFLAGS = -i {BFD_DIR} -i {BFD_SRC}
|
||||||
|
|
||||||
# Where is the READLINE library? Typically in ::readline.
|
# Where is the READLINE library? Typically in ::readline.
|
||||||
#READLINE_DIR = ::readline
|
READLINE_DIR = ::readline
|
||||||
READLINE = {READLINE_DIR}:libreadline.o
|
READLINE = {READLINE_DIR}:libreadline.o
|
||||||
READLINE_DISABLE = -d NO_READLINE
|
#READLINE_DISABLE = -d NO_READLINE
|
||||||
#READLINE_SRC = "{srcdir}"{READLINE_DIR}
|
READLINE_SRC = "{srcdir}"{READLINE_DIR}
|
||||||
#READLINE_CFLAGS = -i {READLINE_SRC}
|
READLINE_CFLAGS = -i {READLINE_SRC}
|
||||||
READLINE_CFLAGS = {READLINE_DISABLE}
|
#READLINE_CFLAGS = {READLINE_DISABLE}
|
||||||
|
|
||||||
# Opcodes currently live in one of two places. Either they are in the
|
# Opcodes currently live in one of two places. Either they are in the
|
||||||
# opcode library, typically ::opcodes, or they are in a header file
|
# opcode library, typically ::opcodes, or they are in a header file
|
||||||
|
@ -659,7 +659,7 @@ OBS = "{o}"version.c.o "{o}"main.c.o "{o}"blockframe.c.o "{o}"breakpoint.gc.o "{
|
||||||
"{o}"c-valprint.c.o "{o}"cp-valprint.c.o "{o}"ch-valprint.c.o "{o}"m2-valprint.c.o "{o}"nlmread.c.o \Option-d
|
"{o}"c-valprint.c.o "{o}"cp-valprint.c.o "{o}"ch-valprint.c.o "{o}"m2-valprint.c.o "{o}"nlmread.c.o \Option-d
|
||||||
"{o}"serial.c.o "{o}"mdebugread.c.o
|
"{o}"serial.c.o "{o}"mdebugread.c.o
|
||||||
|
|
||||||
TSOBS = "{o}"inflow.c.o
|
TSOBS =
|
||||||
|
|
||||||
NTSOBS = "{o}"standalone.c.o
|
NTSOBS = "{o}"standalone.c.o
|
||||||
|
|
||||||
|
@ -678,7 +678,7 @@ YYOBJ = c-exp.tab.c.o m2-exp.tab.c.o ch-exp.tab.c.o
|
||||||
# .c.o \Option-f
|
# .c.o \Option-f
|
||||||
# {CC} -c {INTERNAL_CFLAGS} $<
|
# {CC} -c {INTERNAL_CFLAGS} $<
|
||||||
|
|
||||||
all \Option-f gdb
|
all \Option-f gdb MacGDB
|
||||||
# @{MAKE} {FLAGS_TO_PASS} DO=all "DODIRS=`echo {SUBDIRS} | sed 's:testsuite::'`" subdir_do
|
# @{MAKE} {FLAGS_TO_PASS} DO=all "DODIRS=`echo {SUBDIRS} | sed 's:testsuite::'`" subdir_do
|
||||||
|
|
||||||
# The check target can not use subdir_do, because subdir_do does not
|
# The check target can not use subdir_do, because subdir_do does not
|
||||||
|
@ -705,7 +705,8 @@ gdb.z \Option-f gdb.1
|
||||||
# install-only is intended to address that need.
|
# install-only is intended to address that need.
|
||||||
install \Option-f all install-only
|
install \Option-f all install-only
|
||||||
install-only \Option-f
|
install-only \Option-f
|
||||||
Duplicate -i -y gdb "{bindir}"gdb
|
Duplicate -y gdb "{bindir}":gdb
|
||||||
|
Duplicate -y MacGDB "{bindir}":MacGDB
|
||||||
|
|
||||||
uninstall \Option-f force
|
uninstall \Option-f force
|
||||||
Delete -i -y {bindir}:gdb {man1dir}:gdb.1
|
Delete -i -y {bindir}:gdb {man1dir}:gdb.1
|
||||||
|
|
10
gdb/utils.c
10
gdb/utils.c
|
@ -251,7 +251,7 @@ warning (va_alist)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Start the printing of an error message. Way to use this is to call
|
/* Start the printing of an error message. Way to use this is to call
|
||||||
this, output the error message, and then call
|
this, output the error message (use filtered output), and then call
|
||||||
return_to_top_level (RETURN_ERROR). error() provides a convenient way to
|
return_to_top_level (RETURN_ERROR). error() provides a convenient way to
|
||||||
do this for the special case that the error message can be formatted with
|
do this for the special case that the error message can be formatted with
|
||||||
a single printf call, but this is more general. */
|
a single printf call, but this is more general. */
|
||||||
|
@ -1733,6 +1733,11 @@ _initialize_utils ()
|
||||||
#else
|
#else
|
||||||
lines_per_page = 24;
|
lines_per_page = 24;
|
||||||
chars_per_line = 80;
|
chars_per_line = 80;
|
||||||
|
/* start-sanitize-mpw */
|
||||||
|
#ifndef MPW
|
||||||
|
/* No termcap under MPW, although might be cool to do something
|
||||||
|
by looking at worksheet or console window sizes. */
|
||||||
|
/* end-sanitize-mpw */
|
||||||
/* Initialize the screen height and width from termcap. */
|
/* Initialize the screen height and width from termcap. */
|
||||||
{
|
{
|
||||||
char *termtype = getenv ("TERM");
|
char *termtype = getenv ("TERM");
|
||||||
|
@ -1767,6 +1772,9 @@ _initialize_utils ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* start-sanitize-mpw */
|
||||||
|
#endif /* MPW */
|
||||||
|
/* end-sanitize-mpw */
|
||||||
|
|
||||||
#if defined(SIGWINCH) && defined(SIGWINCH_HANDLER)
|
#if defined(SIGWINCH) && defined(SIGWINCH_HANDLER)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue