X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gdb%2Fmain.c;h=2e69d800a2c31bb53bf1ba5e7b57a4963bc44df5;hb=78f495860c35139a74ec07d8db3f159630e6d17f;hp=eb058bb1a27183d0839521e58c5e2d4fe7a97358;hpb=72ec28b8afa357cdde70c612b4e0e9f37a34f8e4;p=binutils-gdb.git diff --git a/gdb/main.c b/gdb/main.c index eb058bb1a27..2e69d800a2c 100644 --- a/gdb/main.c +++ b/gdb/main.c @@ -1,5 +1,6 @@ /* Top level stuff for GDB, the GNU debugger. - Copyright 1986-1995, 1999-2000 Free Software Foundation, Inc. + Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, + 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of GDB. @@ -22,7 +23,8 @@ #include "top.h" #include "target.h" #include "inferior.h" -#include "call-cmds.h" +#include "symfile.h" +#include "gdbcore.h" #include "getopt.h" @@ -33,11 +35,6 @@ #include "gdb_string.h" #include "event-loop.h" #include "ui-out.h" -#if defined (TUI) || defined (GDBTK) -/* FIXME: cagney/2000-01-31: This #include is to allow older code such - as that found in the TUI to continue to build. */ -#include "tui/tui-file.h" -#endif /* If nonzero, display time usage both at startup and for each command. */ @@ -53,6 +50,11 @@ int display_space; processes UI events asynchronously. */ int event_loop_p = 1; +#ifdef UI_OUT +/* Has an interpreter been specified and if so, which. */ +char *interpreter_p; +#endif + /* Whether this is the command line version or not */ int tui_version = 0; @@ -79,14 +81,8 @@ static void print_gdb_help (struct ui_file *); /* These two are used to set the external editor commands when gdb is farming out files to be edited by another program. */ -extern int enable_external_editor; extern char *external_editor_command; -#ifdef __CYGWIN__ -#include /* for MAX_PATH */ -#include /* for cygwin32_conv_to_posix_path */ -#endif - /* Call command_loop. If it happens to return, pass that through as a non-zero return status. */ @@ -100,7 +96,7 @@ captured_command_loop (void *data) /* FIXME: cagney/1999-11-05: A correct command_loop() implementaton would clean things up (restoring the cleanup chain) to the state they were just prior to the call. Technically, this means that - the do_cleanups() below is redundant. Unfortunatly, many FUNC's + the do_cleanups() below is redundant. Unfortunately, many FUNCs are not that well behaved. do_cleanups should either be replaced with a do_cleanups call (to cover the problem) or an assertion check to detect bad FUNCs code. */ @@ -192,20 +188,10 @@ captured_main (void *data) getcwd (gdb_dirbuf, sizeof (gdb_dirbuf)); current_directory = gdb_dirbuf; -#if defined (TUI) || defined (GDBTK) - /* Older code uses the tui_file and fputs_unfiltered_hook(). It - should be using a customized UI_FILE object and re-initializing - within its own _initialize function. */ - gdb_stdout = tui_fileopen (stdout); - gdb_stderr = tui_fileopen (stderr); - gdb_stdlog = gdb_stdout; /* for moment */ - gdb_stdtarg = gdb_stderr; /* for moment */ -#else gdb_stdout = stdio_fileopen (stdout); gdb_stderr = stdio_fileopen (stderr); gdb_stdlog = gdb_stderr; /* for moment */ gdb_stdtarg = gdb_stderr; /* for moment */ -#endif /* initialize error() */ error_init (); @@ -260,9 +246,11 @@ captured_main (void *data) {"enable-external-editor", no_argument, 0, 'y'}, {"editor-command", required_argument, 0, 'w'}, #endif +#ifdef UI_OUT {"ui", required_argument, 0, 'i'}, {"interpreter", required_argument, 0, 'i'}, {"i", required_argument, 0, 'i'}, +#endif {"directory", required_argument, 0, 'd'}, {"d", required_argument, 0, 'd'}, {"cd", required_argument, 0, 11}, @@ -342,7 +330,7 @@ captured_main (void *data) #ifdef GDBTK case 'z': { - extern int gdbtk_test PARAMS ((char *)); +extern int gdbtk_test (char *); if (!gdbtk_test (optarg)) { fprintf_unfiltered (gdb_stderr, "%s: unable to load tclcommand file \"%s\"", @@ -352,27 +340,19 @@ captured_main (void *data) break; } case 'y': - { - /* - * This enables the edit/button in the main window, even - * when IDE_ENABLED is set to false. In this case you must - * use --tclcommand to specify a tcl/script to be called, - * Tcl/Variable to store the edit/command is: - * external_editor - */ - enable_external_editor = 1; - break; - } + /* Backwards compatibility only. */ + break; case 'w': { - /* - * if editor command is enabled, both flags are set - */ - enable_external_editor = 1; external_editor_command = xstrdup (optarg); break; } #endif /* GDBTK */ +#ifdef UI_OUT + case 'i': + interpreter_p = optarg; + break; +#endif case 'd': dirarg[ndir++] = optarg; if (ndir >= dirsize) @@ -462,6 +442,7 @@ captured_main (void *data) execarg = argv[optind]; break; case 2: + /* FIXME: The documentation says this can be a "ProcID". as well. */ corearg = argv[optind]; break; case 3: @@ -474,12 +455,6 @@ captured_main (void *data) quiet = 1; } -#if defined(TUI) - /* Should this be moved to tui-top.c:_initialize_tui()? */ - if (tui_version) - init_ui_hook = tuiInit; -#endif - /* Initialize all files. Give the interpreter a chance to take control of the console via the init_ui_hook()) */ gdb_init (argv[0]); @@ -522,21 +497,7 @@ captured_main (void *data) *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. */ -#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 (homedir) + @@ -571,7 +532,7 @@ captured_main (void *data) for (i = 0; i < ndir; i++) catch_command_errors (directory_command, dirarg[i], 0, RETURN_MASK_ALL); - free ((PTR) dirarg); + xfree (dirarg); if (execarg != NULL && symarg != NULL @@ -580,15 +541,15 @@ captured_main (void *data) /* The exec file and the symbol-file are the same. If we can't open it, better only print one error message. catch_command_errors returns non-zero on success! */ - if (catch_command_errors (exec_file_command, execarg, !batch, RETURN_MASK_ALL)) - catch_command_errors (symbol_file_command, symarg, 0, RETURN_MASK_ALL); + if (catch_command_errors (exec_file_attach, execarg, !batch, RETURN_MASK_ALL)) + catch_command_errors (symbol_file_add_main, symarg, 0, RETURN_MASK_ALL); } else { if (execarg != NULL) - catch_command_errors (exec_file_command, execarg, !batch, RETURN_MASK_ALL); + catch_command_errors (exec_file_attach, execarg, !batch, RETURN_MASK_ALL); if (symarg != NULL) - catch_command_errors (symbol_file_command, symarg, 0, RETURN_MASK_ALL); + catch_command_errors (symbol_file_add_main, symarg, 0, RETURN_MASK_ALL); } /* After the symbol file has been read, print a newline to get us @@ -653,7 +614,7 @@ captured_main (void *data) #endif catch_command_errors (source_command, cmdarg[i], !batch, RETURN_MASK_ALL); } - free ((PTR) cmdarg); + xfree (cmdarg); /* Read in the old history after all the command files have been read. */ init_history (); @@ -694,13 +655,6 @@ captured_main (void *data) #endif } - /* The default command loop. - The WIN32 Gui calls this main to set up gdb's state, and - has its own command loop. */ -#if !defined _WIN32 || defined __GNUC__ - /* GUIs generally have their own command loop, mainloop, or - whatever. This is a good place to gain control because many - error conditions will end up here via longjmp(). */ #if 0 /* FIXME: cagney/1999-11-06: The original main loop was like: */ while (1) @@ -736,7 +690,6 @@ captured_main (void *data) { catch_errors (captured_command_loop, 0, "", RETURN_MASK_ALL); } -#endif /* No exit -- exit is through quit_command. */ }