|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [XEN RFC] x86/uaccess: remove __{put,get}_user_bad()
Hello everyone, On 21/12/23 13:41, Jan Beulich wrote: On 21.12.2023 13:01, Nicola Vetrini wrote:Hi Andrew, On 2023-12-21 12:03, Andrew Cooper wrote:On 21/12/2023 10:58 am, Jan Beulich wrote:On 21.12.2023 11:53, Federico Serafini wrote:
What do you think about adding the following macro to compiler.h:
#define static_assert_unreachable(identifier) \
asm("unreachable " #identifier " reached")
It expands to an invalid assembly instruction that will lead to a
customizable error message generated by the assembler instead of the
linker (anticipating the error detection).
The use of this macro will indicate a program point considered
unreachable (and as such removed) by the static analysis performed by
the compiler, even at an optimization level -O0.
An example of use is in the default case of put_unsafe_size(): default: static_assert_unreachable(default); In case a wrong size will be used, the following message will be generated: ./arch/x86/include/asm/uaccess.h: Assembler messages:./arch/x86/include/asm/uaccess.h:257: Error: no such instruction: `unreachable default reached'
Note that adopting the macro and discussing its definition are two
separate things:
I think we can all agree on the fact that the use of such macro improves
readability, so I would suggest its adoption.
Whereas for its definition, if you don't like the invalid asm
instruction, we could discuss for a different solution, for example,
the following is something similar to what you are doing now:
#define static_assert_unreachable(identifier) \
extern void identifier(void); \
identifier()
Note also that the problem of the missing break statement (that violates
Rule 16.3) is still present, it could be addressed by adding the break
or deviating for such special cases, do you have any preferences?
--
Federico Serafini, M.Sc.
Software Engineer, BUGSENG (http://bugseng.com)
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |