This change introduces the Symbolizer::GetEnvP() method that returns a
pointer to environment array used for spawning the symbolizer process.
The motivation is to allow implementations to customise the environment
if required. The default implementation just returns
__sanitizer::GetEnviron() which (provided it's implemented) should
preserve the existing behaviours of the various implementations.
This change has been plumbed through the internal_spawn(...) and
StartSubprocess(...) process spawning implementations.
For the StartSubprocess() implementation we need to call execve()
rather than execv() to pass the environment. However, it appears that
internal_execve(...) exists in sanitizer_common so this patch uses that
which seems like a nice clean up.
Support in the Windows implementation of
SymbolizerProcess:StartSymbolizerSubprocess() has not been added
because the Windows sanitizer runtime doesn't implement GetEnviron().
rdar://problem/58789439