Add a Symbolizer::GetEnvP() method that allows symbolizer implementations to customise the environment of the symbolizer binary.
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 use 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().
Reviewers: kubamracek, yln, dvyukov, vitalybuka, eugenis, phosek, aizatsky, rnk
Subscribers: #sanitizers, llvm-commits
Differential Revision: https://reviews.llvm.org/D76666