* 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:
Keith Seitz 1998-05-29 01:20:46 +00:00
parent 5dccb8b0f4
commit 4779296003
6 changed files with 115 additions and 69 deletions

View File

@ -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>
* mips-tdep.c (mips_push_dummy_frame): Fix calculation of

View File

@ -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>
* ser-unix.c (wait_for): Do not reset timeout_remaining for cygwin32 so that

2
gdb/configure vendored
View File

@ -5143,7 +5143,7 @@ fi
if test x$gdb_cv_os_cygwin32 = xyes; then
WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32 -luser32"
WIN32LDAPP="-Wl,--subsystem,windows"
WIN32LDAPP="-Wl,--subsystem,console"
CONFIG_OBS="${CONFIG_OBS} gdbres.o"
fi
fi

View File

@ -427,7 +427,7 @@ if test "${enable_gdbtk}" = "yes"; then
if test x$gdb_cv_os_cygwin32 = xyes; then
WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32 -luser32"
WIN32LDAPP="-Wl,--subsystem,windows"
WIN32LDAPP="-Wl,--subsystem,console"
CONFIG_OBS="${CONFIG_OBS} gdbres.o"
fi
fi

View File

@ -3467,6 +3467,9 @@ _initialize_gdbtk ()
/* Tell the rest of the world that Gdbtk is now set up. */
init_ui_hook = gdbtk_init;
#ifdef __CYGWIN32__
(void) FreeConsole ();
#endif
}
#ifdef __CYGWIN32__
else

View File

@ -42,8 +42,8 @@ static int top_level_val;
ugly if it had to use catch_errors each time. */
#define SET_TOP_LEVEL() \
(((top_level_val = setjmp (error_return)) \
? (PTR) 0 : (PTR) memcpy (quit_return, error_return, sizeof (jmp_buf))) \
(((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. */
@ -54,7 +54,12 @@ int display_time;
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
main (argc, argv)
@ -333,7 +338,7 @@ main (argc, argv)
quiet = 1;
}
gdb_init ();
gdb_init (argv[0]);
/* Do these (and anything which might call wrap_here or *_filtered)
after initialize_all_files. */
@ -347,52 +352,8 @@ main (argc, argv)
if (print_help)
{
/* --version is intentionally not documented here, because we
are printing the version here, and the help is long enough
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);
print_gdb_help (gdb_stdout);
fputs_unfiltered ("\n", gdb_stdout);
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
to read a symbol file (possibly slowly). */
print_gnu_advertisement ();
print_gdb_version (gdb_stdout);
if (symarg)
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
global parameters, which are independent of what file you are
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)
{
homeinit = (char *) alloca (strlen (getenv ("HOME")) +
homeinit = (char *) alloca (strlen (homedir) +
strlen (gdbinit) + 10);
strcpy (homeinit, getenv ("HOME"));
strcpy (homeinit, homedir);
strcat (homeinit, "/");
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 WIN32 Gui calls this main to set up gdb's state, and
has its own command loop. */
#ifndef _WIN32
#if !defined _WIN32 || defined __GNUC__
while (1)
{
if (!SET_TOP_LEVEL ())
@ -604,6 +578,57 @@ GDB manual (available as on-line info or a printed manual).\n", gdb_stdout);
#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
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
fputs_unfiltered (linebuffer, stream)
const char *linebuffer;
FILE *stream;
{
if (fputs_unfiltered_hook)
{
/* FIXME: I think we should only be doing this for stdout or stderr.
Either that or we should be passing stream to the hook so it can
deal with it. If that is cleaned up, this function can go back
into utils.c and the fputs_unfiltered_hook can replace the current
ability to avoid this function by not linking with main.c. */
fputs_unfiltered_hook (linebuffer, stream);
return;
}
fputs (linebuffer, stream);
if (fputs_unfiltered_hook
&& (stream == gdb_stdout
|| stream == gdb_stderr))
fputs_unfiltered_hook (linebuffer, stream);
else
fputs (linebuffer, stream);
}