> 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/






Reply via email to