Date: Tue, 2 Jun 2020 12:35:28 +0200 From: Emmanuel Vadot <manu@bidouilliste.com> To: Hans Petter Selasky <hselasky@FreeBSD.org> Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r361722 - head/sys/compat/linuxkpi/common/include/linux Message-ID: <20200602123528.44c55539be28f1b48740ca76@bidouilliste.com> In-Reply-To: <202006020945.0529jiWs041821@repo.freebsd.org> References: <202006020945.0529jiWs041821@repo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Hello Hans, On Tue, 2 Jun 2020 09:45:44 +0000 (UTC) Hans Petter Selasky <hselasky@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@bidouilliste.com> <manu@freebsd.org>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20200602123528.44c55539be28f1b48740ca76>