blob: 8502881e327b32d9949bbe1e035770a5d5fb007c [file] [log] [blame]
Patrick Georgi6b5ca4e2011-02-14 19:23:33 +00001/*
2 * This file is part of the libpayload project.
3 *
4 * Copyright (C) 2011 secunet Security Networks AG
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 */
29
30#include <stdlib.h>
Patrick Georgib9122892011-02-14 19:26:22 +000031#include <stdio.h>
Patrick Georgi6b5ca4e2011-02-14 19:23:33 +000032
33// assert's existence depends on NDEBUG state on _last_ inclusion of assert.h,
34// so don't guard this against double-includes.
35#ifdef NDEBUG
36// Heisenbugs appear if statement has side-effects. This could be worked around but does the standard allow for that?
37#define assert(statement)
38#else
Gabe Black5c27e822012-10-02 00:28:33 -070039#define assert(statement) \
40 if ((statement) == 0) { \
41 fprintf(stderr, "assertion failed in file %s, " \
42 "function %s(), line %d\n", \
43 __FILE__, __FUNCTION__, __LINE__); \
44 abort(); \
45 }
Patrick Georgi6b5ca4e2011-02-14 19:23:33 +000046#endif