On 05.06.2023 23:39, Stefano Stabellini wrote:
> On Mon, 5 Jun 2023, Roberto Bagnara wrote:
>>>> Here is a list of extensions that are documented in the GCC manual:
>>>
>>> I suppose that this list wasn't meant to be complete? The most
>>> prominent example is probably asm().
>>
>> As far as I can tell the list was almost complete (I realize now
>> that the use of the keyword __signed__ was omitted because
>> investigation was not completed).  But I am probably misunderstanding
>> you.
> 
> We also make use of the following extensions (please correct me if I am
> wrong and these are not extensions):
> 
> xen/include/xen/compiler.h:#define always_inline __inline__ __attribute__ 
> ((__always_inline__))
> xen/include/xen/compiler.h:#define gnu_inline    __inline__ __attribute__ 
> ((__gnu_inline__))
> xen/include/xen/compiler.h:#define noinline      __attribute__((__noinline__))
> xen/include/xen/compiler.h:#define noreturn      __attribute__((__noreturn__))
> xen/include/xen/compiler.h:#define __packed      __attribute__((__packed__))
> xen/include/xen/compiler.h:#define __weak        __attribute__((__weak__))
> xen/include/xen/compiler.h:# define nocall       
> __attribute__((__error__("Nonstandard ABI")))
> xen/include/xen/compiler.h:# define cf_check     __attribute__((__cf_check__))
> xen/include/xen/compiler.h:# define fallthrough        
> __attribute__((__fallthrough__))
> xen/include/xen/compiler.h:#define __aligned(a) 
> __attribute__((__aligned__(a)))
> xen/include/xen/compiler.h:#define __attribute_pure__  
> __attribute__((__pure__))
> xen/include/xen/compiler.h:#define __attribute_const__ 
> __attribute__((__const__))
> xen/include/xen/compiler.h:#define __transparent__     
> __attribute__((__transparent_union__))
> xen/include/xen/compiler.h:#define __used         __attribute__((__used__))
> xen/include/xen/compiler.h:#define __maybe_unused __attribute__((__unused__))
> xen/include/xen/compiler.h:#define __must_check 
> __attribute__((__warn_unused_result__))
> xen/include/xen/compiler.h:#define __nonnull(...) 
> __attribute__((__nonnull__(__VA_ARGS__)))
> 
> It is possible that some of these don't show up in any of the relevant
> code build as part of the minimal configuration for safety so you won't
> see any errors/warnings in Eclair.
> 
> Also, some of these extensions are probably no longer necessary, such as
> __gnu_inline__.

gnu_inline was already noticed as in use - see bsearch() and sort(). Iirc
Andrew in particular wants it used in further places.

Jan

Reply via email to