On Thu, Feb 04, 2021 at 11:27:17AM +0100, Jan Beulich wrote: > On 03.02.2021 18:58, Roger Pau Monne wrote: > > --- a/xen/include/asm-x86/x86_64/efibind.h > > +++ b/xen/include/asm-x86/x86_64/efibind.h > > @@ -172,7 +172,7 @@ typedef uint64_t UINTN; > > #ifndef EFIAPI // Forces EFI calling conventions > > reguardless of compiler options > > #ifdef _MSC_EXTENSIONS > > #define EFIAPI __cdecl // Force C calling convention for > > Microsoft C compiler > > - #elif __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) > > + #elif __clang__ || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= > > 4) > > #define EFIAPI __attribute__((__ms_abi__)) // Force Microsoft ABI > > #else > > #define EFIAPI // Substitute expresion to force C calling > > convention > > > > So the problem is that some capable Clang versions set too low > a __GNUC_MINOR__ (I'm observing 2 alongside __GNUC__ being 4 > on Clang5). The way the description and change are written > made me rather imply __GNUC__ to not be available at all, > which I then thought can't be the case because iirc we use it > elsewhere.
Yes, I also see 4.2 on Clang 11. Do you want me to expand the description by adding: "Add a specific Clang check because the GCC version reported by Clang is below the required 4.4 to use the __ms_abi__ attribute." Thanks, Roger.
