diff --git a/llvm/lib/System/Unix/Program.inc b/llvm/lib/System/Unix/Program.inc index 7fdf3872dd9b..b7b4e9eb4694 100644 --- a/llvm/lib/System/Unix/Program.inc +++ b/llvm/lib/System/Unix/Program.inc @@ -34,6 +34,8 @@ #include #if !defined(__APPLE__) extern char **environ; +#else +#include // _NSGetEnviron #endif #endif @@ -202,8 +204,11 @@ Program::Execute(const Path &path, const char **args, const char **envp, } } + if (!envp) #if !defined(__APPLE__) - if (!envp) envp = (const char**)environ; + envp = (const char**)environ; +#else + envp = (const char**)*_NSGetEnviron(); // environ is missing in dylibs. #endif pid_t PID;