Skip to content
  • Dan Liew's avatar
    Add a `Symbolizer::GetEnvP()` method that allows symbolizer implementations to... · b684c1a5
    Dan Liew authored
    Add a `Symbolizer::GetEnvP()` method that allows symbolizer implementations to customise the environment of the symbolizer binary.
    
    Summary:
    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()`.
    
    rdar://problem/58789439
    
    Reviewers: kubamracek, yln, dvyukov, vitalybuka, eugenis, phosek, aizatsky, rnk
    
    Subscribers: #sanitizers, llvm-commits
    
    Tags: #sanitizers
    
    Differential Revision: https://reviews.llvm.org/D76666
    b684c1a5
Loading