Closed trasz closed 7 years ago
Probably not very related to the crash, but you will want to fix the warning. It's rather bizarre that they are using uintptr_t
for a length, but I'd probably just cast it to size_t
. It is conceivable that the problem is related to their overuse of uintptr_t
.
This looks as if it's coming from this source code:
switch (code->op) {
case ngx_http_script_file_plain:
case ngx_http_script_file_dir:
case ngx_http_script_file_exists:
case ngx_http_script_file_exec:
goto false_value;
case ngx_http_script_file_not_plain:
case ngx_http_script_file_not_dir:
case ngx_http_script_file_not_exists:
case ngx_http_script_file_not_exec:
goto true_value;
}
I can't manage to turn this into a reduced test case.
It appears that after updating, there is a trivial reproducer for this:
int x(__intcap_t y)
{
switch (y)
{
case 1: return 4;
}
return 1;
}
This is a simplified version of a test in the clang test suite, so I'm not sure why it's not working.
I'm still seeing this problem, with:
clang version 5.0.0 (https://github.com/CTSRD-CHERI/clang.git 55e094b2ebad134d775654e0989215476dd4a1ff) (https://github.com/CTSRD-CHERI/llvm.git 926e17c1b5d5110aef32be6b0c7c98054a08c448)
Trying to build nginx with the new LLVM fails like this:
https://gist.github.com/trasz/d0dde7c94685b412f8dba56783a35822