Fix -DNDEBUG support

Change-Id: Ib64cef83a646bce2b0afa72b607fb9e5c306e859
This commit is contained in:
Lionel Sambuc 2014-08-22 19:11:59 +02:00
parent 222afb38ac
commit 3260d16f34
20 changed files with 117 additions and 23 deletions

View file

@ -987,7 +987,7 @@ _prop_object_internalize_unmap_file(
(void) munmap(mf->poimf_xml, mf->poimf_mapsize); (void) munmap(mf->poimf_xml, mf->poimf_mapsize);
_PROP_FREE(mf, M_TEMP); _PROP_FREE(mf, M_TEMP);
#else #else
assert(0); abort();
#endif #endif
} }
#endif /* !_KERNEL && !_STANDALONE */ #endif /* !_KERNEL && !_STANDALONE */

View file

@ -480,7 +480,7 @@ do { \
/* /*
* Language features. * Language features.
*/ */
#if defined(__NetBSD__) #if defined(__NetBSD__) || defined(__minix)
#include <sys/cdefs.h> #include <sys/cdefs.h>
#define _PROP_ARG_UNUSED __unused #define _PROP_ARG_UNUSED __unused
#else #else

View file

@ -296,7 +296,10 @@ impl::child::~child(void)
::kill(atf_process_child_pid(&m_child), SIGTERM); ::kill(atf_process_child_pid(&m_child), SIGTERM);
atf_process_status_t s; atf_process_status_t s;
atf_error_t err = atf_process_child_wait(&m_child, &s); #if defined(__minix) && !defined(NDEBUG)
atf_error_t err =
#endif /* defined(__minix) && !defined(NDEBUG) */
atf_process_child_wait(&m_child, &s);
INV(!atf_is_error(err)); INV(!atf_is_error(err));
atf_process_status_fini(&s); atf_process_status_fini(&s);
} }

View file

@ -101,7 +101,10 @@ cleanup_tmpdir(const atf_fs_path_t *dir, const atf_fs_path_t *outfile,
} }
{ {
atf_error_t err = atf_fs_rmdir(dir); #if defined(__minix) && !defined(NDEBUG)
atf_error_t err =
#endif /* defined(__minix) && !defined(NDEBUG) */
atf_fs_rmdir(dir);
INV(!atf_is_error(err)); INV(!atf_is_error(err));
} }
} }
@ -468,7 +471,10 @@ atf_check_exec_array(const char *const *argv, atf_check_result_t *r)
err = atf_check_result_init(r, argv, &dir); err = atf_check_result_init(r, argv, &dir);
if (atf_is_error(err)) { if (atf_is_error(err)) {
atf_error_t err2 = atf_fs_rmdir(&dir); #if defined(__minix) && !defined(NDEBUG)
atf_error_t err2 =
#endif /* defined(__minix) && !defined(NDEBUG) */
atf_fs_rmdir(&dir);
INV(!atf_is_error(err2)); INV(!atf_is_error(err2));
goto out; goto out;
} }

View file

