Load system gdbinit files from a directory
[deliverable/binutils-gdb.git] / gdb / main.c
CommitLineData
c906108c 1/* Top level stuff for GDB, the GNU debugger.
4389a95a 2
42a4f53d 3 Copyright (C) 1986-2019 Free Software Foundation, Inc.
c906108c 4
c5aa993b 5 This file is part of GDB.
c906108c 6
c5aa993b
JM
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
c5aa993b 10 (at your option) any later version.
c906108c 11
c5aa993b
JM
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
c906108c 16
c5aa993b 17 You should have received a copy of the GNU General Public License
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
19
20#include "defs.h"
c906108c
SS
21#include "top.h"
22#include "target.h"
23#include "inferior.h"
1adeb98a
FN
24#include "symfile.h"
25#include "gdbcore.h"
c906108c
SS
26#include "getopt.h"
27
28#include <sys/types.h>
53ce3c39 29#include <sys/stat.h>
c906108c 30#include <ctype.h>
9e0b60a8 31#include "event-loop.h"
8b93c638 32#include "ui-out.h"
6457bd47 33
4389a95a 34#include "interps.h"
f15ab4a7 35#include "main.h"
29b0e8a2 36#include "source.h"
4cc23ede 37#include "cli/cli-cmds.h"
7f6130ff 38#include "objfiles.h"
e2207b9a 39#include "auto-load.h"
bd712aed 40#include "maint.h"
29b0e8a2 41
b5981e5a 42#include "filenames.h"
268a13a5 43#include "gdbsupport/filestuff.h"
992c7d70 44#include <signal.h>
94696ad3 45#include "event-top.h"
98880d46 46#include "infrun.h"
268a13a5 47#include "gdbsupport/signals-state-save-restore.h"
ed2a2229 48#include <algorithm>
f60ee22e 49#include <vector>
268a13a5 50#include "gdbsupport/pathstuff.h"
ee2bcb0c 51#include "cli/cli-style.h"
26344e0c
CB
52#ifdef GDBTK
53#include "gdbtk/generic/gdbtk.h"
54#endif
b5981e5a 55
4389a95a
AC
56/* The selected interpreter. This will be used as a set command
57 variable, so it should always be malloc'ed - since
371d5dec 58 do_setshow_command will free it. */
fb40c209 59char *interpreter_p;
fb40c209 60
371d5dec 61/* Whether dbx commands will be handled. */
c906108c
SS
62int dbx_commands = 0;
63
030292b7
DJ
64/* System root path, used to find libraries etc. */
65char *gdb_sysroot = 0;
66
b14b1491 67/* GDB datadir, used to store data files. */
f2aec7f6 68std::string gdb_datadir;
b14b1491 69
e64e0392
DE
70/* Non-zero if GDB_DATADIR was provided on the command line.
71 This doesn't track whether data-directory is set later from the
72 command line, but we don't reread system.gdbinit when that happens. */
73static int gdb_datadir_provided = 0;
74
0c4a4063
DE
75/* If gdb was configured with --with-python=/path,
76 the possibly relocated path to python's lib directory. */
f2aec7f6 77std::string python_libdir;
0c4a4063 78
371d5dec 79/* Target IO streams. */
449092f6 80struct ui_file *gdb_stdtargin;
22e8e3c7 81struct ui_file *gdb_stdtarg;
449092f6 82struct ui_file *gdb_stdtargerr;
c906108c 83
7c953934
TT
84/* True if --batch or --batch-silent was seen. */
85int batch_flag = 0;
86
1a088d06
AS
87/* Support for the --batch-silent option. */
88int batch_silent = 0;
89
4b0ad762
AS
90/* Support for --return-child-result option.
91 Set the default to -1 to return error in the case
92 that the program does not run or does not complete. */
93int return_child_result = 0;
94int return_child_result_value = -1;
95
c906108c 96
16e7150e
JG
97/* GDB as it has been invoked from the command line (i.e. argv[0]). */
98static char *gdb_program_name;
99
c88a1531
AB
100/* Return read only pointer to GDB_PROGRAM_NAME. */
101const char *
102get_gdb_program_name (void)
103{
104 return gdb_program_name;
105}
106
d9fcf2fb 107static void print_gdb_help (struct ui_file *);
c906108c 108
8d551b02
DE
109/* Set the data-directory parameter to NEW_DATADIR.
110 If NEW_DATADIR is not a directory then a warning is printed.
111 We don't signal an error for backward compatibility. */
112
113void
114set_gdb_data_directory (const char *new_datadir)
115{
116 struct stat st;
117
118 if (stat (new_datadir, &st) < 0)
119 {
120 int save_errno = errno;
121
122 fprintf_unfiltered (gdb_stderr, "Warning: ");
123 print_sys_errmsg (new_datadir, save_errno);
124 }
125 else if (!S_ISDIR (st.st_mode))
126 warning (_("%s is not a directory."), new_datadir);
127
f2aec7f6 128 gdb_datadir = gdb_realpath (new_datadir).get ();
8d551b02
DE
129
130 /* gdb_realpath won't return an absolute path if the path doesn't exist,
131 but we still want to record an absolute path here. If the user entered
132 "../foo" and "../foo" doesn't exist then we'll record $(pwd)/../foo which
133 isn't canonical, but that's ok. */
f2aec7f6 134 if (!IS_ABSOLUTE_PATH (gdb_datadir.c_str ()))
8d551b02 135 {
f2aec7f6
CB
136 gdb::unique_xmalloc_ptr<char> abs_datadir
137 = gdb_abspath (gdb_datadir.c_str ());
8d551b02 138
f2aec7f6 139 gdb_datadir = abs_datadir.get ();
8d551b02
DE
140 }
141}
142
b14b1491
TT
143/* Relocate a file or directory. PROGNAME is the name by which gdb
144 was invoked (i.e., argv[0]). INITIAL is the default value for the
ead0e69a 145 file or directory. RELOCATABLE is true if the value is relocatable,
f2aec7f6
CB
146 false otherwise. This may return an empty string under the same
147 conditions as make_relative_prefix returning NULL. */
478aac75 148
f2aec7f6 149static std::string
ead0e69a 150relocate_path (const char *progname, const char *initial, bool relocatable)
b14b1491 151{
ead0e69a 152 if (relocatable)
f2aec7f6
CB
153 {
154 gdb::unique_xmalloc_ptr<char> str (make_relative_prefix (progname,
155 BINDIR,
156 initial));
157 if (str != nullptr)
158 return str.get ();
159 return std::string ();
160 }
161 return initial;
b14b1491
TT
162}
163
164/* Like relocate_path, but specifically checks for a directory.
165 INITIAL is relocated according to the rules of relocate_path. If
166 the result is a directory, it is used; otherwise, INITIAL is used.
f2aec7f6 167 The chosen directory is then canonicalized using lrealpath. */
478aac75 168
f2aec7f6 169std::string
ead0e69a 170relocate_gdb_directory (const char *initial, bool relocatable)
b14b1491 171{
f2aec7f6
CB
172 std::string dir = relocate_path (gdb_program_name, initial, relocatable);
173 if (!dir.empty ())
b14b1491
TT
174 {
175 struct stat s;
176
f2aec7f6 177 if (stat (dir.c_str (), &s) != 0 || !S_ISDIR (s.st_mode))
b14b1491 178 {
f2aec7f6 179 dir.clear ();
b14b1491
TT
180 }
181 }
f2aec7f6
CB
182 if (dir.empty ())
183 dir = initial;
b14b1491
TT
184
185 /* Canonicalize the directory. */
f2aec7f6 186 if (!dir.empty ())
b14b1491 187 {
f2aec7f6 188 gdb::unique_xmalloc_ptr<char> canon_sysroot (lrealpath (dir.c_str ()));
b8d56208 189
b14b1491 190 if (canon_sysroot)
f2aec7f6 191 dir = canon_sysroot.get ();
b14b1491
TT
192 }
193
194 return dir;
195}
196
9224a013
CB
197/* Given a gdbinit path in FILE, adjusts it according to the gdb_datadir
198 parameter if it is in the data dir, or passes it through relocate_path
199 otherwise. */
200
201static std::string
ed2a2229
CB
202relocate_gdbinit_path_maybe_in_datadir (const std::string &file,
203 bool relocatable)
9224a013
CB
204{
205 size_t datadir_len = strlen (GDB_DATADIR);
206
207 std::string relocated_path;
208
209 /* If SYSTEM_GDBINIT lives in data-directory, and data-directory
210 has been provided, search for SYSTEM_GDBINIT there. */
211 if (gdb_datadir_provided
212 && datadir_len < file.length ()
213 && filename_ncmp (file.c_str (), GDB_DATADIR, datadir_len) == 0
214 && IS_DIR_SEPARATOR (file[datadir_len]))
215 {
216 /* Append the part of SYSTEM_GDBINIT that follows GDB_DATADIR
217 to gdb_datadir. */
218
219 size_t start = datadir_len;
220 for (; IS_DIR_SEPARATOR (file[start]); ++start)
221 ;
cd7c32c3 222 relocated_path = gdb_datadir + SLASH_STRING + file.substr (start);
9224a013
CB
223 }
224 else
225 {
ed2a2229
CB
226 relocated_path = relocate_path (gdb_program_name, file.c_str (),
227 relocatable);
9224a013
CB
228 }
229 return relocated_path;
230}
231
371d5dec
MS
232/* Compute the locations of init files that GDB should source and
233 return them in SYSTEM_GDBINIT, HOME_GDBINIT, LOCAL_GDBINIT. If
234 there is no system gdbinit (resp. home gdbinit and local gdbinit)
235 to be loaded, then SYSTEM_GDBINIT (resp. HOME_GDBINIT and
f48cd836 236 LOCAL_GDBINIT) is set to the empty string. */
16e7150e 237static void
ed2a2229 238get_init_files (std::vector<std::string> *system_gdbinit,
f48cd836
CB
239 std::string *home_gdbinit,
240 std::string *local_gdbinit)
16e7150e 241{
ed2a2229 242 static std::vector<std::string> sysgdbinit;
f48cd836
CB
243 static std::string homeinit;
244 static std::string localinit;
16e7150e
JG
245 static int initialized = 0;
246
247 if (!initialized)
248 {
249 struct stat homebuf, cwdbuf, s;
16e7150e 250
b14b1491 251 if (SYSTEM_GDBINIT[0])
16e7150e 252 {
9224a013 253 std::string relocated_sysgdbinit
ed2a2229
CB
254 = relocate_gdbinit_path_maybe_in_datadir
255 (SYSTEM_GDBINIT, SYSTEM_GDBINIT_RELOCATABLE);
f48cd836
CB
256 if (!relocated_sysgdbinit.empty ()
257 && stat (relocated_sysgdbinit.c_str (), &s) == 0)
ed2a2229
CB
258 sysgdbinit.push_back (relocated_sysgdbinit);
259 }
260 if (SYSTEM_GDBINIT_DIR[0])
261 {
262 std::string relocated_gdbinit_dir
263 = relocate_gdbinit_path_maybe_in_datadir
264 (SYSTEM_GDBINIT_DIR, SYSTEM_GDBINIT_DIR_RELOCATABLE);
265 if (!relocated_gdbinit_dir.empty ()) {
266 gdb_dir_up dir (opendir (relocated_gdbinit_dir.c_str ()));
267 if (dir != nullptr)
268 {
269 std::vector<std::string> files;
270 for (;;)
271 {
272 struct dirent *ent = readdir (dir.get ());
273 if (ent == nullptr)
274 break;
275 std::string name (ent->d_name);
276 if (name == "." || name == "..")
277 continue;
278 /* ent->d_type is not available on all systems (e.g. mingw,
279 Solaris), so we have to call stat(). */
280 std::string filename
281 = relocated_gdbinit_dir + SLASH_STRING + name;
282 if (stat (filename.c_str (), &s) != 0
283 || !S_ISREG (s.st_mode))
284 continue;
285 const struct extension_language_defn *extlang
286 = get_ext_lang_of_file (filename.c_str ());
287 /* We effectively don't support "set script-extension
288 off/soft", because we are loading system init files here,
289 so it does not really make sense to depend on a
290 setting. */
291 if (extlang != nullptr && ext_lang_present_p (extlang))
292 files.push_back (std::move (filename));
293 }
294 std::sort (files.begin (), files.end ());
295 sysgdbinit.insert (sysgdbinit.end (),
296 files.begin (), files.end ());
297 }
298 }
16e7150e 299 }
16e7150e 300
f48cd836 301 const char *homedir = getenv ("HOME");
16e7150e
JG
302
303 /* If the .gdbinit file in the current directory is the same as
304 the $HOME/.gdbinit file, it should not be sourced. homebuf
025bb325 305 and cwdbuf are used in that purpose. Make sure that the stats
16e7150e
JG
306 are zero in case one of them fails (this guarantees that they
307 won't match if either exists). */
308
309 memset (&homebuf, 0, sizeof (struct stat));
310 memset (&cwdbuf, 0, sizeof (struct stat));
311
312 if (homedir)
313 {
f48cd836
CB
314 homeinit = std::string (homedir) + SLASH_STRING + GDBINIT;
315 if (stat (homeinit.c_str (), &homebuf) != 0)
16e7150e 316 {
f48cd836 317 homeinit = "";
16e7150e
JG
318 }
319 }
320
b777eb6d 321 if (stat (GDBINIT, &cwdbuf) == 0)
16e7150e 322 {
f48cd836 323 if (homeinit.empty ()
16e7150e
JG
324 || memcmp ((char *) &homebuf, (char *) &cwdbuf,
325 sizeof (struct stat)))
b777eb6d 326 localinit = GDBINIT;
16e7150e
JG
327 }
328
329 initialized = 1;
330 }
331
332 *system_gdbinit = sysgdbinit;
333 *home_gdbinit = homeinit;
334 *local_gdbinit = localinit;
335}
336
992c7d70
GB
337/* Try to set up an alternate signal stack for SIGSEGV handlers.
338 This allows us to handle SIGSEGV signals generated when the
339 normal process stack is exhausted. If this stack is not set
340 up (sigaltstack is unavailable or fails) and a SIGSEGV is
341 generated when the normal stack is exhausted then the program
342 will behave as though no SIGSEGV handler was installed. */
343
344static void
345setup_alternate_signal_stack (void)
346{
347#ifdef HAVE_SIGALTSTACK
348 stack_t ss;
349
f39c07ac
JB
350 /* FreeBSD versions older than 11.0 use char * for ss_sp instead of
351 void *. This cast works with both types. */
352 ss.ss_sp = (char *) xmalloc (SIGSTKSZ);
992c7d70
GB
353 ss.ss_size = SIGSTKSZ;
354 ss.ss_flags = 0;
355
356 sigaltstack(&ss, NULL);
357#endif
358}
359
bf469271 360/* Call command_loop. */
11cf8741 361
fcc8fb2f
PA
362/* Prevent inlining this function for the benefit of GDB's selftests
363 in the testsuite. Those tests want to run GDB under GDB and stop
364 here. */
365static void captured_command_loop () __attribute__((noinline));
366
bf469271
PA
367static void
368captured_command_loop ()
c906108c 369{
f38d3ad1
PA
370 struct ui *ui = current_ui;
371
bb5291d0 372 /* Top-level execution commands can be run in the background from
b4a14fd0 373 here on. */
cb814510 374 current_ui->async = 1;
b4a14fd0 375
3b12939d
PA
376 /* Give the interpreter a chance to print a prompt, if necessary */
377 if (ui->prompt_state != PROMPT_BLOCKED)
378 interp_pre_command_loop (top_level_interpreter ());
b2d86570
PA
379
380 /* Now it's time to start the event loop. */
381 start_event_loop ();
382
11cf8741 383 /* If the command_loop returned, normally (rather than threw an
bf469271
PA
384 error) we try to quit. If the quit is aborted, our caller
385 catches the signal and restarts the command loop. */
268a799a 386 quit_command (NULL, ui->instream == ui->stdin_stream);
11cf8741
JM
387}
388
013af3fc 389/* Handle command errors thrown from within catch_command_errors. */
94696ad3
PA
390
391static int
94aeb44b 392handle_command_errors (const struct gdb_exception &e)
94696ad3
PA
393{
394 if (e.reason < 0)
395 {
396 exception_print (gdb_stderr, e);
397
398 /* If any exception escaped to here, we better enable stdin.
399 Otherwise, any command that calls async_disable_stdin, and
400 then throws, will leave stdin inoperable. */
401 async_enable_stdin ();
402 return 0;
403 }
404 return 1;
405}
406
013af3fc
TT
407/* Type of the command callback passed to the const
408 catch_command_errors. */
9d1e69a2
PA
409
410typedef void (catch_command_errors_const_ftype) (const char *, int);
411
95a6b0a1 412/* Wrap calls to commands run before the event loop is started. */
9d1e69a2
PA
413
414static int
013af3fc
TT
415catch_command_errors (catch_command_errors_const_ftype command,
416 const char *arg, int from_tty)
9d1e69a2 417{
a70b8144 418 try
9d1e69a2 419 {
3b12939d 420 int was_sync = current_ui->prompt_state == PROMPT_BLOCKED;
98880d46 421
9d1e69a2 422 command (arg, from_tty);
98880d46
PA
423
424 maybe_wait_sync_command_done (was_sync);
9d1e69a2 425 }
230d2906 426 catch (const gdb_exception &e)
492d29ea
PA
427 {
428 return handle_command_errors (e);
429 }
492d29ea
PA
430
431 return 1;
9d1e69a2
PA
432}
433
ecf45d2c
SL
434/* Adapter for symbol_file_add_main that translates 'from_tty' to a
435 symfile_add_flags. */
436
437static void
438symbol_file_add_main_adapter (const char *arg, int from_tty)
439{
440 symfile_add_flags add_flags = 0;
441
442 if (from_tty)
443 add_flags |= SYMFILE_VERBOSE;
444
445 symbol_file_add_main (arg, add_flags);
446}
447
97cbe998
SDJ
448/* Perform validation of the '--readnow' and '--readnever' flags. */
449
450static void
451validate_readnow_readnever ()
452{
453 if (readnever_symbol_files && readnow_symbol_files)
454 {
455 error (_("%s: '--readnow' and '--readnever' cannot be "
456 "specified simultaneously"),
457 gdb_program_name);
458 }
459}
460
52059ffd
TT
461/* Type of this option. */
462enum cmdarg_kind
463{
464 /* Option type -x. */
465 CMDARG_FILE,
26743505 466
52059ffd
TT
467 /* Option type -ex. */
468 CMDARG_COMMAND,
8320cc4f 469
52059ffd
TT
470 /* Option type -ix. */
471 CMDARG_INIT_FILE,
8320cc4f 472
52059ffd
TT
473 /* Option type -iex. */
474 CMDARG_INIT_COMMAND
475};
476
477/* Arguments of --command option and its counterpart. */
7a63494a
PA
478struct cmdarg
479{
480 cmdarg (cmdarg_kind type_, char *string_)
481 : type (type_), string (string_)
482 {}
483
52059ffd
TT
484 /* Type of this option. */
485 enum cmdarg_kind type;
26743505
JK
486
487 /* Value of this option - filename or the GDB command itself. String memory
488 is not owned by this structure despite it is 'const'. */
489 char *string;
f60ee22e 490};
26743505 491
1e3b796d
TT
492static void
493captured_main_1 (struct captured_main_args *context)
11cf8741 494{
11cf8741
JM
495 int argc = context->argc;
496 char **argv = context->argv;
1e3b796d 497
c906108c 498 static int quiet = 0;
552c04a7 499 static int set_args = 0;
07540c15 500 static int inhibit_home_gdbinit = 0;
c906108c
SS
501
502 /* Pointers to various arguments from command line. */
503 char *symarg = NULL;
504 char *execarg = NULL;
a4d9b460 505 char *pidarg = NULL;
c906108c 506 char *corearg = NULL;
a4d9b460 507 char *pid_or_core_arg = NULL;
c906108c
SS
508 char *cdarg = NULL;
509 char *ttyarg = NULL;
510
371d5dec
MS
511 /* These are static so that we can take their address in an
512 initializer. */
c906108c
SS
513 static int print_help;
514 static int print_version;
6eaaf48b 515 static int print_configuration;
c906108c
SS
516
517 /* Pointers to all arguments of --command option. */
f60ee22e 518 std::vector<struct cmdarg> cmdarg_vec;
c906108c 519
f60ee22e
TT
520 /* All arguments of --directory option. */
521 std::vector<char *> dirarg;
c5aa993b 522
52f0bd74 523 int i;
88a1906b 524 int save_auto_load;
b0f492b9 525 int ret = 1;
c906108c 526
6242c6a6 527#ifdef HAVE_USEFUL_SBRK
1e3b796d 528 /* Set this before constructing scoped_command_stats. */
e565b837
DE
529 lim_at_start = (char *) sbrk (0);
530#endif
531
1e3b796d 532 scoped_command_stats stat_reporter (false);
c906108c 533
0fbb3da7
TT
534#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
535 setlocale (LC_MESSAGES, "");
536#endif
537#if defined (HAVE_SETLOCALE)
538 setlocale (LC_CTYPE, "");
539#endif
66797541 540#ifdef ENABLE_NLS
0fbb3da7
TT
541 bindtextdomain (PACKAGE, LOCALEDIR);
542 textdomain (PACKAGE);
66797541 543#endif
0fbb3da7 544
614c279d 545 notice_open_fds ();
5484b13a 546
ffa4ac95
YQ
547#ifdef __MINGW32__
548 /* Ensure stderr is unbuffered. A Cygwin pty or pipe is implemented
549 as a Windows pipe, and Windows buffers on pipes. */
550 setvbuf (stderr, NULL, _IONBF, BUFSIZ);
551#endif
552
4d5d1049
TT
553 /* Note: `error' cannot be called before this point, because the
554 caller will crash when trying to print the exception. */
895b8f30 555 main_ui = new ui (stdin, stdout, stderr);
98d9f24e 556 current_ui = main_ui;
ffa4ac95 557
449092f6
CV
558 gdb_stdtargerr = gdb_stderr; /* for moment */
559 gdb_stdtargin = gdb_stdin; /* for moment */
c906108c 560
4d5d1049
TT
561 if (bfd_init () != BFD_INIT_MAGIC)
562 error (_("fatal error: libbfd ABI mismatch"));
563
b5981e5a
EZ
564#ifdef __MINGW32__
565 /* On Windows, argv[0] is not necessarily set to absolute form when
566 GDB is found along PATH, without which relocation doesn't work. */
567 gdb_program_name = windows_get_absolute_argv0 (argv[0]);
568#else
16e7150e 569 gdb_program_name = xstrdup (argv[0]);
b5981e5a 570#endif
16e7150e 571
075c7033 572 /* Prefix warning messages with the command name. */
69bbf465
PA
573 gdb::unique_xmalloc_ptr<char> tmp_warn_preprint
574 (xstrprintf ("%s: warning: ", gdb_program_name));
575 warning_pre_print = tmp_warn_preprint.get ();
075c7033 576
43573013
SDJ
577 current_directory = getcwd (NULL, 0);
578 if (current_directory == NULL)
075c7033
GB
579 perror_warning_with_name (_("error finding working directory"));
580
030292b7 581 /* Set the sysroot path. */
f2aec7f6
CB
582 gdb_sysroot
583 = xstrdup (relocate_gdb_directory (TARGET_SYSTEM_ROOT,
584 TARGET_SYSTEM_ROOT_RELOCATABLE).c_str ());
030292b7 585
f2aec7f6 586 if (*gdb_sysroot == '\0')
fed040c6
GB
587 {
588 xfree (gdb_sysroot);
589 gdb_sysroot = xstrdup (TARGET_SYSROOT_PREFIX);
590 }
591
f2aec7f6
CB
592 debug_file_directory
593 = xstrdup (relocate_gdb_directory (DEBUGDIR,
594 DEBUGDIR_RELOCATABLE).c_str ());
030292b7 595
cd7c32c3
PW
596 gdb_datadir = relocate_gdb_directory (GDB_DATADIR,
597 GDB_DATADIR_RELOCATABLE);
aa28a74e 598
0c4a4063 599#ifdef WITH_PYTHON_PATH
e6040cbd
MS
600 {
601 /* For later use in helping Python find itself. */
b36cec19 602 char *tmp = concat (WITH_PYTHON_PATH, SLASH_STRING, "lib", (char *) NULL);
e6040cbd 603
478aac75 604 python_libdir = relocate_gdb_directory (tmp, PYTHON_PATH_RELOCATABLE);
e6040cbd
MS
605 xfree (tmp);
606 }
0c4a4063
DE
607#endif
608
29b0e8a2
JM
609#ifdef RELOC_SRCDIR
610 add_substitute_path_rule (RELOC_SRCDIR,
b5981e5a 611 make_relative_prefix (gdb_program_name, BINDIR,
29b0e8a2
JM
612 RELOC_SRCDIR));
613#endif
614
4389a95a 615 /* There will always be an interpreter. Either the one passed into
e46e5ccd
KS
616 this captured main, or one specified by the user at start up, or
617 the console. Initialize the interpreter to the one requested by
618 the application. */
11bf1490 619 interpreter_p = xstrdup (context->interpreter_p);
4389a95a 620
c906108c
SS
621 /* Parse arguments and options. */
622 {
623 int c;
624 /* When var field is 0, use flag field to record the equivalent
625 short option (or arbitrary numbers starting at 10 for those
626 with no equivalent). */
49c7e338
AC
627 enum {
628 OPT_SE = 10,
629 OPT_CD,
630 OPT_ANNOTATE,
631 OPT_STATISTICS,
42fa7c0f
AC
632 OPT_TUI,
633 OPT_NOWINDOWS,
8320cc4f
JK
634 OPT_WINDOWS,
635 OPT_IX,
97cbe998
SDJ
636 OPT_IEX,
637 OPT_READNOW,
638 OPT_READNEVER
49c7e338 639 };
491144b5
CB
640 /* This struct requires int* in the struct, but write_files is a bool.
641 So use this temporary int that we write back after argument parsing. */
642 int write_files_1 = 0;
c906108c 643 static struct option long_options[] =
c5aa993b 644 {
49c7e338 645 {"tui", no_argument, 0, OPT_TUI},
c5aa993b 646 {"dbx", no_argument, &dbx_commands, 1},
97cbe998
SDJ
647 {"readnow", no_argument, NULL, OPT_READNOW},
648 {"readnever", no_argument, NULL, OPT_READNEVER},
649 {"r", no_argument, NULL, OPT_READNOW},
c5aa993b
JM
650 {"quiet", no_argument, &quiet, 1},
651 {"q", no_argument, &quiet, 1},
652 {"silent", no_argument, &quiet, 1},
07540c15 653 {"nh", no_argument, &inhibit_home_gdbinit, 1},
c5aa993b
JM
654 {"nx", no_argument, &inhibit_gdbinit, 1},
655 {"n", no_argument, &inhibit_gdbinit, 1},
1a088d06 656 {"batch-silent", no_argument, 0, 'B'},
7c953934 657 {"batch", no_argument, &batch_flag, 1},
c5aa993b 658
371d5dec
MS
659 /* This is a synonym for "--annotate=1". --annotate is now
660 preferred, but keep this here for a long time because people
661 will be running emacses which use --fullname. */
c5aa993b
JM
662 {"fullname", no_argument, 0, 'f'},
663 {"f", no_argument, 0, 'f'},
664
49c7e338 665 {"annotate", required_argument, 0, OPT_ANNOTATE},
c5aa993b 666 {"help", no_argument, &print_help, 1},
49c7e338 667 {"se", required_argument, 0, OPT_SE},
c5aa993b
JM
668 {"symbols", required_argument, 0, 's'},
669 {"s", required_argument, 0, 's'},
670 {"exec", required_argument, 0, 'e'},
671 {"e", required_argument, 0, 'e'},
672 {"core", required_argument, 0, 'c'},
673 {"c", required_argument, 0, 'c'},
00546b04
MS
674 {"pid", required_argument, 0, 'p'},
675 {"p", required_argument, 0, 'p'},
c5aa993b 676 {"command", required_argument, 0, 'x'},
8a5a3c82 677 {"eval-command", required_argument, 0, 'X'},
c5aa993b 678 {"version", no_argument, &print_version, 1},
6eaaf48b 679 {"configuration", no_argument, &print_configuration, 1},
c5aa993b 680 {"x", required_argument, 0, 'x'},
8a5a3c82 681 {"ex", required_argument, 0, 'X'},
8320cc4f
JK
682 {"init-command", required_argument, 0, OPT_IX},
683 {"init-eval-command", required_argument, 0, OPT_IEX},
684 {"ix", required_argument, 0, OPT_IX},
685 {"iex", required_argument, 0, OPT_IEX},
3fc11d3e
JM
686#ifdef GDBTK
687 {"tclcommand", required_argument, 0, 'z'},
688 {"enable-external-editor", no_argument, 0, 'y'},
689 {"editor-command", required_argument, 0, 'w'},
690#endif
8b93c638
JM
691 {"ui", required_argument, 0, 'i'},
692 {"interpreter", required_argument, 0, 'i'},
693 {"i", required_argument, 0, 'i'},
c5aa993b 694 {"directory", required_argument, 0, 'd'},
c4093a6a 695 {"d", required_argument, 0, 'd'},
aae1c79a 696 {"data-directory", required_argument, 0, 'D'},
8d551b02 697 {"D", required_argument, 0, 'D'},
49c7e338 698 {"cd", required_argument, 0, OPT_CD},
c5aa993b
JM
699 {"tty", required_argument, 0, 't'},
700 {"baud", required_argument, 0, 'b'},
701 {"b", required_argument, 0, 'b'},
42fa7c0f
AC
702 {"nw", no_argument, NULL, OPT_NOWINDOWS},
703 {"nowindows", no_argument, NULL, OPT_NOWINDOWS},
704 {"w", no_argument, NULL, OPT_WINDOWS},
705 {"windows", no_argument, NULL, OPT_WINDOWS},
49c7e338 706 {"statistics", no_argument, 0, OPT_STATISTICS},
491144b5 707 {"write", no_argument, &write_files_1, 1},
552c04a7 708 {"args", no_argument, &set_args, 1},
39c76ca3 709 {"l", required_argument, 0, 'l'},
4b0ad762 710 {"return-child-result", no_argument, &return_child_result, 1},
c5aa993b
JM
711 {0, no_argument, 0, 0}
712 };
c906108c
SS
713
714 while (1)
715 {
716 int option_index;
717
718 c = getopt_long_only (argc, argv, "",
719 long_options, &option_index);
552c04a7 720 if (c == EOF || set_args)
c906108c
SS
721 break;
722
723 /* Long option that takes an argument. */
724 if (c == 0 && long_options[option_index].flag == 0)
725 c = long_options[option_index].val;
726
727 switch (c)
728 {
729 case 0:
730 /* Long option that just sets a flag. */
731 break;
49c7e338 732 case OPT_SE:
c906108c
SS
733 symarg = optarg;
734 execarg = optarg;
735 break;
49c7e338 736 case OPT_CD:
c906108c
SS
737 cdarg = optarg;
738 break;
49c7e338 739 case OPT_ANNOTATE:
c906108c
SS
740 /* FIXME: what if the syntax is wrong (e.g. not digits)? */
741 annotation_level = atoi (optarg);
742 break;
49c7e338 743 case OPT_STATISTICS:
c906108c 744 /* Enable the display of both time and space usage. */
bd712aed
DE
745 set_per_command_time (1);
746 set_per_command_space (1);
c906108c 747 break;
49c7e338 748 case OPT_TUI:
021e7609 749 /* --tui is equivalent to -i=tui. */
b0da54f1 750#ifdef TUI
021e7609 751 xfree (interpreter_p);
cc4349ed 752 interpreter_p = xstrdup (INTERP_TUI);
b0da54f1 753#else
91b35fd0 754 error (_("%s: TUI mode is not supported"), gdb_program_name);
b0da54f1 755#endif
021e7609 756 break;
42fa7c0f
AC
757 case OPT_WINDOWS:
758 /* FIXME: cagney/2003-03-01: Not sure if this option is
759 actually useful, and if it is, what it should do. */
cc4349ed
AS
760#ifdef GDBTK
761 /* --windows is equivalent to -i=insight. */
762 xfree (interpreter_p);
763 interpreter_p = xstrdup (INTERP_INSIGHT);
764#endif
42fa7c0f
AC
765 break;
766 case OPT_NOWINDOWS:
767 /* -nw is equivalent to -i=console. */
768 xfree (interpreter_p);
769 interpreter_p = xstrdup (INTERP_CONSOLE);
42fa7c0f 770 break;
c906108c
SS
771 case 'f':
772 annotation_level = 1;
c906108c
SS
773 break;
774 case 's':
775 symarg = optarg;
776 break;
777 case 'e':
778 execarg = optarg;
779 break;
780 case 'c':
781 corearg = optarg;
782 break;
00546b04 783 case 'p':
a4d9b460 784 pidarg = optarg;
00546b04 785 break;
c906108c 786 case 'x':
7a63494a 787 cmdarg_vec.emplace_back (CMDARG_FILE, optarg);
8a5a3c82
AS
788 break;
789 case 'X':
7a63494a 790 cmdarg_vec.emplace_back (CMDARG_COMMAND, optarg);
26743505 791 break;
8320cc4f 792 case OPT_IX:
7a63494a 793 cmdarg_vec.emplace_back (CMDARG_INIT_FILE, optarg);
8320cc4f
JK
794 break;
795 case OPT_IEX:
7a63494a 796 cmdarg_vec.emplace_back (CMDARG_INIT_COMMAND, optarg);
c906108c 797 break;
1a088d06 798 case 'B':
7c953934 799 batch_flag = batch_silent = 1;
d7e74731 800 gdb_stdout = new null_file ();
1a088d06 801 break;
aae1c79a 802 case 'D':
8d551b02 803 if (optarg[0] == '\0')
91b35fd0
GB
804 error (_("%s: empty path for `--data-directory'"),
805 gdb_program_name);
8d551b02 806 set_gdb_data_directory (optarg);
e64e0392 807 gdb_datadir_provided = 1;
aae1c79a 808 break;
3fc11d3e
JM
809#ifdef GDBTK
810 case 'z':
811 {
3fc11d3e 812 if (!gdbtk_test (optarg))
91b35fd0
GB
813 error (_("%s: unable to load tclcommand file \"%s\""),
814 gdb_program_name, optarg);
3fc11d3e
JM
815 break;
816 }
817 case 'y':
78f49586
TT
818 /* Backwards compatibility only. */
819 break;
3fc11d3e
JM
820 case 'w':
821 {
3a9b40b6
JK
822 /* Set the external editor commands when gdb is farming out files
823 to be edited by another program. */
3fc11d3e
JM
824 external_editor_command = xstrdup (optarg);
825 break;
826 }
827#endif /* GDBTK */
fb40c209 828 case 'i':
4389a95a
AC
829 xfree (interpreter_p);
830 interpreter_p = xstrdup (optarg);
fb40c209 831 break;
c906108c 832 case 'd':
f60ee22e 833 dirarg.push_back (optarg);
c906108c
SS
834 break;
835 case 't':
836 ttyarg = optarg;
837 break;
838 case 'q':
839 quiet = 1;
840 break;
841 case 'b':
842 {
b926417a 843 int rate;
c906108c
SS
844 char *p;
845
b926417a
TT
846 rate = strtol (optarg, &p, 0);
847 if (rate == 0 && p == optarg)
075c7033
GB
848 warning (_("could not set baud rate to `%s'."),
849 optarg);
c906108c 850 else
b926417a 851 baud_rate = rate;
c906108c 852 }
046ca86a 853 break;
c906108c
SS
854 case 'l':
855 {
b926417a 856 int timeout;
c906108c
SS
857 char *p;
858
b926417a
TT
859 timeout = strtol (optarg, &p, 0);
860 if (timeout == 0 && p == optarg)
075c7033
GB
861 warning (_("could not set timeout limit to `%s'."),
862 optarg);
c906108c 863 else
b926417a 864 remote_timeout = timeout;
c906108c
SS
865 }
866 break;
867
97cbe998
SDJ
868 case OPT_READNOW:
869 {
870 readnow_symbol_files = 1;
871 validate_readnow_readnever ();
872 }
873 break;
874
875 case OPT_READNEVER:
876 {
877 readnever_symbol_files = 1;
878 validate_readnow_readnever ();
879 }
880 break;
881
c906108c 882 case '?':
91b35fd0
GB
883 error (_("Use `%s --help' for a complete list of options."),
884 gdb_program_name);
c906108c
SS
885 }
886 }
491144b5 887 write_files = (write_files_1 != 0);
c906108c 888
7c953934 889 if (batch_flag)
ee2bcb0c
AH
890 {
891 quiet = 1;
892
893 /* Disable all output styling when running in batch mode. */
894 cli_styling = 0;
895 }
c906108c
SS
896 }
897
e379cee6
PA
898 save_original_signals_state (quiet);
899
992c7d70
GB
900 /* Try to set up an alternate signal stack for SIGSEGV handlers. */
901 setup_alternate_signal_stack ();
902
f218b647 903 /* Initialize all files. */
b5981e5a 904 gdb_init (gdb_program_name);
c906108c 905
371d5dec
MS
906 /* Now that gdb_init has created the initial inferior, we're in
907 position to set args for that inferior. */
3f81c18a
VP
908 if (set_args)
909 {
910 /* The remaining options are the command-line options for the
911 inferior. The first one is the sym/exec file, and the rest
912 are arguments. */
913 if (optind >= argc)
91b35fd0
GB
914 error (_("%s: `--args' specified but no program specified"),
915 gdb_program_name);
916
3f81c18a
VP
917 symarg = argv[optind];
918 execarg = argv[optind];
919 ++optind;
920 set_inferior_args_vector (argc - optind, &argv[optind]);
921 }
922 else
923 {
924 /* OK, that's all the options. */
925
926 /* The first argument, if specified, is the name of the
927 executable. */
928 if (optind < argc)
929 {
930 symarg = argv[optind];
931 execarg = argv[optind];
932 optind++;
933 }
934
935 /* If the user hasn't already specified a PID or the name of a
936 core file, then a second optional argument is allowed. If
937 present, this argument should be interpreted as either a
938 PID or a core file, whichever works. */
939 if (pidarg == NULL && corearg == NULL && optind < argc)
940 {
941 pid_or_core_arg = argv[optind];
942 optind++;
943 }
944
945 /* Any argument left on the command line is unexpected and
946 will be ignored. Inform the user. */
947 if (optind < argc)
3e43a32a
MS
948 fprintf_unfiltered (gdb_stderr,
949 _("Excess command line "
950 "arguments ignored. (%s%s)\n"),
3f81c18a
VP
951 argv[optind],
952 (optind == argc - 1) ? "" : " ...");
953 }
954
025bb325 955 /* Lookup gdbinit files. Note that the gdbinit file name may be
405feb71 956 overridden during file initialization, so get_init_files should be
371d5dec 957 called after gdb_init. */
ed2a2229 958 std::vector<std::string> system_gdbinit;
f48cd836
CB
959 std::string home_gdbinit;
960 std::string local_gdbinit;
57a46001
JG
961 get_init_files (&system_gdbinit, &home_gdbinit, &local_gdbinit);
962
c906108c 963 /* Do these (and anything which might call wrap_here or *_filtered)
4389a95a
AC
964 after initialize_all_files() but before the interpreter has been
965 installed. Otherwize the help/version messages will be eaten by
966 the interpreter's output handler. */
967
c906108c
SS
968 if (print_version)
969 {
c61b06a1 970 print_gdb_version (gdb_stdout, false);
c906108c
SS
971 wrap_here ("");
972 printf_filtered ("\n");
973 exit (0);
974 }
975
976 if (print_help)
977 {
978 print_gdb_help (gdb_stdout);
979 fputs_unfiltered ("\n", gdb_stdout);
980 exit (0);
981 }
982
6eaaf48b
EZ
983 if (print_configuration)
984 {
985 print_gdb_configuration (gdb_stdout);
986 wrap_here ("");
987 printf_filtered ("\n");
988 exit (0);
989 }
990
4389a95a
AC
991 /* FIXME: cagney/2003-02-03: The big hack (part 1 of 2) that lets
992 GDB retain the old MI1 interpreter startup behavior. Output the
993 copyright message before the interpreter is installed. That way
994 it isn't encapsulated in MI output. */
995 if (!quiet && strcmp (interpreter_p, INTERP_MI1) == 0)
996 {
371d5dec
MS
997 /* Print all the junk at the top, with trailing "..." if we are
998 about to read a symbol file (possibly slowly). */
c61b06a1 999 print_gdb_version (gdb_stdout, true);
4389a95a
AC
1000 if (symarg)
1001 printf_filtered ("..");
1002 wrap_here ("");
e896d70e 1003 printf_filtered ("\n");
371d5dec
MS
1004 gdb_flush (gdb_stdout); /* Force to screen during slow
1005 operations. */
4389a95a
AC
1006 }
1007
4389a95a 1008 /* Install the default UI. All the interpreters should have had a
371d5dec 1009 look at things by now. Initialize the default interpreter. */
60eb5395 1010 set_top_level_interpreter (interpreter_p);
4389a95a
AC
1011
1012 /* FIXME: cagney/2003-02-03: The big hack (part 2 of 2) that lets
1013 GDB retain the old MI1 interpreter startup behavior. Output the
1014 copyright message after the interpreter is installed when it is
1015 any sane interpreter. */
1016 if (!quiet && !current_interp_named_p (INTERP_MI1))
c906108c 1017 {
371d5dec
MS
1018 /* Print all the junk at the top, with trailing "..." if we are
1019 about to read a symbol file (possibly slowly). */
c61b06a1 1020 print_gdb_version (gdb_stdout, true);
c906108c
SS
1021 if (symarg)
1022 printf_filtered ("..");
c5aa993b 1023 wrap_here ("");
e896d70e 1024 printf_filtered ("\n");
371d5dec
MS
1025 gdb_flush (gdb_stdout); /* Force to screen during slow
1026 operations. */
c906108c
SS
1027 }
1028
e896d70e 1029 /* Set off error and warning messages with a blank line. */
69bbf465 1030 tmp_warn_preprint.reset ();
defc6f8c 1031 warning_pre_print = _("\nwarning: ");
c906108c 1032
16e7150e
JG
1033 /* Read and execute the system-wide gdbinit file, if it exists.
1034 This is done *before* all the command line arguments are
1035 processed; it sets global parameters, which are independent of
1036 what file you are debugging or what directory you are in. */
f48cd836 1037 if (!system_gdbinit.empty () && !inhibit_gdbinit)
ed2a2229
CB
1038 {
1039 for (const std::string &file : system_gdbinit)
1040 ret = catch_command_errors (source_script, file.c_str (), 0);
1041 }
16e7150e 1042
c906108c
SS
1043 /* Read and execute $HOME/.gdbinit file, if it exists. This is done
1044 *before* all the command line arguments are processed; it sets
1045 global parameters, which are independent of what file you are
1046 debugging or what directory you are in. */
c906108c 1047
f48cd836
CB
1048 if (!home_gdbinit.empty () && !inhibit_gdbinit && !inhibit_home_gdbinit)
1049 ret = catch_command_errors (source_script, home_gdbinit.c_str (), 0);
c906108c 1050
2d7b58e8 1051 /* Process '-ix' and '-iex' options early. */
f60ee22e 1052 for (i = 0; i < cmdarg_vec.size (); i++)
2d7b58e8 1053 {
f60ee22e
TT
1054 const struct cmdarg &cmdarg_p = cmdarg_vec[i];
1055
1056 switch (cmdarg_p.type)
1057 {
1058 case CMDARG_INIT_FILE:
b0f492b9
GB
1059 ret = catch_command_errors (source_script, cmdarg_p.string,
1060 !batch_flag);
f60ee22e
TT
1061 break;
1062 case CMDARG_INIT_COMMAND:
b0f492b9
GB
1063 ret = catch_command_errors (execute_command, cmdarg_p.string,
1064 !batch_flag);
f60ee22e
TT
1065 break;
1066 }
2d7b58e8
JK
1067 }
1068
c906108c
SS
1069 /* Now perform all the actions indicated by the arguments. */
1070 if (cdarg != NULL)
1071 {
b0f492b9 1072 ret = catch_command_errors (cd_command, cdarg, 0);
c906108c 1073 }
c906108c 1074
f60ee22e 1075 for (i = 0; i < dirarg.size (); i++)
b0f492b9 1076 ret = catch_command_errors (directory_switch, dirarg[i], 0);
c906108c 1077
88a1906b 1078 /* Skip auto-loading section-specified scripts until we've sourced
371d5dec
MS
1079 local_gdbinit (which is often used to augment the source search
1080 path). */
bf88dd68
JK
1081 save_auto_load = global_auto_load;
1082 global_auto_load = 0;
88a1906b 1083
c906108c
SS
1084 if (execarg != NULL
1085 && symarg != NULL
5cb316ef 1086 && strcmp (execarg, symarg) == 0)
c906108c 1087 {
11cf8741
JM
1088 /* The exec file and the symbol-file are the same. If we can't
1089 open it, better only print one error message.
371d5dec 1090 catch_command_errors returns non-zero on success! */
b0f492b9
GB
1091 ret = catch_command_errors (exec_file_attach, execarg,
1092 !batch_flag);
1093 if (ret != 0)
1094 ret = catch_command_errors (symbol_file_add_main_adapter,
1095 symarg, !batch_flag);
c906108c
SS
1096 }
1097 else
1098 {
1099 if (execarg != NULL)
b0f492b9
GB
1100 ret = catch_command_errors (exec_file_attach, execarg,
1101 !batch_flag);
c906108c 1102 if (symarg != NULL)
b0f492b9
GB
1103 ret = catch_command_errors (symbol_file_add_main_adapter,
1104 symarg, !batch_flag);
c906108c 1105 }
c906108c 1106
a4d9b460 1107 if (corearg && pidarg)
3e43a32a
MS
1108 error (_("Can't attach to process and specify "
1109 "a core file at the same time."));
a4d9b460 1110
c906108c 1111 if (corearg != NULL)
b0f492b9
GB
1112 {
1113 ret = catch_command_errors (core_file_command, corearg,
1114 !batch_flag);
1115 }
a4d9b460 1116 else if (pidarg != NULL)
b0f492b9
GB
1117 {
1118 ret = catch_command_errors (attach_command, pidarg, !batch_flag);
1119 }
a4d9b460 1120 else if (pid_or_core_arg)
c906108c 1121 {
a4d9b460
PA
1122 /* The user specified 'gdb program pid' or gdb program core'.
1123 If pid_or_core_arg's first character is a digit, try attach
1124 first and then corefile. Otherwise try just corefile. */
00546b04 1125
a4d9b460 1126 if (isdigit (pid_or_core_arg[0]))
11cf8741 1127 {
b0f492b9
GB
1128 ret = catch_command_errors (attach_command, pid_or_core_arg,
1129 !batch_flag);
1130 if (ret == 0)
1131 ret = catch_command_errors (core_file_command,
1132 pid_or_core_arg,
1133 !batch_flag);
1134 }
1135 else
1136 {
1137 /* Can't be a pid, better be a corefile. */
1138 ret = catch_command_errors (core_file_command,
1139 pid_or_core_arg,
1140 !batch_flag);
11cf8741 1141 }
c906108c 1142 }
c906108c
SS
1143
1144 if (ttyarg != NULL)
3f81c18a 1145 set_inferior_io_terminal (ttyarg);
c906108c 1146
371d5dec 1147 /* Error messages should no longer be distinguished with extra output. */
defc6f8c 1148 warning_pre_print = _("warning: ");
c906108c
SS
1149
1150 /* Read the .gdbinit file in the current directory, *if* it isn't
1151 the same as the $HOME/.gdbinit file (it should exist, also). */
f48cd836 1152 if (!local_gdbinit.empty ())
bf88dd68 1153 {
14278e1f 1154 auto_load_local_gdbinit_pathname
f48cd836 1155 = gdb_realpath (local_gdbinit.c_str ()).release ();
bf88dd68 1156
bccbefd2 1157 if (!inhibit_gdbinit && auto_load_local_gdbinit
f48cd836 1158 && file_is_auto_load_safe (local_gdbinit.c_str (),
4dc84fd1
JK
1159 _("auto-load: Loading .gdbinit "
1160 "file \"%s\".\n"),
f48cd836 1161 local_gdbinit.c_str ()))
bf88dd68
JK
1162 {
1163 auto_load_local_gdbinit_loaded = 1;
1164
f48cd836 1165 ret = catch_command_errors (source_script, local_gdbinit.c_str (), 0);
bf88dd68
JK
1166 }
1167 }
c906108c 1168
88a1906b
DE
1169 /* Now that all .gdbinit's have been read and all -d options have been
1170 processed, we can read any scripts mentioned in SYMARG.
1171 We wait until now because it is common to add to the source search
1172 path in local_gdbinit. */
bf88dd68 1173 global_auto_load = save_auto_load;
2030c079 1174 for (objfile *objfile : current_program_space->objfiles ())
7f6130ff 1175 load_auto_scripts_for_objfile (objfile);
88a1906b 1176
8320cc4f 1177 /* Process '-x' and '-ex' options. */
f60ee22e 1178 for (i = 0; i < cmdarg_vec.size (); i++)
c906108c 1179 {
f60ee22e
TT
1180 const struct cmdarg &cmdarg_p = cmdarg_vec[i];
1181
1182 switch (cmdarg_p.type)
1183 {
1184 case CMDARG_FILE:
b0f492b9
GB
1185 ret = catch_command_errors (source_script, cmdarg_p.string,
1186 !batch_flag);
f60ee22e
TT
1187 break;
1188 case CMDARG_COMMAND:
b0f492b9
GB
1189 ret = catch_command_errors (execute_command, cmdarg_p.string,
1190 !batch_flag);
f60ee22e
TT
1191 break;
1192 }
c906108c 1193 }
c906108c 1194
371d5dec
MS
1195 /* Read in the old history after all the command files have been
1196 read. */
c5aa993b 1197 init_history ();
c906108c 1198
7c953934 1199 if (batch_flag)
c906108c 1200 {
b0f492b9
GB
1201 int error_status = EXIT_FAILURE;
1202 int *exit_arg = ret == 0 ? &error_status : NULL;
1203
c906108c 1204 /* We have hit the end of the batch file. */
b0f492b9 1205 quit_force (exit_arg, 0);
c906108c 1206 }
1e3b796d
TT
1207}
1208
1209static void
1210captured_main (void *data)
1211{
1212 struct captured_main_args *context = (struct captured_main_args *) data;
1213
1214 captured_main_1 (context);
c906108c 1215
11cf8741
JM
1216 /* NOTE: cagney/1999-11-07: There is probably no reason for not
1217 moving this loop and the code found in captured_command_loop()
1218 into the command_loop() proper. The main thing holding back that
371d5dec 1219 change - SET_TOP_LEVEL() - has been eliminated. */
11cf8741
JM
1220 while (1)
1221 {
a70b8144 1222 try
bf469271
PA
1223 {
1224 captured_command_loop ();
1225 }
230d2906 1226 catch (const gdb_exception &ex)
bf469271
PA
1227 {
1228 exception_print (gdb_stderr, ex);
1229 }
11cf8741 1230 }
11cf8741
JM
1231 /* No exit -- exit is through quit_command. */
1232}
c906108c 1233
11cf8741 1234int
f15ab4a7 1235gdb_main (struct captured_main_args *args)
11cf8741 1236{
a70b8144 1237 try
98d9f24e
PA
1238 {
1239 captured_main (args);
1240 }
230d2906 1241 catch (const gdb_exception &ex)
98d9f24e
PA
1242 {
1243 exception_print (gdb_stderr, ex);
1244 }
98d9f24e 1245
864dbc90
AC
1246 /* The only way to end up here is by an error (normal exit is
1247 handled by quit_force()), hence always return an error status. */
1248 return 1;
c906108c
SS
1249}
1250
11cf8741 1251
c906108c
SS
1252/* Don't use *_filtered for printing help. We don't want to prompt
1253 for continue no matter how small the screen or how much we're going
1254 to print. */
1255
1256static void
d9fcf2fb 1257print_gdb_help (struct ui_file *stream)
c906108c 1258{
ed2a2229 1259 std::vector<std::string> system_gdbinit;
f48cd836
CB
1260 std::string home_gdbinit;
1261 std::string local_gdbinit;
16e7150e
JG
1262
1263 get_init_files (&system_gdbinit, &home_gdbinit, &local_gdbinit);
1264
b187bec1
EZ
1265 /* Note: The options in the list below are only approximately sorted
1266 in the alphabetical order, so as to group closely related options
1267 together. */
defc6f8c 1268 fputs_unfiltered (_("\
c906108c 1269This is the GNU debugger. Usage:\n\n\
552c04a7
TT
1270 gdb [options] [executable-file [core-file or process-id]]\n\
1271 gdb [options] --args executable-file [inferior-arguments ...]\n\n\
defc6f8c
TT
1272"), stream);
1273 fputs_unfiltered (_("\
b187bec1 1274Selection of debuggee and its files:\n\n\
552c04a7 1275 --args Arguments after executable-file are passed to inferior\n\
b187bec1
EZ
1276 --core=COREFILE Analyze the core dump COREFILE.\n\
1277 --exec=EXECFILE Use EXECFILE as the executable.\n\
1278 --pid=PID Attach to running process PID.\n\
1279 --directory=DIR Search for source files in DIR.\n\
1280 --se=FILE Use FILE as symbol file and executable file.\n\
1281 --symbols=SYMFILE Read symbols from SYMFILE.\n\
1282 --readnow Fully read symbol files on first access.\n\
97cbe998 1283 --readnever Do not read symbol files.\n\
b187bec1 1284 --write Set writing into executable and core files.\n\n\
defc6f8c
TT
1285"), stream);
1286 fputs_unfiltered (_("\
b187bec1 1287Initial commands and command files:\n\n\
8a5a3c82 1288 --command=FILE, -x Execute GDB commands from FILE.\n\
b187bec1
EZ
1289 --init-command=FILE, -ix\n\
1290 Like -x but execute commands before loading inferior.\n\
8a5a3c82
AS
1291 --eval-command=COMMAND, -ex\n\
1292 Execute a single GDB command.\n\
1293 May be used multiple times and in conjunction\n\
1294 with --command.\n\
b187bec1
EZ
1295 --init-eval-command=COMMAND, -iex\n\
1296 Like -ex but before loading inferior.\n\
1297 --nh Do not read ~/.gdbinit.\n\
1298 --nx Do not read any .gdbinit files in any directory.\n\n\
defc6f8c
TT
1299"), stream);
1300 fputs_unfiltered (_("\
b187bec1 1301Output and user interface control:\n\n\
c906108c 1302 --fullname Output information used by emacs-GDB interface.\n\
8b93c638
JM
1303 --interpreter=INTERP\n\
1304 Select a specific interpreter / user interface\n\
c906108c 1305 --tty=TTY Use TTY for input/output by the program being debugged.\n\
b187bec1
EZ
1306 -w Use the GUI interface.\n\
1307 --nw Do not use the GUI interface.\n\
defc6f8c 1308"), stream);
c906108c 1309#if defined(TUI)
defc6f8c 1310 fputs_unfiltered (_("\
c906108c 1311 --tui Use a terminal user interface.\n\
defc6f8c 1312"), stream);
c906108c 1313#endif
481860b3 1314 fputs_unfiltered (_("\
b187bec1 1315 --dbx DBX compatibility mode.\n\
adcc0a31 1316 -q, --quiet, --silent\n\
1317 Do not print version number on startup.\n\n\
b187bec1
EZ
1318"), stream);
1319 fputs_unfiltered (_("\
1320Operating modes:\n\n\
1321 --batch Exit after processing options.\n\
1322 --batch-silent Like --batch, but suppress all gdb stdout output.\n\
1323 --return-child-result\n\
1324 GDB exit code will be the child's exit code.\n\
1325 --configuration Print details about GDB configuration and then exit.\n\
1326 --help Print this message and then exit.\n\
1327 --version Print version information and then exit.\n\n\
1328Remote debugging options:\n\n\
1329 -b BAUDRATE Set serial port baud rate used for remote debugging.\n\
1330 -l TIMEOUT Set timeout in seconds for remote debugging.\n\n\
1331Other options:\n\n\
1332 --cd=DIR Change current directory to DIR.\n\
8d551b02
DE
1333 --data-directory=DIR, -D\n\
1334 Set GDB's data-directory to DIR.\n\
defc6f8c 1335"), stream);
defc6f8c 1336 fputs_unfiltered (_("\n\
16e7150e
JG
1337At startup, GDB reads the following init files and executes their commands:\n\
1338"), stream);
f48cd836 1339 if (!system_gdbinit.empty ())
ed2a2229
CB
1340 {
1341 std::string output;
1342 for (size_t idx = 0; idx < system_gdbinit.size (); ++idx)
1343 {
1344 output += system_gdbinit[idx];
1345 if (idx < system_gdbinit.size () - 1)
1346 output += ", ";
1347 }
1348 fprintf_unfiltered (stream, _("\
1349 * system-wide init files: %s\n\
1350"), output.c_str ());
1351 }
f48cd836 1352 if (!home_gdbinit.empty ())
16e7150e
JG
1353 fprintf_unfiltered (stream, _("\
1354 * user-specific init file: %s\n\
f48cd836
CB
1355"), home_gdbinit.c_str ());
1356 if (!local_gdbinit.empty ())
16e7150e 1357 fprintf_unfiltered (stream, _("\
bf88dd68 1358 * local init file (see also 'set auto-load local-gdbinit'): ./%s\n\
f48cd836 1359"), local_gdbinit.c_str ());
16e7150e 1360 fputs_unfiltered (_("\n\
c906108c
SS
1361For more information, type \"help\" from within GDB, or consult the\n\
1362GDB manual (available as on-line info or a printed manual).\n\
defc6f8c 1363"), stream);
c16158bc
JM
1364 if (REPORT_BUGS_TO[0] && stream == gdb_stdout)
1365 fprintf_unfiltered (stream, _("\
1366Report bugs to \"%s\".\n\
1367"), REPORT_BUGS_TO);
c906108c 1368}
This page took 1.792943 seconds and 4 git commands to generate.