> On Sep 29, 2026, at 13:47, Peter Eisentraut <[email protected]> wrote:
>
> In clang, -fsanitize=undefined includes -fsanitize=function, which reports
> every call made through a function pointer whose type does not exactly match
> the called function, so it fires all over the place on expression tree
> walkers and mutators, as well as a few other places. So -fsanitize=undefined
> hasn't been working cleanly under clang for a while. (Before clang 17, it
> only applied to C++.)
>
> This is the same issue that caused us to use -Wno-cast-function-type-strict
> with clang. That warning applies at the place where the mismatching function
> pointer is passed, so there are potentially hundreds of sites. Therefore, a
> global disabling is appropriate. The sanitizer, on the other hand, triggers
> where the function is called, which are only about two dozen places, so it
> seems possible to silence these checks individually and still main the check
> for accidental violations elsewhere.
>
> I propose to add pg_attribute_no_sanitize_function() and place it on the
> functions that make such calls. This is similar to some existing
> pg_attribute_no_sanitize_xxx attributes.
> <0001-Silence-fsanitize-function-where-we-cast-function-po.patch>
Overall looks good to me.
Just one comment, in dynahash.c, hash_search_with_hash_value() is marked with
the new annotation, feels like hash_update_hash_key() also needs to be
annotated, because it also invokes match and keycopy etc callbacks.
Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/