Re: [PATCH 30/30] tools/testing/vma: output compared expression on ASSERT_[EQ, NE]()
Pedro Falcato <[email protected]> Thu, 2 Jul 2026 12:53:09 +0100
| Newsgroups | org.kernel.vger.linux-sgx,dev.linux.lists.damon,dev.linux.lists.iommu,dev.linux.lists.nvdimm,org.freedesktop.lists.dri-devel,org.kernel.vger.kvm,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel,org.kernel.vger.linux-parisc,org.kernel.vger.linux-perf-users,org.kernel.vger.linux-tegra,org.kernel.vger.linux-trace-kernel |
|---|---|
| Message-ID | <[email protected]> |
On Mon, Jun 29, 2026 at 01:23:41PM +0100, Lorenzo Stoakes wrote: > Update the macros to output the compared values at hex for easier debugging > when test asserts fail. > > Also remove unused IS_SET() macro. > > Signed-off-by: Lorenzo Stoakes <[email protected]> > --- > tools/testing/vma/shared.h | 31 +++++++++++++++++++------------ > 1 file changed, 19 insertions(+), 12 deletions(-) > > diff --git a/tools/testing/vma/shared.h b/tools/testing/vma/shared.h > index ca4f1238f1c7..216be4cda369 100644 > --- a/tools/testing/vma/shared.h > +++ b/tools/testing/vma/shared.h > @@ -21,19 +21,28 @@ > } \ > } while (0) > > -#define ASSERT_TRUE(_expr) \ > - do { \ > - if (!(_expr)) { \ > - fprintf(stderr, \ > - "Assert FAILED at %s:%d:%s(): %s is FALSE.\n", \ > - __FILE__, __LINE__, __FUNCTION__, #_expr); \ > - return false; \ > - } \ > +#define __ASSERT_TRUE(_expr, _fmt, ...) \ > + do { \ > + if (!(_expr)) { \ > + fprintf(stderr, \ > + "Assert FAILED at %s:%d:%s(): %s is FALSE" \ > + _fmt ".\n", \ > + __FILE__, __LINE__, __FUNCTION__, #_expr \ > + __VA_OPT__(,) __VA_ARGS__); \ > + return false; \ > + } \ > } while (0) > > +#define __TO_SCALAR(x) ((unsigned long long)(uintptr_t)(x)) There's a slight footgun here: this can truncate 64-bit types in 32-bit archs. Though it doesn't really matter in our case, I think. > + > +#define ASSERT_TRUE(_expr) __ASSERT_TRUE(_expr, "") > #define ASSERT_FALSE(_expr) ASSERT_TRUE(!(_expr)) > -#define ASSERT_EQ(_val1, _val2) ASSERT_TRUE((_val1) == (_val2)) > -#define ASSERT_NE(_val1, _val2) ASSERT_TRUE((_val1) != (_val2)) > +#define ASSERT_EQ(_val1, _val2) \ > + __ASSERT_TRUE((_val1) == (_val2), " (0x%llx != 0x%llx)", \ > + __TO_SCALAR(_val1), __TO_SCALAR(_val2)) > +#define ASSERT_NE(_val1, _val2) \ > + __ASSERT_TRUE((_val1) != (_val2), " (0x%llx == 0x%llx)", \ > + __TO_SCALAR(_val1), __TO_SCALAR(_val2)) > > #define ASSERT_FLAGS_SAME_MASK(_flags, _flags_other) \ > ASSERT_TRUE(vma_flags_same_mask((_flags), (_flags_other))) > @@ -53,8 +62,6 @@ > #define ASSERT_FLAGS_NONEMPTY(_flags) \ > ASSERT_FALSE(vma_flags_empty(_flags)) > > -#define IS_SET(_val, _flags) ((_val & _flags) == _flags) > - > extern bool fail_prealloc; > > /* Override vma_iter_prealloc() so we can choose to fail it. */ > -- > 2.54.0 Acked-by: Pedro Falcato <[email protected]> -- Pedro