<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/73394>73394</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
`parseASanPassOptions` does not check for `"recover"` option
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
graphitemaster
</td>
</tr>
</table>
<pre>
In the new pass pipeline there is no handling of `"recover"` in `parseASanPassOptions` so stuff like `asan<recover>` cannot be used. This makes it hard to use ASan from the C API since the only method for running passes is `LLVMRunPasses` which takes a pass pipeline string.
Simple hand-written diff here enables it.
```diff
MODULE_PASS_WITH_PARAMS("asan",
"AddressSanitizerPass",
[](AddressSanitizerOptions Opts) {
return AddressSanitizerPass(Opts);
},
parseASanPassOptions,
- "kernel")
+ "kernel;recover")
```
```diff
Expected<AddressSanitizerOptions> parseASanPassOptions(StringRef Params) {
AddressSanitizerOptions Result;
while (!Params.empty()) {
StringRef ParamName;
std::tie(ParamName, Params) = Params.split(';');
if (ParamName == "kernel") {
Result.CompileKernel = true;
- } else {
+ } else if (ParamName == "recover") {
+ Result.Recover = true;
+ } else {
return make_error<StringError>(
formatv("invalid AddressSanitizer pass parameter '{0}' ", ParamName)
.str(),
inconvertibleErrorCode());
}
}
return Result;
}
```
Now one can use `"asan<recover>"` and the appropriate
```
ASAN_OPTIONS=halt_on_error=0
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEVU9z-jYQ_TTishPGSIDxwQcHyDTT_GFC2h4ZYa-xGlnySHLS9NN3JJtAHOgvkwEkrd6-3ber5daKg0JMyeyWzFYj3rpKm_RgeFMJhzW3Ds1or4vP9F6BqxAUfkDDrYVGNCiFQr9rEIQFpaHiqpBCHUCXQOYRodRgrt_REErJPAKh_HbDjcVsy9WGW_vcOKGV9adWg3VtWYIUb-gNueWKsOURg629Vc6V0g72CK3FYgyvlbBQ8ze0IBxU3BTgtD8D7wJKo-vAfAnZ5h6sUHngDFrJT6jRVbqAUhswrVKeuo_OY1nP4OHhz8eXNhDFwPGjEnkFLrjjg0xYZ4Q6jEm0IlHWfW5F3UgMebn5MMI5VFCIsoSQNFR8LwPv46V51P17m27r8Xn1x8N6t8m2291f96-_7TbZS_a4JXRBKA0JopTQZWcMhNKsKAxau-VKOPEvGs_9u03QmtDF0LKXAp4bZwlNgMS3_ZWrfwZdaxRc9rnogQj7BQ6JVyd6F6vjeHpzDYHSNzQKZYg06bNJb88O2O1ZLX6ZHBN-LtoFFdb_NJg7LAhbXskaYesr1BfbUBcvWMKGG14Pc3tNhhe0rXRnyfuohEQIyk86pDHWjfsMO8kPxQZun3iNJzDrCsIywjInkNDFyYIuz1myVb8a20YKFzzFHoXG58KenIoSzuE8ggcZ6DMsrS7U8VLXjZD4e7AMzp1pT6RvulIBlBZPCF7ls_3rBL7JP7z_xeGls_rpfeBnEEHfCP4d2qEx2hC27ARYd6u1z113odSm5u69a2Gh3rkUxY8q6N8WHwc6z4fGJL6NQqvE0DX0mbDHgoaxdeZYEMth2wmVa_WOxom9xEBsqQv8qp9vjeo99YvTzz7MQWl-nV9spyf9AVqhf7jDs9wNhp9vezciuCrC88ybxujGCO7wIna2zZ52z5vX--enLWGriku30-qY-1V08dKoSFmRsISPMJ3EUZTQOZ3MRlU6T2Yx8mlC53zO5nNkk_1iiozO4nkyjWaTkUhpRNlkQmeTGYsmkzGdLZKcxTGP-J5G-ymZRlhzIcdSvtdjbQ4jYW2LacxYMh1Jvkdpw5il1M_QcOhDnq1GJvV3bvbtwZJpJIV19oTihJOY_s_ULDT62esgrzB_C6Ps0ujV4caoNTKtnGus7356R-jdQbiq3Y9zXRN65932XzeN0X9j7gi9C2QtoXchmP8CAAD__xu0bC8">