macro: log assertion at debug level in assert_return()
This commit is contained in:
parent
6e8df5f00a
commit
80514f9c9b
|
@ -27,7 +27,6 @@
|
|||
#include <errno.h>
|
||||
|
||||
#include "strv.h"
|
||||
|
||||
#include "sd-bus.h"
|
||||
#include "bus-internal.h"
|
||||
#include "bus-message.h"
|
||||
|
|
|
@ -23,10 +23,9 @@
|
|||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "sd-id128.h"
|
||||
|
||||
#include "util.h"
|
||||
#include "macro.h"
|
||||
#include "sd-id128.h"
|
||||
|
||||
_public_ char *sd_id128_to_string(sd_id128_t id, char s[33]) {
|
||||
unsigned n;
|
||||
|
|
|
@ -28,10 +28,10 @@
|
|||
#include "util.h"
|
||||
#include "cgroup-util.h"
|
||||
#include "macro.h"
|
||||
#include "sd-login.h"
|
||||
#include "strv.h"
|
||||
#include "fileio.h"
|
||||
#include "login-shared.h"
|
||||
#include "sd-login.h"
|
||||
|
||||
_public_ int sd_pid_get_session(pid_t pid, char **session) {
|
||||
|
||||
|
|
|
@ -687,7 +687,7 @@ int log_meta_object(
|
|||
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
|
||||
_noreturn_ static void log_assert(const char *text, const char *file, int line, const char *func, const char *format) {
|
||||
static void log_assert(int level, const char *text, const char *file, int line, const char *func, const char *format) {
|
||||
static char buffer[LINE_MAX];
|
||||
|
||||
snprintf(buffer, sizeof(buffer), format, text, file, line, func);
|
||||
|
@ -695,17 +695,22 @@ _noreturn_ static void log_assert(const char *text, const char *file, int line,
|
|||
char_array_0(buffer);
|
||||
log_abort_msg = buffer;
|
||||
|
||||
log_dispatch(LOG_CRIT, file, line, func, NULL, NULL, buffer);
|
||||
abort();
|
||||
log_dispatch(level, file, line, func, NULL, NULL, buffer);
|
||||
}
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
_noreturn_ void log_assert_failed(const char *text, const char *file, int line, const char *func) {
|
||||
log_assert(text, file, line, func, "Assertion '%s' failed at %s:%u, function %s(). Aborting.");
|
||||
log_assert(LOG_CRIT, text, file, line, func, "Assertion '%s' failed at %s:%u, function %s(). Aborting.");
|
||||
abort();
|
||||
}
|
||||
|
||||
_noreturn_ void log_assert_failed_unreachable(const char *text, const char *file, int line, const char *func) {
|
||||
log_assert(text, file, line, func, "Code should not be reached '%s' at %s:%u, function %s(). Aborting.");
|
||||
log_assert(LOG_CRIT, text, file, line, func, "Code should not be reached '%s' at %s:%u, function %s(). Aborting.");
|
||||
abort();
|
||||
}
|
||||
|
||||
void log_assert_failed_return(const char *text, const char *file, int line, const char *func) {
|
||||
log_assert(LOG_DEBUG, text, file, line, func, "Assertion '%s' failed at %s:%u, function %s(). Ignoring.");
|
||||
}
|
||||
|
||||
int log_oom_internal(const char *file, int line, const char *func) {
|
||||
|
|
|
@ -136,6 +136,12 @@ _noreturn_ void log_assert_failed_unreachable(
|
|||
int line,
|
||||
const char *func);
|
||||
|
||||
void log_assert_failed_return(
|
||||
const char *text,
|
||||
const char *file,
|
||||
int line,
|
||||
const char *func);
|
||||
|
||||
#define log_full(level, ...) \
|
||||
do { \
|
||||
if (log_get_max_level() >= (level)) \
|
||||
|
|
|
@ -153,10 +153,12 @@ static inline size_t ALIGN_TO(size_t l, size_t ali) {
|
|||
#define assert_cc(expr) struct UNIQUE(_assert_struct_) { char x[(expr) ? 0 : -1]; };
|
||||
#endif
|
||||
|
||||
#define assert_return(expr, r) \
|
||||
do { \
|
||||
if (_unlikely_(!(expr))) \
|
||||
return (r); \
|
||||
#define assert_return(expr, r) \
|
||||
do { \
|
||||
if (_unlikely_(!(expr))) { \
|
||||
log_assert_failed_return(#expr, __FILE__, __LINE__, __PRETTY_FUNCTION__); \
|
||||
return (r); \
|
||||
} \
|
||||
} while (false)
|
||||
|
||||
#define PTR_TO_INT(p) ((int) ((intptr_t) (p)))
|
||||
|
|
Loading…
Reference in a new issue