mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-03 23:34:02 +08:00
Darwin: set startup-with-shell to off on Sierra and later.
On Mac OS X Sierra and later, the shell is not allowed to be debug so add a check and disable startup with shell in that case. This disabling is done temporary before forking inferior and restored after the fork. gdb/ChangeLog: * darwin-nat.c (should_disable_startup_with_shell): New function. (darwin_nat_target::create_inferior): Add call. Change-Id: Ie4d9090f65fdf2e83ecf7a0f9d0647fb1c27cdcc
This commit is contained in:
parent
de1ec836c8
commit
d6be54ef73
@ -1,3 +1,9 @@
|
||||
2018-09-11 Xavier Roirand <roirand@adacore.com>
|
||||
|
||||
* darwin-nat.c (should_disable_startup_with_shell):
|
||||
New function.
|
||||
(darwin_nat_target::create_inferior): Add call.
|
||||
|
||||
2018-09-11 Xavier Roirand <roirand@adacore.com>
|
||||
|
||||
* darwin-nat.h (struct darwin_thread_info) <gdb_port,
|
||||
|
@ -1854,11 +1854,39 @@ darwin_execvp (const char *file, char * const argv[], char * const env[])
|
||||
posix_spawnp (NULL, argv[0], NULL, &attr, argv, env);
|
||||
}
|
||||
|
||||
/* Read kernel version, and return TRUE on Sierra or later. */
|
||||
|
||||
static bool
|
||||
should_disable_startup_with_shell ()
|
||||
{
|
||||
char str[16];
|
||||
size_t sz = sizeof (str);
|
||||
int ret;
|
||||
|
||||
ret = sysctlbyname ("kern.osrelease", str, &sz, NULL, 0);
|
||||
if (ret == 0 && sz < sizeof (str))
|
||||
{
|
||||
unsigned long ver = strtoul (str, NULL, 10);
|
||||
if (ver >= 16)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
darwin_nat_target::create_inferior (const char *exec_file,
|
||||
const std::string &allargs,
|
||||
char **env, int from_tty)
|
||||
{
|
||||
gdb::optional<scoped_restore_tmpl<int>> restore_startup_with_shell;
|
||||
|
||||
if (startup_with_shell && should_disable_startup_with_shell ())
|
||||
{
|
||||
warning (_("startup-with-shell not supported on this macOS version,"
|
||||
" disabling it."));
|
||||
restore_startup_with_shell.emplace (&startup_with_shell, 0);
|
||||
}
|
||||
|
||||
/* Do the hard work. */
|
||||
fork_inferior (exec_file, allargs, env, darwin_ptrace_me,
|
||||
darwin_ptrace_him, darwin_pre_ptrace, NULL,
|
||||
|
Loading…
Reference in New Issue
Block a user