Message ID | 1461675886-4275-1-git-send-email-cardoe@cardoe.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 26/04/16 14:04, Doug Goldstein wrote: > Instead of trying to write a snippet of code that crashes the process > just use abort() directly. This is to fix the build on clang which > detects that the snippet of code will crash and fails to compile. At > the same time removed extraneous whitespace in the macro. > > Signed-off-by: Doug Goldstein <cardoe@cardoe.com> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com> I definitely remember encountering this issue when trying to do clang builds in the past. I wonder where the patch went... > --- > Honestly this whole macro could get replaced with assert(3) but I wanted > to make the smallest change possible. If that's preferrable I'll do that. > The man page claims that assert(3) will print the following to stderr: > > "assertion \"%s\" failed: file \"%s\", line %d\n", \ > "expression", __FILE__, __LINE__); > --- > tools/blktap2/drivers/tapdisk-vbd.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/tools/blktap2/drivers/tapdisk-vbd.c b/tools/blktap2/drivers/tapdisk-vbd.c > index 31bc2fe..e2e9cd5 100644 > --- a/tools/blktap2/drivers/tapdisk-vbd.c > +++ b/tools/blktap2/drivers/tapdisk-vbd.c > @@ -49,18 +49,18 @@ > #define DBG(_level, _f, _a...) tlog_write(_level, _f, ##_a) > #define ERR(_err, _f, _a...) tlog_error(_err, _f, ##_a) > > -#if 1 > +#if 1 > #define ASSERT(p) \ > do { \ > if (!(p)) { \ > DPRINTF("Assertion '%s' failed, line %d, " \ > "file %s", #p, __LINE__, __FILE__); \ > - *(int*)0 = 0; \ > + abort(); \ > } \ > } while (0) > #else > #define ASSERT(p) ((void)0) > -#endif > +#endif > > > #define TD_VBD_EIO_RETRIES 10
On Tue, Apr 26, 2016 at 08:04:46AM -0500, Doug Goldstein wrote: > Instead of trying to write a snippet of code that crashes the process > just use abort() directly. This is to fix the build on clang which > detects that the snippet of code will crash and fails to compile. At > the same time removed extraneous whitespace in the macro. > > Signed-off-by: Doug Goldstein <cardoe@cardoe.com> Acked-by: Wei Liu <wei.liu2@citrix.com> Release-acked-by: Wei Liu <wei.liu2@citrix.com> And queued.
diff --git a/tools/blktap2/drivers/tapdisk-vbd.c b/tools/blktap2/drivers/tapdisk-vbd.c index 31bc2fe..e2e9cd5 100644 --- a/tools/blktap2/drivers/tapdisk-vbd.c +++ b/tools/blktap2/drivers/tapdisk-vbd.c @@ -49,18 +49,18 @@ #define DBG(_level, _f, _a...) tlog_write(_level, _f, ##_a) #define ERR(_err, _f, _a...) tlog_error(_err, _f, ##_a) -#if 1 +#if 1 #define ASSERT(p) \ do { \ if (!(p)) { \ DPRINTF("Assertion '%s' failed, line %d, " \ "file %s", #p, __LINE__, __FILE__); \ - *(int*)0 = 0; \ + abort(); \ } \ } while (0) #else #define ASSERT(p) ((void)0) -#endif +#endif #define TD_VBD_EIO_RETRIES 10
Instead of trying to write a snippet of code that crashes the process just use abort() directly. This is to fix the build on clang which detects that the snippet of code will crash and fails to compile. At the same time removed extraneous whitespace in the macro. Signed-off-by: Doug Goldstein <cardoe@cardoe.com> --- Honestly this whole macro could get replaced with assert(3) but I wanted to make the smallest change possible. If that's preferrable I'll do that. The man page claims that assert(3) will print the following to stderr: "assertion \"%s\" failed: file \"%s\", line %d\n", \ "expression", __FILE__, __LINE__); --- tools/blktap2/drivers/tapdisk-vbd.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)