libintrovirt
v0.57.4
IntroVirt introspection library
Loading...
Searching...
No Matches
introvirt_assert.hh
Go to the documentation of this file.
1
/*
2
* Copyright 2021 Assured Information Security, Inc.
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*/
16
#pragma once
17
18
#include "
compiler.hh
"
19
20
#include <boost/stacktrace.hpp>
21
#include <log4cxx/logger.h>
22
23
#include <cassert>
24
#include <cstdlib>
25
#include <iostream>
26
27
namespace
introvirt
{
28
29
#ifdef NDEBUG
30
#define introvirt_assert(condition, msg)
/* */
31
#else
32
#define introvirt_assert(condition, msg) \
33
if (unlikely(!(condition))) { \
34
static log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger("introvirt.assert")); \
35
LOG4CXX_FATAL(logger, "Assertion '" << #condition << "' failed : " << msg << '\n' \
36
<< __FILE__ << ":" << __LINE__ << " " \
37
<< __PRETTY_FUNCTION__ << '\n' \
38
<< boost::stacktrace::stacktrace()); \
39
exit(255); \
40
}
41
#endif
42
43
}
// namespace introvirt
compiler.hh
introvirt
Core IntroVirt classes.
Definition
Cr0.hh:20