Silence -fsanitize=function where we cast function pointers on purpose - Mailing list pgsql-hackers

From Peter Eisentraut
Subject Silence -fsanitize=function where we cast function pointers on purpose
Date
Msg-id 2db401d9-ef16-430e-a42c-34477006a49f@eisentraut.org
Whole thread
Responses Re: Silence -fsanitize=function where we cast function pointers on purpose
List pgsql-hackers
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.

Attachment

pgsql-hackers by date:

Previous
From: Bertrand Drouvot
Date:
Subject: Re: Add pg_stat_log_messages: cumulative statistics about server log messages (was: Add contrib module pg_stat_log: cumulative statistics about server log messages)
Next
From: Peter Eisentraut
Date:
Subject: Re: Fix out-of-bounds array indexing in JsonValueList