@ -103,6 +103,7 @@ const int atf_process_stream_type_inherit = 3;
const int atf_process_stream_type_redirect_fd = 4; const int atf_process_stream_type_redirect_fd = 4;
const int atf_process_stream_type_redirect_path = 5; const int atf_process_stream_type_redirect_path = 5;
#if defined(__minix) && !defined(NDEBUG)
static static
bool bool
stream_is_valid(const atf_process_stream_t *sb) stream_is_valid(const atf_process_stream_t *sb)
@ -113,6 +114,7 @@ stream_is_valid(const atf_process_stream_t *sb)
(sb->m_type == atf_process_stream_type_redirect_fd) || (sb->m_type == atf_process_stream_type_redirect_fd) ||
(sb->m_type == atf_process_stream_type_redirect_path); (sb->m_type == atf_process_stream_type_redirect_path);
} }
#endif /* defined(__minix) && !defined(NDEBUG) */
atf_error_t atf_error_t
atf_process_stream_init_capture(atf_process_stream_t *sb) atf_process_stream_init_capture(atf_process_stream_t *sb)
@ -604,7 +606,10 @@ do_exec(void *v)
if (ea->m_prehook != NULL) if (ea->m_prehook != NULL)
ea->m_prehook(); ea->m_prehook();
const int ret = const_execvp(atf_fs_path_cstring(ea->m_prog), ea->m_argv); #if defined(__minix) && !defined(NDEBUG)
const int ret =
#endif /* defined(__minix) && !defined(NDEBUG) */
const_execvp(atf_fs_path_cstring(ea->m_prog), ea->m_argv);
const int errnocopy = errno; const int errnocopy = errno;
INV(ret == -1); INV(ret == -1);
fprintf(stderr, "exec(%s) failed: %s\n", fprintf(stderr, "exec(%s) failed: %s\n",

View file

@ -142,7 +142,10 @@ atf_sh::main(void)
// Don't bother keeping track of the memory allocated by construct_argv: // Don't bother keeping track of the memory allocated by construct_argv:
// we are going to exec or die immediately. // we are going to exec or die immediately.
const int ret = execv(shell.c_str(), const_cast< char** >(argv)); #if defined(__minix) && !defined(NDEBUG)
const int ret =
#endif /* defined(__minix) && !defined(NDEBUG) */
execv(shell.c_str(), const_cast< char** >(argv));
INV(ret == -1); INV(ret == -1);
std::cerr << "Failed to execute " << shell << ": " << std::strerror(errno) std::cerr << "Failed to execute " << shell << ": " << std::strerror(errno)
<< "\n"; << "\n";

View file

@ -345,9 +345,15 @@ ssize_t
cdf_read_sector(const cdf_info_t *info, void *buf, size_t offs, size_t len, cdf_read_sector(const cdf_info_t *info, void *buf, size_t offs, size_t len,
const cdf_header_t *h, cdf_secid_t id) const cdf_header_t *h, cdf_secid_t id)
{ {
#if defined(__minix) && !defined(NDEBUG)
size_t ss = CDF_SEC_SIZE(h); size_t ss = CDF_SEC_SIZE(h);
#endif /* defined(__minix) && !defined(NDEBUG) */
size_t pos = CDF_SEC_POS(h, id); size_t pos = CDF_SEC_POS(h, id);
#if defined(__minix) && !defined(NDEBUG)
/* MINIX: It seems even with NDEBUG, when built as a tool assert is
* still defined on linux. */
assert(ss == len); assert(ss == len);
#endif /* defined(__minix) && !defined(NDEBUG) */
return cdf_read(info, (off_t)pos, ((char *)buf) + offs, len); return cdf_read(info, (off_t)pos, ((char *)buf) + offs, len);
} }
@ -355,9 +361,13 @@ ssize_t
cdf_read_short_sector(const cdf_stream_t *sst, void *buf, size_t offs, cdf_read_short_sector(const cdf_stream_t *sst, void *buf, size_t offs,
size_t len, const cdf_header_t *h, cdf_secid_t id) size_t len, const cdf_header_t *h, cdf_secid_t id)
{ {
#if defined(__minix) && !defined(NDEBUG)
size_t ss = CDF_SHORT_SEC_SIZE(h); size_t ss = CDF_SHORT_SEC_SIZE(h);
#endif /* defined(__minix) && !defined(NDEBUG) */
size_t pos = CDF_SHORT_SEC_POS(h, id); size_t pos = CDF_SHORT_SEC_POS(h, id);
#if defined(__minix) && !defined(NDEBUG)
assert(ss == len); assert(ss == len);
#endif /* defined(__minix) && !defined(NDEBUG) */
if (pos > CDF_SEC_SIZE(h) * sst->sst_len) { if (pos > CDF_SEC_SIZE(h) * sst->sst_len) {
DPRINTF(("Out of bounds read %" SIZE_T_FORMAT "u > %" DPRINTF(("Out of bounds read %" SIZE_T_FORMAT "u > %"
SIZE_T_FORMAT "u\n", SIZE_T_FORMAT "u\n",

View file

@ -143,7 +143,10 @@ get_file(sqlite::database& db, const int64_t file_id)
const std::string contents( const std::string contents(
static_cast< const char *>(raw_contents.memory), raw_contents.size); static_cast< const char *>(raw_contents.memory), raw_contents.size);
const bool more = stmt.step(); #if defined(__minix) && !defined(NDEBUG)
const bool more =
#endif /* defined(__minix) && !defined(NDEBUG) */
stmt.step();
INV(!more); INV(!more);
return contents; return contents;
@ -384,7 +387,10 @@ store::detail::get_test_program(backend& backend_, const int64_t id)
fs::path(stmt.safe_column_text("root")), fs::path(stmt.safe_column_text("root")),
stmt.safe_column_text("test_suite_name"), stmt.safe_column_text("test_suite_name"),
get_metadata(db, stmt.safe_column_int64("metadata_id")))); get_metadata(db, stmt.safe_column_int64("metadata_id"))));
const bool more = stmt.step(); #if defined(__minix) && !defined(NDEBUG)
const bool more =
#endif /* defined(__minix) && !defined(NDEBUG) */
stmt.step();
INV(!more); INV(!more);
LD(F("Loaded test program '%s'; getting test cases") % LD(F("Loaded test program '%s'; getting test cases") %

View file

@ -41,6 +41,14 @@
namespace cmdline = utils::cmdline; namespace cmdline = utils::cmdline;
namespace text = utils::text; namespace text = utils::text;
#if defined(__minix) && defined(NDEBUG)
#undef PRE_MSG
#define PRE_MSG(expr, msg) \
do { \
if (!(expr)) \
utils::sanity_failure(utils::precondition, __FILE__, __LINE__, msg); \
} while (0)
#endif /* defined(__minix) && defined(NDEBUG) */
/// Constructs a generic option with both a short and a long name. /// Constructs a generic option with both a short and a long name.
/// ///

View file

@ -272,7 +272,10 @@ datetime::timestamp::now(void)
::timeval data; ::timeval data;
{ {
const int ret = ::gettimeofday(&data, NULL); #if defined(__minix) && !defined(NDEBUG)
const int ret =
#endif /* defined(__minix) && !defined(NDEBUG) */
::gettimeofday(&data, NULL);
INV(ret != -1); INV(ret != -1);
} }

View file

@ -203,7 +203,10 @@ cxx_exec(const fs::path& program, const process::args_vector& args) throw()
argv[1 + i] = args[i].c_str(); argv[1 + i] = args[i].c_str();
argv[1 + args.size()] = NULL; argv[1 + args.size()] = NULL;
const int ret = ::execv(program.c_str(), #if defined(__minix) && !defined(NDEBUG)
const int ret =
#endif /* defined(__minix) && !defined(NDEBUG) */
::execv(program.c_str(),
(char* const*)(unsigned long)(const void*)argv); (char* const*)(unsigned long)(const void*)argv);
const int original_errno = errno; const int original_errno = errno;
assert(ret == -1); assert(ret == -1);

View file

@ -164,7 +164,10 @@ mask_signals(void)
sigaddset(&mask, SIGHUP); sigaddset(&mask, SIGHUP);
sigaddset(&mask, SIGINT); sigaddset(&mask, SIGINT);
sigaddset(&mask, SIGTERM); sigaddset(&mask, SIGTERM);
const int ret = ::sigprocmask(SIG_BLOCK, &mask, &old_sigmask); #if defined(__minix) && !defined(NDEBUG)
const int ret =
#endif /* defined(__minix) && !defined(NDEBUG) */
::sigprocmask(SIG_BLOCK, &mask, &old_sigmask);
INV(ret != -1); INV(ret != -1);
} }
@ -173,7 +176,10 @@ mask_signals(void)
static void static void
unmask_signals(void) unmask_signals(void)
{ {
const int ret = ::sigprocmask(SIG_SETMASK, &old_sigmask, NULL); #if defined(__minix) && !defined(NDEBUG)
const int ret =
#endif /* defined(__minix) && !defined(NDEBUG) */
::sigprocmask(SIG_SETMASK, &old_sigmask, NULL);
INV(ret != -1); INV(ret != -1);
} }

View file

@ -110,7 +110,10 @@ struct utils::sqlite::database::impl {
close(void) close(void)
{ {
PRE(db != NULL); PRE(db != NULL);
int error = ::sqlite3_close(db); #if defined(__minix) && !defined(NDEBUG)
int error =
#endif /* defined(__minix) && !defined(NDEBUG) */
::sqlite3_close(db);
// For now, let's consider a return of SQLITE_BUSY an error. We should // For now, let's consider a return of SQLITE_BUSY an error. We should
// not be trying to close a busy database in our code. Maybe revisit // not be trying to close a busy database in our code. Maybe revisit
// this later to raise busy errors as exceptions. // this later to raise busy errors as exceptions.

View file

@ -171,7 +171,10 @@ sqlite::statement::~statement(void)
void void
sqlite::statement::step_without_results(void) sqlite::statement::step_without_results(void)
{ {
const bool data = step(); #if defined(__minix) && !defined(NDEBUG)
const bool data =
#endif /* defined(__minix) && !defined(NDEBUG) */
step();
INV_MSG(!data, "The statement should not have produced any rows, but it " INV_MSG(!data, "The statement should not have produced any rows, but it "
"did"); "did");
} }
@ -610,6 +613,14 @@ void
sqlite::statement::clear_bindings(void) sqlite::statement::clear_bindings(void)
{ {
const int error = ::sqlite3_clear_bindings(_pimpl->stmt); const int error = ::sqlite3_clear_bindings(_pimpl->stmt);
#if defined(__minix) && defined(NDEBUG)
#undef PRE_MSG
#define PRE_MSG(expr, msg) \
do { \
if (!(expr)) \
utils::sanity_failure(utils::precondition, __FILE__, __LINE__, msg); \
} while (0)
#endif /* defined(__minix) && defined(NDEBUG) */
PRE_MSG(error == SQLITE_OK, "SQLite3 contract has changed; it should " PRE_MSG(error == SQLITE_OK, "SQLite3 contract has changed; it should "
"only return SQLITE_OK"); "only return SQLITE_OK");
} }

View file

@ -679,6 +679,9 @@ convert_result(const enum atf_status status, const int status_arg,
} }
assert(false); assert(false);
#if defined(__minix) && defined(NDEBUG)
abort();
#endif /* defined(__minix) && !defined(NDEBUG) */
} }

View file

@ -522,8 +522,10 @@ kyua_error_t
kyua_oom_error_new(void) kyua_oom_error_new(void)
{ {
// This is idempotent; no need to ensure that we call it only once. // This is idempotent; no need to ensure that we call it only once.
const bool ok = error_init(&oom_error, kyua_oom_error_type, NULL, 0, #if defined(__minix) && !defined(NDEBUG)
oom_format); const bool ok =
#endif /* defined(__minix) && !defined(NDEBUG) */
error_init(&oom_error, kyua_oom_error_type, NULL, 0, oom_format);
assert(ok); assert(ok);
return &oom_error; return &oom_error;

View file

@ -384,7 +384,10 @@ unmount_with_umount8(const char* mount_point)
if (pid == -1) { if (pid == -1) {
return kyua_libc_error_new(errno, "fork() failed"); return kyua_libc_error_new(errno, "fork() failed");
} else if (pid == 0) { } else if (pid == 0) {
const int ret = execlp(UMOUNT, "umount", mount_point, NULL); #if defined(__minix) && !defined(NDEBUG)
const int ret =
#endif /* defined(__minix) && !defined(NDEBUG) */
execlp(UMOUNT, "umount", mount_point, NULL);
assert(ret == -1); assert(ret == -1);
err(EXIT_FAILURE, "Failed to execute " UMOUNT); err(EXIT_FAILURE, "Failed to execute " UMOUNT);
} }

View file

@ -112,7 +112,10 @@ mask_handlers(const int operation)
sigaddset(&mask, SIGINT); sigaddset(&mask, SIGINT);
sigaddset(&mask, SIGHUP); sigaddset(&mask, SIGHUP);
sigaddset(&mask, SIGTERM); sigaddset(&mask, SIGTERM);
const int ret = sigprocmask(operation, &mask, NULL); #if defined(__minix) && !defined(NDEBUG)
const int ret =
#endif /* defined(__minix) && !defined(NDEBUG) */
sigprocmask(operation, &mask, NULL);
assert(ret != -1); assert(ret != -1);
} }
@ -209,7 +212,10 @@ setup_signal(const int signo, void (*handler)(const int),
sigemptyset(&sa.sa_mask); sigemptyset(&sa.sa_mask);
sa.sa_flags = SA_RESTART; sa.sa_flags = SA_RESTART;
const int ret = sigaction(signo, &sa, old_sa); #if defined(__minix) && !defined(NDEBUG)
const int ret =
#endif /* defined(__minix) && !defined(NDEBUG) */
sigaction(signo, &sa, old_sa);
assert(ret != -1); assert(ret != -1);
} }
@ -227,7 +233,10 @@ setup_timer(const int seconds, struct itimerval* old_itimerval)
new_timer.it_interval.tv_usec = 0; new_timer.it_interval.tv_usec = 0;
new_timer.it_value.tv_sec = seconds; new_timer.it_value.tv_sec = seconds;
new_timer.it_value.tv_usec = 0; new_timer.it_value.tv_usec = 0;
const int ret = setitimer(ITIMER_REAL, &new_timer, old_itimerval); #if defined(__minix) && !defined(NDEBUG)
const int ret =
#endif /* defined(__minix) && !defined(NDEBUG) */
setitimer(ITIMER_REAL, &new_timer, old_itimerval);
assert(ret != -1); assert(ret != -1);
} }
@ -471,7 +480,10 @@ kyua_error_t
kyua_run_wait(const pid_t pid, int* status, bool* timed_out) kyua_run_wait(const pid_t pid, int* status, bool* timed_out)
{ {
int tmp_status; int tmp_status;
const pid_t waited_pid = waitpid(pid, &tmp_status, 0); #if defined(__minix) && !defined(NDEBUG)
const pid_t waited_pid =
#endif /* defined(__minix) && !defined(NDEBUG) */
waitpid(pid, &tmp_status, 0);
assert(pid == waited_pid); assert(pid == waited_pid);
protect(); protect();

View file

@ -126,7 +126,10 @@ run_gdb(const char* program, const char* core_name, FILE* output)
} }
(void)close(STDIN_FILENO); (void)close(STDIN_FILENO);
const int input_fd = open("/dev/null", O_RDONLY); #if defined(__minix) && !defined(NDEBUG)
const int input_fd =
#endif /* defined(__minix) && !defined(NDEBUG) */
open("/dev/null", O_RDONLY);
assert(input_fd == STDIN_FILENO); assert(input_fd == STDIN_FILENO);
const int output_fd = fileno(output); const int output_fd = fileno(output);

View file

@ -997,7 +997,9 @@ static int tcp_get_opt(struct socket * sock, endpoint_t endpt,
cp_grant_id_t grant) cp_grant_id_t grant)
{ {
nwio_tcpopt_t tcpopt; nwio_tcpopt_t tcpopt;
#if !defined(NDEBUG)
struct tcp_pcb * pcb = (struct tcp_pcb *) sock->pcb; struct tcp_pcb * pcb = (struct tcp_pcb *) sock->pcb;
#endif /* !defined(NDEBUG) */
debug_tcp_print("socket num %ld", get_sock_num(sock)); debug_tcp_print("socket num %ld", get_sock_num(sock));
@ -1013,7 +1015,9 @@ static int tcp_set_opt(struct socket * sock, endpoint_t endpt,
cp_grant_id_t grant) cp_grant_id_t grant)
{ {
nwio_tcpopt_t tcpopt; nwio_tcpopt_t tcpopt;
#if !defined(NDEBUG)
struct tcp_pcb * pcb = (struct tcp_pcb *) sock->pcb; struct tcp_pcb * pcb = (struct tcp_pcb *) sock->pcb;
#endif /* !defined(NDEBUG) */
debug_tcp_print("socket num %ld", get_sock_num(sock)); debug_tcp_print("socket num %ld", get_sock_num(sock));