On 18.07.2025 11:17, Dmytro Prokopchuk1 wrote: > On 7/18/25 08:31, Jan Beulich wrote: >> On 17.07.2025 22:47, Dmytro Prokopchuk1 wrote: >>> I tried to play with Rule 21.1 deviations. >>> >>> After applying the following configurations: >>> >>> -config=MC3A2.R21.1,macros+={safe, "^offsetof$ || ^(is|to)[a-z]+$ || >>> name(NULL) || name(bool) || name(true) || name(false)"} >>> -config=MC3A2.R21.1,macros+={safe, >>> "loc(file(^xen/include/xen/inttypes\\.h$))"} >>> -config=MC3A2.R21.1,macros+={safe, "loc(file(^xen/include/xen/types\\.h$))"} >>> -config=MC3A2.R21.1,macros+={safe, "^str[a-z]+$ || ^(v)?sprintf$ || >>> ^va_[a-z]+$"} >> >> Can you spell these out in words? I can only vaguely interpret these Eclair >> patterns, sorry. > Yes, sure. > > That means to deviate the following macros: > - offsetof > - begin with either ‘is’ or ‘to’ followed by a lowercase letters > (islower, isdigit, tolower, toupper, etc.) > - NULL > - bool > - true > - false > - all PRI/SCN macros for printing/scanning format specifiers from header > file xen/include/xen/inttypes.h > - all macros from header file xen/include/xen/types.h (limits: > UINT8_MAX, INT_MAX, LONG_MIN, etc.) > - begin with 'str' followed by a lowercase letters (string functions) > - sprintf/vsprintf > - begin with 'va_' followed by a lowercase letters (va_copy, va_start, > va_end, va_arg)
That's all stuff the library defines, when there is an (external) library. I Xen we have (or should I say "we are") the library. Why are we not permitted to define what a library is expected to define? How would one go about dealing with an actual library implementation, when it is not allowed to define anything a library is expected to define? Jan