svn commit: r361722 - head/sys/compat/linuxkpi/common/include/linux

Emmanuel Vadot manu at bidouilliste.com
Tue Jun 2 10:35:31 UTC 2020


 Hello Hans,

On Tue, 2 Jun 2020 09:45:44 +0000 (UTC)
Hans Petter Selasky <hselasky at FreeBSD.org> wrote:

> Author: hselasky
> Date: Tue Jun  2 09:45:43 2020
> New Revision: 361722
> URL: https://svnweb.freebsd.org/changeset/base/361722
> 
> Log:
>   Implement BUILD_BUG_ON_ZERO() in the LinuxKPI.
>   Tested using gcc and clang.
>   
>   MFC after:	1 week
>   Sponsored by:	Mellanox Technologies
> 
> Modified:
>   head/sys/compat/linuxkpi/common/include/linux/kernel.h
> 
> Modified: head/sys/compat/linuxkpi/common/include/linux/kernel.h
> ==============================================================================
> --- head/sys/compat/linuxkpi/common/include/linux/kernel.h	Tue Jun  2 03:44:22 2020	(r361721)
> +++ head/sys/compat/linuxkpi/common/include/linux/kernel.h	Tue Jun  2 09:45:43 2020	(r361722)
> @@ -94,6 +94,9 @@
>  #define	BUILD_BUG_ON_NOT_POWER_OF_2(x)	BUILD_BUG_ON(!powerof2(x))
>  #define	BUILD_BUG_ON_INVALID(expr)	while (0) { (void)(expr); }
>  
> +extern const volatile int lkpi_build_bug_on_zero;
> +#define	BUILD_BUG_ON_ZERO(x)	((x) ? lkpi_build_bug_on_zero : 0)
> +
>  #define	BUG()			panic("BUG at %s:%d", __FILE__, __LINE__)
>  #define	BUG_ON(cond)		do {				\
>  	if (cond) {						\

 That doesn't work for drm-kmod.
 One example of error :
--- intel_display.o ---
/usr/home/manu/Work/freebsd/drm-kmod/drivers/gpu/drm/i915/intel_display.c:14804:38: error: implicit declaration of function '__is_constexpr' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
                val = (val & ~PANEL_UNLOCK_MASK) | PANEL_UNLOCK_REGS;
                                                   ^
/usr/home/manu/Work/freebsd/drm-kmod/drivers/gpu/drm/i915/i915_reg.h:4770:29: note: expanded from macro 'PANEL_UNLOCK_REGS'
#define  PANEL_UNLOCK_REGS              REG_FIELD_PREP(PANEL_UNLOCK_MASK, 0xabcd)
                                        ^
/usr/home/manu/Work/freebsd/drm-kmod/drivers/gpu/drm/i915/i915_reg.h:164:28: note: expanded from macro 'REG_FIELD_PREP'
               BUILD_BUG_ON_ZERO(!__is_constexpr(__mask)) +             \
                                  ^
/usr/home/manu/Work/freebsd/drm-kmod/drivers/gpu/drm/i915/intel_display.c:14804:38: error: '__builtin_choose_expr' requires a constant expression
                val = (val & ~PANEL_UNLOCK_MASK) | PANEL_UNLOCK_REGS;
                                                   ^~~~~~~~~~~~~~~~~
/usr/home/manu/Work/freebsd/drm-kmod/drivers/gpu/drm/i915/i915_reg.h:4770:29: note: expanded from macro 'PANEL_UNLOCK_REGS'
#define  PANEL_UNLOCK_REGS              REG_FIELD_PREP(PANEL_UNLOCK_MASK, 0xabcd)
                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/home/manu/Work/freebsd/drm-kmod/drivers/gpu/drm/i915/i915_reg.h:167:49: note: expanded from macro 'REG_FIELD_PREP'
               BUILD_BUG_ON_ZERO(__builtin_choose_expr(__is_constexpr(__val), (~((__mask) >> __bf_shf(__mask)) & (__val)), 0))))
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/manu/Work/freebsd/freebsd-svn/base/head/sys//compat/linuxkpi/common/include/linux/kernel.h:98:32: note: expanded from macro 'BUILD_BUG_ON_ZERO'
#define BUILD_BUG_ON_ZERO(x)    ((x) ? lkpi_build_bug_on_zero : 0)
                                  ^
11 errors generated.
*** [intel_display.o] Error code 1


 Step to reproduce: 

 git clone https://github.com/freebsd/drm-kmod.git
 edit drivers/gpu/drm/i915/i915_drv.h to remove the dummy 
BUILD_BUG_ON_ZERO macro.
 make -C i915

-- 
Emmanuel Vadot <manu at bidouilliste.com> <manu at freebsd.org>


More information about the svn-src-all mailing list