mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-04 13:57:12 +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:
@ -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>
|
2018-09-11 Xavier Roirand <roirand@adacore.com>
|
||||||
|
|
||||||
* darwin-nat.h (struct darwin_thread_info) <gdb_port,
|
* 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);
|
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
|
void
|
||||||
darwin_nat_target::create_inferior (const char *exec_file,
|
darwin_nat_target::create_inferior (const char *exec_file,
|
||||||
const std::string &allargs,
|
const std::string &allargs,
|
||||||
char **env, int from_tty)
|
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. */
|
/* Do the hard work. */
|
||||||
fork_inferior (exec_file, allargs, env, darwin_ptrace_me,
|
fork_inferior (exec_file, allargs, env, darwin_ptrace_me,
|
||||||
darwin_ptrace_him, darwin_pre_ptrace, NULL,
|
darwin_ptrace_him, darwin_pre_ptrace, NULL,
|
||||||
|
Reference in New Issue
Block a user