[RFA 3/5 v4] Darwin: set startup-with-shell to off on Sierra and later.
Xavier Roirand
roirand@adacore.com
Tue Sep 11 10:25:00 GMT 2018
Hello,
Le 9/10/18 à 9:11 PM, Simon Marchi a écrit :
> On 2018-09-10 04:33 PM, Xavier Roirand wrote:
>> 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
>> ---
>> gdb/darwin-nat.c | 28 ++++++++++++++++++++++++++++
>> 1 file changed, 28 insertions(+)
>>
>> diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c
>> index be80163d22e..eee9380d650 100644
>> --- a/gdb/darwin-nat.c
>> +++ b/gdb/darwin-nat.c
>> @@ -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,
>>
>
> Just to avoid confusion, I think this should actually be v5. The new change
> is the line wrapping. Still LGTM, thanks.
Agree :)
Xavier
>
> Simon
>
More information about the Gdb-patches
mailing list