* main.c (main): Check for NULL from getenv on CYGWIN32.
* gdbtk.c (_initialize_gdbtk): Get rid of the console. Patch from Chris Faylor (cgf@cygnus.com). * configure.in: Link cygwin32 with subsystem console. * configure: Regenerated
This commit is contained in:
parent
5dccb8b0f4
commit
4779296003
|
@ -1,3 +1,12 @@
|
||||||
|
Thu May 28 17:19:14 1998 Keith Seitz <keiths@cygnus.com>
|
||||||
|
|
||||||
|
* main.c (main): Check for NULL from getenv on CYGWIN32.
|
||||||
|
|
||||||
|
Thu May 28 09:41:44 1998 Nick Clifton <nickc@cygnus.com>
|
||||||
|
|
||||||
|
* monitor.c (monitor_vsprintf): Handle %%. Patch courtesy of
|
||||||
|
Felix Lee (flee@cygnus.com)
|
||||||
|
|
||||||
Thu May 28 00:27:35 1998 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
|
Thu May 28 00:27:35 1998 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
|
||||||
|
|
||||||
* mips-tdep.c (mips_push_dummy_frame): Fix calculation of
|
* mips-tdep.c (mips_push_dummy_frame): Fix calculation of
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
Thu May 28 17:19:14 1998 Keith Seitz <keiths@cygnus.com>
|
||||||
|
|
||||||
|
* gdbtk.c (_initialize_gdbtk): Get rid of the console. Patch from
|
||||||
|
Chris Faylor (cgf@cygnus.com).
|
||||||
|
|
||||||
|
* configure.in: Link cygwin32 with subsystem console.
|
||||||
|
|
||||||
|
* configure: Regenerated
|
||||||
|
|
||||||
Sun May 24 14:00:24 1998 Keith Seitz <keiths@cygnus.com>
|
Sun May 24 14:00:24 1998 Keith Seitz <keiths@cygnus.com>
|
||||||
|
|
||||||
* ser-unix.c (wait_for): Do not reset timeout_remaining for cygwin32 so that
|
* ser-unix.c (wait_for): Do not reset timeout_remaining for cygwin32 so that
|
||||||
|
|
|
@ -5143,7 +5143,7 @@ fi
|
||||||
|
|
||||||
if test x$gdb_cv_os_cygwin32 = xyes; then
|
if test x$gdb_cv_os_cygwin32 = xyes; then
|
||||||
WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32 -luser32"
|
WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32 -luser32"
|
||||||
WIN32LDAPP="-Wl,--subsystem,windows"
|
WIN32LDAPP="-Wl,--subsystem,console"
|
||||||
CONFIG_OBS="${CONFIG_OBS} gdbres.o"
|
CONFIG_OBS="${CONFIG_OBS} gdbres.o"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -427,7 +427,7 @@ if test "${enable_gdbtk}" = "yes"; then
|
||||||
|
|
||||||
if test x$gdb_cv_os_cygwin32 = xyes; then
|
if test x$gdb_cv_os_cygwin32 = xyes; then
|
||||||
WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32 -luser32"
|
WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32 -luser32"
|
||||||
WIN32LDAPP="-Wl,--subsystem,windows"
|
WIN32LDAPP="-Wl,--subsystem,console"
|
||||||
CONFIG_OBS="${CONFIG_OBS} gdbres.o"
|
CONFIG_OBS="${CONFIG_OBS} gdbres.o"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -3467,6 +3467,9 @@ _initialize_gdbtk ()
|
||||||
/* Tell the rest of the world that Gdbtk is now set up. */
|
/* Tell the rest of the world that Gdbtk is now set up. */
|
||||||
|
|
||||||
init_ui_hook = gdbtk_init;
|
init_ui_hook = gdbtk_init;
|
||||||
|
#ifdef __CYGWIN32__
|
||||||
|
(void) FreeConsole ();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#ifdef __CYGWIN32__
|
#ifdef __CYGWIN32__
|
||||||
else
|
else
|
||||||
|
|
159
gdb/main.c
159
gdb/main.c
|
@ -42,8 +42,8 @@ static int top_level_val;
|
||||||
ugly if it had to use catch_errors each time. */
|
ugly if it had to use catch_errors each time. */
|
||||||
|
|
||||||
#define SET_TOP_LEVEL() \
|
#define SET_TOP_LEVEL() \
|
||||||
(((top_level_val = setjmp (error_return)) \
|
(((top_level_val = SIGSETJMP (error_return)) \
|
||||||
? (PTR) 0 : (PTR) memcpy (quit_return, error_return, sizeof (jmp_buf))) \
|
? (PTR) 0 : (PTR) memcpy (quit_return, error_return, sizeof (SIGJMP_BUF))) \
|
||||||
, top_level_val)
|
, top_level_val)
|
||||||
|
|
||||||
/* If nonzero, display time usage both at startup and for each command. */
|
/* If nonzero, display time usage both at startup and for each command. */
|
||||||
|
@ -54,7 +54,12 @@ int display_time;
|
||||||
|
|
||||||
int display_space;
|
int display_space;
|
||||||
|
|
||||||
extern void gdb_init PARAMS ((void));
|
static void print_gdb_help PARAMS ((GDB_FILE *));
|
||||||
|
extern void gdb_init PARAMS ((char *));
|
||||||
|
#ifdef __CYGWIN32__
|
||||||
|
#include <windows.h> /* for MAX_PATH */
|
||||||
|
extern void cygwin32_conv_to_posix_path (const char *, char *);
|
||||||
|
#endif
|
||||||
|
|
||||||
int
|
int
|
||||||
main (argc, argv)
|
main (argc, argv)
|
||||||
|
@ -333,7 +338,7 @@ main (argc, argv)
|
||||||
quiet = 1;
|
quiet = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
gdb_init ();
|
gdb_init (argv[0]);
|
||||||
|
|
||||||
/* Do these (and anything which might call wrap_here or *_filtered)
|
/* Do these (and anything which might call wrap_here or *_filtered)
|
||||||
after initialize_all_files. */
|
after initialize_all_files. */
|
||||||
|
@ -347,52 +352,8 @@ main (argc, argv)
|
||||||
|
|
||||||
if (print_help)
|
if (print_help)
|
||||||
{
|
{
|
||||||
/* --version is intentionally not documented here, because we
|
print_gdb_help (gdb_stdout);
|
||||||
are printing the version here, and the help is long enough
|
fputs_unfiltered ("\n", gdb_stdout);
|
||||||
already. */
|
|
||||||
|
|
||||||
print_gdb_version (gdb_stdout);
|
|
||||||
/* Make sure the output gets printed. */
|
|
||||||
wrap_here ("");
|
|
||||||
printf_filtered ("\n");
|
|
||||||
|
|
||||||
/* 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. */
|
|
||||||
fputs_unfiltered ("\
|
|
||||||
This is the GNU debugger. Usage:\n\
|
|
||||||
gdb [options] [executable-file [core-file or process-id]]\n\
|
|
||||||
Options:\n\
|
|
||||||
--help Print this message.\n\
|
|
||||||
--quiet Do not print version number on startup.\n\
|
|
||||||
--fullname Output information used by emacs-GDB interface.\n\
|
|
||||||
--epoch Output information used by epoch emacs-GDB interface.\n\
|
|
||||||
", gdb_stdout);
|
|
||||||
fputs_unfiltered ("\
|
|
||||||
--batch Exit after processing options.\n\
|
|
||||||
--nx Do not read .gdbinit file.\n\
|
|
||||||
--tty=TTY Use TTY for input/output by the program being debugged.\n\
|
|
||||||
--cd=DIR Change current directory to DIR.\n\
|
|
||||||
--directory=DIR Search for source files in DIR.\n\
|
|
||||||
", gdb_stdout);
|
|
||||||
fputs_unfiltered ("\
|
|
||||||
--command=FILE Execute GDB commands from FILE.\n\
|
|
||||||
--symbols=SYMFILE Read symbols from SYMFILE.\n\
|
|
||||||
--exec=EXECFILE Use EXECFILE as the executable.\n\
|
|
||||||
--se=FILE Use FILE as symbol file and executable file.\n\
|
|
||||||
", gdb_stdout);
|
|
||||||
fputs_unfiltered ("\
|
|
||||||
--core=COREFILE Analyze the core dump COREFILE.\n\
|
|
||||||
-b BAUDRATE Set serial port baud rate used for remote debugging.\n\
|
|
||||||
--mapped Use mapped symbol files if supported on this system.\n\
|
|
||||||
--readnow Fully read symbol files on first access.\n\
|
|
||||||
--nw Do not use a window interface.\n\
|
|
||||||
", gdb_stdout);
|
|
||||||
#ifdef ADDITIONAL_OPTION_HELP
|
|
||||||
fputs_unfiltered (ADDITIONAL_OPTION_HELP, gdb_stdout);
|
|
||||||
#endif
|
|
||||||
fputs_unfiltered ("\n\
|
|
||||||
For more information, type \"help\" from within GDB, or consult the\n\
|
|
||||||
GDB manual (available as on-line info or a printed manual).\n", gdb_stdout);
|
|
||||||
exit (0);
|
exit (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -400,7 +361,6 @@ GDB manual (available as on-line info or a printed manual).\n", gdb_stdout);
|
||||||
{
|
{
|
||||||
/* Print all the junk at the top, with trailing "..." if we are about
|
/* Print all the junk at the top, with trailing "..." if we are about
|
||||||
to read a symbol file (possibly slowly). */
|
to read a symbol file (possibly slowly). */
|
||||||
print_gnu_advertisement ();
|
|
||||||
print_gdb_version (gdb_stdout);
|
print_gdb_version (gdb_stdout);
|
||||||
if (symarg)
|
if (symarg)
|
||||||
printf_filtered ("..");
|
printf_filtered ("..");
|
||||||
|
@ -418,12 +378,26 @@ GDB manual (available as on-line info or a printed manual).\n", gdb_stdout);
|
||||||
*before* all the command line arguments are processed; it sets
|
*before* all the command line arguments are processed; it sets
|
||||||
global parameters, which are independent of what file you are
|
global parameters, which are independent of what file you are
|
||||||
debugging or what directory you are in. */
|
debugging or what directory you are in. */
|
||||||
homedir = getenv ("HOME");
|
#ifdef __CYGWIN32__
|
||||||
|
{
|
||||||
|
char * tmp = getenv ("HOME");
|
||||||
|
|
||||||
|
if (tmp != NULL)
|
||||||
|
{
|
||||||
|
homedir = (char *) alloca (MAX_PATH+1);
|
||||||
|
cygwin32_conv_to_posix_path (tmp, homedir);
|
||||||
|
} else {
|
||||||
|
homedir = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
homedir = getenv ("HOME");
|
||||||
|
#endif
|
||||||
if (homedir)
|
if (homedir)
|
||||||
{
|
{
|
||||||
homeinit = (char *) alloca (strlen (getenv ("HOME")) +
|
homeinit = (char *) alloca (strlen (homedir) +
|
||||||
strlen (gdbinit) + 10);
|
strlen (gdbinit) + 10);
|
||||||
strcpy (homeinit, getenv ("HOME"));
|
strcpy (homeinit, homedir);
|
||||||
strcat (homeinit, "/");
|
strcat (homeinit, "/");
|
||||||
strcat (homeinit, gdbinit);
|
strcat (homeinit, gdbinit);
|
||||||
|
|
||||||
|
@ -583,7 +557,7 @@ GDB manual (available as on-line info or a printed manual).\n", gdb_stdout);
|
||||||
/* The default command loop.
|
/* The default command loop.
|
||||||
The WIN32 Gui calls this main to set up gdb's state, and
|
The WIN32 Gui calls this main to set up gdb's state, and
|
||||||
has its own command loop. */
|
has its own command loop. */
|
||||||
#ifndef _WIN32
|
#if !defined _WIN32 || defined __GNUC__
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
if (!SET_TOP_LEVEL ())
|
if (!SET_TOP_LEVEL ())
|
||||||
|
@ -604,6 +578,57 @@ GDB manual (available as on-line info or a printed manual).\n", gdb_stdout);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Don't use *_filtered for printing help. We don't want to prompt
|
||||||
|
for continue no matter how small the screen or how much we're going
|
||||||
|
to print. */
|
||||||
|
|
||||||
|
static void
|
||||||
|
print_gdb_help (stream)
|
||||||
|
GDB_FILE *stream;
|
||||||
|
{
|
||||||
|
fputs_unfiltered ("\
|
||||||
|
This is the GNU debugger. Usage:\n\n\
|
||||||
|
gdb [options] [executable-file [core-file or process-id]]\n\n\
|
||||||
|
Options:\n\n\
|
||||||
|
", stream);
|
||||||
|
fputs_unfiltered ("\
|
||||||
|
-b BAUDRATE Set serial port baud rate used for remote debugging.\n\
|
||||||
|
--batch Exit after processing options.\n\
|
||||||
|
--cd=DIR Change current directory to DIR.\n\
|
||||||
|
--command=FILE Execute GDB commands from FILE.\n\
|
||||||
|
--core=COREFILE Analyze the core dump COREFILE.\n\
|
||||||
|
", stream);
|
||||||
|
fputs_unfiltered ("\
|
||||||
|
--directory=DIR Search for source files in DIR.\n\
|
||||||
|
--epoch Output information used by epoch emacs-GDB interface.\n\
|
||||||
|
--exec=EXECFILE Use EXECFILE as the executable.\n\
|
||||||
|
--fullname Output information used by emacs-GDB interface.\n\
|
||||||
|
--help Print this message.\n\
|
||||||
|
", stream);
|
||||||
|
fputs_unfiltered ("\
|
||||||
|
--mapped Use mapped symbol files if supported on this system.\n\
|
||||||
|
--nw Do not use a window interface.\n\
|
||||||
|
--nx Do not read .gdbinit file.\n\
|
||||||
|
--quiet Do not print version number on startup.\n\
|
||||||
|
--readnow Fully read symbol files on first access.\n\
|
||||||
|
", stream);
|
||||||
|
fputs_unfiltered ("\
|
||||||
|
--se=FILE Use FILE as symbol file and executable file.\n\
|
||||||
|
--symbols=SYMFILE Read symbols from SYMFILE.\n\
|
||||||
|
--tty=TTY Use TTY for input/output by the program being debugged.\n\
|
||||||
|
--version Print version information and then exit.\n\
|
||||||
|
", stream);
|
||||||
|
#ifdef ADDITIONAL_OPTION_HELP
|
||||||
|
fputs_unfiltered (ADDITIONAL_OPTION_HELP, stream);
|
||||||
|
#endif
|
||||||
|
fputs_unfiltered ("\n\
|
||||||
|
For more information, type \"help\" from within GDB, or consult the\n\
|
||||||
|
GDB manual (available as on-line info or a printed manual).\n\
|
||||||
|
Report bugs to \"bug-gdb@prep.ai.mit.edu\".\
|
||||||
|
", stream);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
init_proc ()
|
init_proc ()
|
||||||
|
@ -616,21 +641,21 @@ proc_remove_foreign (pid)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* All I/O sent to the *_filtered and *_unfiltered functions eventually ends up
|
||||||
|
here. The fputs_unfiltered_hook is primarily used by GUIs to collect all
|
||||||
|
output and send it to the GUI, instead of the controlling terminal. Only
|
||||||
|
output to gdb_stdout and gdb_stderr are sent to the hook. Everything else
|
||||||
|
is sent on to fputs to allow file I/O to be handled appropriately. */
|
||||||
|
|
||||||
void
|
void
|
||||||
fputs_unfiltered (linebuffer, stream)
|
fputs_unfiltered (linebuffer, stream)
|
||||||
const char *linebuffer;
|
const char *linebuffer;
|
||||||
FILE *stream;
|
FILE *stream;
|
||||||
{
|
{
|
||||||
if (fputs_unfiltered_hook)
|
if (fputs_unfiltered_hook
|
||||||
{
|
&& (stream == gdb_stdout
|
||||||
/* FIXME: I think we should only be doing this for stdout or stderr.
|
|| stream == gdb_stderr))
|
||||||
Either that or we should be passing stream to the hook so it can
|
fputs_unfiltered_hook (linebuffer, stream);
|
||||||
deal with it. If that is cleaned up, this function can go back
|
else
|
||||||
into utils.c and the fputs_unfiltered_hook can replace the current
|
fputs (linebuffer, stream);
|
||||||
ability to avoid this function by not linking with main.c. */
|
|
||||||
fputs_unfiltered_hook (linebuffer, stream);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
fputs (linebuffer, stream);
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue