[compiler-rt] [sanitizer_common] posix_spawn test should forward DYLD_LIBRARY_PATH (PR #168795)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 19 15:51:44 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-compiler-rt-sanitizer
Author: Andrew Haberlandt (ndrewh)
<details>
<summary>Changes</summary>
This test explicitly sets the environment for a spawned process. Since the compiler-rt lit config sets the library path variable [here](https://github.com/llvm/llvm-project/blob/main/compiler-rt/test/lit.common.cfg.py#L84) (i.e. to ensure that just-built runtimes are used for tests), we should also forward it to the spawned process.
My change only forwards the variable for Darwin (DYLD_LIBRARY_PATH), but we **_ought_** to also forward the variable for other platforms. However, it's not clear that there's any good way to plumb this into the test, since some platforms actually have multiple library path variables which would need to be forwarded (see: SunOS [here](https://github.com/llvm/llvm-project/blob/main/compiler-rt/test/lit.common.cfg.py#L102)). I considered adding a substitution variable for the library path variable, but that doesn't really work if there's multiple such variables.
---
Full diff: https://github.com/llvm/llvm-project/pull/168795.diff
1 Files Affected:
- (modified) compiler-rt/test/sanitizer_common/TestCases/Posix/posix_spawn.c (+8-1)
``````````diff
diff --git a/compiler-rt/test/sanitizer_common/TestCases/Posix/posix_spawn.c b/compiler-rt/test/sanitizer_common/TestCases/Posix/posix_spawn.c
index ea58b92af6097..e570a61f9ac9a 100644
--- a/compiler-rt/test/sanitizer_common/TestCases/Posix/posix_spawn.c
+++ b/compiler-rt/test/sanitizer_common/TestCases/Posix/posix_spawn.c
@@ -7,6 +7,8 @@
#include <spawn.h>
#include <stdio.h>
#include <sys/wait.h>
+#include <string.h>
+#include <stdlib.h>
int main(int argc, char **argv) {
if (argc > 1) {
@@ -23,11 +25,16 @@ int main(int argc, char **argv) {
argv[0], "2", "3", "4", "2", "3", "4", "2", "3", "4",
"2", "3", "4", "2", "3", "4", "2", "3", "4", NULL,
};
- char *const env[] = {
+ const char *env[] = {
"A=B", "A=B", "A=B", "A=B", "A=B", "A=B", "A=B", "A=B", "A=B", "A=B",
"A=B", "A=B", "A=B", "A=B", "A=B", "A=B", "A=B", "A=B", "A=B", NULL,
};
+ char *lib_path = getenv("DYLD_LIRARY_PATH");
+ if (lib_path) {
+ env[0] = strdup(lib_path);
+ }
+
pid_t pid;
int s = posix_spawn(&pid, argv[0], &file_actions, &attr, args, env);
assert(!s);
``````````
</details>
https://github.com/llvm/llvm-project/pull/168795
More information about the llvm-commits
mailing list