<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/127347>127347</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[libc++][sanitizer] Pass through *SAN_OPTIONS= env into tests
</td>
</tr>
<tr>
<th>Labels</th>
<td>
libc++
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
vitalybuka
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
vitalybuka
</td>
</tr>
</table>
<pre>
1. Checkout e5f4019f69948f55b77fcb5f63ae8c296418432c or any between #124103 and #126995
2. cmake like https://lab.llvm.org/buildbot/#/builders/sanitizer-x86_64-linux-bootstrap-asan
```
/usr/bin/cmake -B libcxx_build_asan -DLLVM_APPEND_VC_REV=OFF -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_CCACHE_BUILD=ON -DLLVM_USE_LINKER=lld -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_C_COMPILER=/home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm_build0/bin/clang -DCMAKE_CXX_COMPILER=/home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm_build0/bin/clang++ -DLIBCXXABI_USE_LLVM_UNWINDER=OFF -DCMAKE_INSTALL_PREFIX=/home/b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_install_asan '-DLLVM_ENABLE_RUNTIMES=libcxx;libcxxabi' -DLIBCXX_TEST_PARAMS=long_tests=False -DLIBCXX_INCLUDE_BENCHMARKS=OFF -DLLVM_USE_SANITIZER=Address '-DCMAKE_C_FLAGS=-fsanitize=address ' '-DCMAKE_CXX_FLAGS=-fsanitize=address ' /home/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/../runtimes
```
3. Add test similar to #126995 but without default options.
```
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include <iostream>
// Test that ios used from globals constructors doesn't trigger Asan initialization-order-fiasco.
struct Global {
Global() { std::cout << "Hello!"; }
} global;
int main(int, char**) { return 0; }
```
4. Run LIT with additional Asan options
```
ASAN_OPTIONS=check_initialization_order=true:strict_init_order=true LIT_FILTER=global ninja -C libcxx_build_asan check-cxx
```
Expected: the test fails with "AddressSanitizer: initialization-order-fiasco"
Actuall: the test passes
ASAN_OPTIONS does not reach test executable. Somewhere in the middle env is removes the var.
We need to do something like llvm-project/clang/test/Unit/lit.cfg.py
```
# Propagate sanitizer options.
for var in [
"ASAN_SYMBOLIZER_PATH",
"HWASAN_SYMBOLIZER_PATH",
"MSAN_SYMBOLIZER_PATH",
"TSAN_SYMBOLIZER_PATH",
"UBSAN_SYMBOLIZER_PATH",
"ASAN_OPTIONS",
"HWASAN_OPTIONS",
"MSAN_OPTIONS",
"TSAN_OPTIONS",
"UBSAN_OPTIONS",
]:
if var in os.environ:
config.environment[var] = os.environ[var]
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy8V0mP4roW_jVmYyUKNmFYsMhEV9RAIaC6675N5CQO-LZjI9uhq-6vf3KGqoK-Q0v93kVZEJ_58zmfHaI1OwlKl8APAUJXZgh_zZtvBCAE_HhEGnOWavm-Pspl-bocuzA60-KbbAykfjXxxotqulhM5pXv57NZVeR-NcWEzgu0mE7G8wlGBZQKEvEKc2q-UyogQHiMJmMPQyLK7m26WPjAC5ALi5p8o5CzbxSejblogAOAVgCtOMldzq-1K9UJoFXeMF7m0rRCPCxQpQFaaSKYYX9Q5bzMp9l04nAmmhcnl9Joo8jFIZoI4AVg6vWPZ4M0Wlk_TAC06tJwQshZXry8ZK33zNpBJ16vv2yyYLdLtnH2Jcr2yReA48fVCjqftkz8TqATR5vgc5KFT-k6zo6_7RKA4z3llGg62EdRED30KtZ8OwieDkm2Trefkz3AMeflsJ5sg3CdZMHhkOyP6eP2MFh1saIsetzs0nVrBtDqLGtqy_lpPHoILdT8WncVe--AcCJO78Gen_-FcACFAIW2_jSMnp-DMO3AaVHafk23cRu9Rb5PLN0ejsF6ne32ySp9_vXUut1nQhvCebf_AM1ud2T_tD2mm8TuR6cPcNj9ITkDaPZWQHZMDsdsF-yDTassxSkzVBsNcLwivOuNTjPdRuunOMnCZBs9bIL958NboW9Ncgi26TH9T4tBUJaKat0lNzTEah18snZONdQNcEx6Tat6o_78_FMGv7rTzkXJ32lh-leAVq4L0Eo1wrCa6ruxxC4MyhJalKBmNeNEQSPfSQPmjYHfmTlbQippRRpuoLwYJoV2fxxx--C4e5z_ye_NXe_9LczwB-6IMlBW0JwptHsHdwMAEWxESVUrCS6ksAqsoEJTeEWu19bVmSQvBf1QVOf4QH_gyHd-XKdRsj0krnkxsJIK8t4xE5VUNbG-Prraxc9OH9tJSyoMqxhVAAd9Yo7N52t6fGjzceiQz4_1_v_xtZEwEwVvSgoBjpjURlFSA5wM4raoo20acyYGMqlho2kJKyVreOIyJ1zDQgptVFMYqTQsJdUCoJmBRrHTiSoY2GFntsEJZ3-0iDlSlVQ5FSO6kG4XrHMBP7VOIZiFwAtg_wrQHKCFXYTalHabcFDYTgU4AjiCAKEHyrkEaGyPXRxCMIut21ncZwlw2IVhwsCaWG6cM9H2TnEmCqCgfboYippGCeh9cPSh_Scu3DcCrtNj11ikLJktivCu1H5q7qyCQ7DNHnfDgVPYwz-7RSVrUQE4NqqhAFtEWGFapRuRDZ2t0vWxZayuPii6AzP6k4O2jeVYPr2bYy9IXi60MNRC2k5Pyw8VYVx3tQGEekY8DBRlVf9mNy3-reugMA3h_MbzhWjdUdMtIG3XQCENVJQU506ZvtCiMSTn1IUHWdPvZ6rs3LXualaWnEIqrpBpqGgtr1S3kitRfUd9pVBQWlqeKyXUsqbmzMSpuxTdUWh_Tq5sZIBWT4K1xMqMW1Qn9_LaD8QNC2LLQBdyIobCNwb_SJqWL65E2Zzt7dD2M2whtaUfftuEj2t77GS74PhgcUOR1bHN_PXvVTo3m39yc_wJJ0_hP3m56dw76z7Rv5Bu_lQ2JPYXRl1C90Lgx3bsOy1WDbBK7VJxZUqKXlpIUbHTsFhTYYAfXokCfgwBjj8aDOt3-zoql7hc4AUZ0eV4hhdTH-HZfHReTiezgs7pmC7I1M9LUlEf5z7x_cWsxGOCR2yJPOR7aOwjbzIdz92iXBR4McE5xoRMPR9MPFoTxt_u3yOmdUOXYzTDk9mIk5xy3X9I2DHu7m39h4Rati2bNycNJh5n2uh3P4YZ3n6CfDDzY-CHb31pAdgRbWdEyeZkR_uOkrphEka246dHjeLL22PxxMy5yd1C1u-Xjrs5aguy3w59Tdcl-m8AAAD__61W8rY">