/* Top level stuff for GDB, the GNU debugger.
- Copyright (C) 1986-2019 Free Software Foundation, Inc.
+ Copyright (C) 1986-2020 Free Software Foundation, Inc.
This file is part of GDB.
#ifdef GDBTK
#include "gdbtk/generic/gdbtk.h"
#endif
+#include "gdbsupport/alt-stack.h"
/* The selected interpreter. This will be used as a set command
variable, so it should always be malloc'ed - since
print_sys_errmsg (new_datadir, save_errno);
}
else if (!S_ISDIR (st.st_mode))
- warning (_("%s is not a directory."), new_datadir);
+ warning (_("%ps is not a directory."),
+ styled_string (file_name_style.style (), new_datadir));
gdb_datadir = gdb_realpath (new_datadir).get ();
*local_gdbinit = localinit;
}
-/* Try to set up an alternate signal stack for SIGSEGV handlers.
- This allows us to handle SIGSEGV signals generated when the
- normal process stack is exhausted. If this stack is not set
- up (sigaltstack is unavailable or fails) and a SIGSEGV is
- generated when the normal stack is exhausted then the program
- will behave as though no SIGSEGV handler was installed. */
-
-static void
-setup_alternate_signal_stack (void)
-{
-#ifdef HAVE_SIGALTSTACK
- stack_t ss;
-
- /* FreeBSD versions older than 11.0 use char * for ss_sp instead of
- void *. This cast works with both types. */
- ss.ss_sp = (char *) xmalloc (SIGSTKSZ);
- ss.ss_size = SIGSTKSZ;
- ss.ss_flags = 0;
-
- sigaltstack(&ss, NULL);
-#endif
-}
-
/* Call command_loop. */
/* Prevent inlining this function for the benefit of GDB's selftests
save_original_signals_state (quiet);
/* Try to set up an alternate signal stack for SIGSEGV handlers. */
- setup_alternate_signal_stack ();
+ gdb::alternate_signal_stack signal_stack;
/* Initialize all files. */
gdb_init (gdb_program_name);