From 67a334bc26279f7e1da6bfc10a1d7b11d2e0ab70 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Wed, 21 Feb 2018 09:30:18 +0000 Subject: [PATCH] deprecated NDEBUG and introduced HCL_BUILD_DEBUG and HCL_BUILD_RELEASE --- configure | 20 +++++++++++++------- configure.ac | 16 +++++++++------- lib/bigint.c | 2 +- lib/decode.c | 2 +- lib/hcl-cfg.h.in | 6 ++++++ lib/hcl-prv.h | 2 +- lib/hcl.c | 4 +++- lib/hcl.h | 10 ++++++---- lib/main.c | 10 +++++----- lib/obj.c | 2 +- 10 files changed, 46 insertions(+), 28 deletions(-) diff --git a/configure b/configure index 960b76b..6799ef0 100755 --- a/configure +++ b/configure @@ -19400,13 +19400,19 @@ fi if test "$enable_debug_is" = "yes" then - CFLAGS="$CFLAGS -g -D_DEBUG -UNDEBUG -DHCL_BUILD_DEBUG -U_FORTIFY_SOURCE" - CXXFLAGS="$CXXFLAGS -g -D_DEBUG -UNDEBUG -DHCL_BUILD_DEBUG -U_FORTIFY_SOURCE" + CFLAGS="$CFLAGS -g -D_DEBUG -UNDEBUG -U_FORTIFY_SOURCE" + CXXFLAGS="$CXXFLAGS -g -D_DEBUG -UNDEBUG -U_FORTIFY_SOURCE" + +$as_echo "#define HCL_BUILD_DEBUG 1" >>confdefs.h + BUILD_MODE="debug" else - CFLAGS="$CFLAGS -DNDEBUG -U_DEBUG -DHCL_BUILD_RELEASE -U_FORTIFY_SOURCE" - CXXFLAGS="$CXXFLAGS -DNDEBUG -U_DEBUG -DHCL_BUILD_RELEASE -U_FORTIFY_SOURCE" + CFLAGS="$CFLAGS -DNDEBUG -U_DEBUG -U_FORTIFY_SOURCE" + CXXFLAGS="$CXXFLAGS -DNDEBUG -U_DEBUG -U_FORTIFY_SOURCE" + +$as_echo "#define HCL_BUILD_RELEASE 1" >>confdefs.h + BUILD_MODE="release" fi @@ -19460,7 +19466,7 @@ fi if test "${enable_unicode}" = "yes" then -$as_echo "#define HCL_ENABLE_UNICODE /**/" >>confdefs.h +$as_echo "#define HCL_ENABLE_UNICODE 1" >>confdefs.h fi @@ -19499,7 +19505,7 @@ test "${enable_shared}" = "no" && enable_dynamic_module_is="no" if test "${enable_dynamic_module_is}" = "yes" then -$as_echo "#define HCL_ENABLE_DYNAMIC_MODULE /**/" >>confdefs.h +$as_echo "#define HCL_ENABLE_DYNAMIC_MODULE 1" >>confdefs.h fi if test "${enable_dynamic_module_is}" = "yes"; then @@ -19524,7 +19530,7 @@ test "${enable_shared}" = "no" -a "${enable_static}" = "yes" && enable_static_mo if test "${enable_static_module_is}" = "yes" then -$as_echo "#define HCL_ENABLE_STATIC_MODULE /**/" >>confdefs.h +$as_echo "#define HCL_ENABLE_STATIC_MODULE 1" >>confdefs.h fi if test "${enable_static_module_is}" = "yes"; then diff --git a/configure.ac b/configure.ac index d505e58..3b22b5f 100644 --- a/configure.ac +++ b/configure.ac @@ -397,12 +397,14 @@ AC_ARG_ENABLE([debug], [AS_HELP_STRING([--enable-debug],[build the library in th enable_debug_is=$enableval,enable_debug_is=no) if test "$enable_debug_is" = "yes" then - [CFLAGS="$CFLAGS -g -D_DEBUG -UNDEBUG -DHCL_BUILD_DEBUG -U_FORTIFY_SOURCE"] - [CXXFLAGS="$CXXFLAGS -g -D_DEBUG -UNDEBUG -DHCL_BUILD_DEBUG -U_FORTIFY_SOURCE"] + [CFLAGS="$CFLAGS -g -D_DEBUG -UNDEBUG -U_FORTIFY_SOURCE"] + [CXXFLAGS="$CXXFLAGS -g -D_DEBUG -UNDEBUG -U_FORTIFY_SOURCE"] + AC_DEFINE([HCL_BUILD_DEBUG],[1],[build release/debug]) AC_SUBST(BUILD_MODE, "debug") else - [CFLAGS="$CFLAGS -DNDEBUG -U_DEBUG -DHCL_BUILD_RELEASE -U_FORTIFY_SOURCE"] - [CXXFLAGS="$CXXFLAGS -DNDEBUG -U_DEBUG -DHCL_BUILD_RELEASE -U_FORTIFY_SOURCE"] + [CFLAGS="$CFLAGS -DNDEBUG -U_DEBUG -U_FORTIFY_SOURCE"] + [CXXFLAGS="$CXXFLAGS -DNDEBUG -U_DEBUG -U_FORTIFY_SOURCE"] + AC_DEFINE([HCL_BUILD_RELEASE],[1],[build release/debug]) AC_SUBST(BUILD_MODE, "release") fi @@ -442,7 +444,7 @@ AC_ARG_ENABLE([unicode], ) if test "${enable_unicode}" = "yes" then - AC_DEFINE([HCL_ENABLE_UNICODE],[],[Use the unicode character type as the default character type]) + AC_DEFINE([HCL_ENABLE_UNICODE],[1],[Use the unicode character type as the default character type]) fi AC_ARG_ENABLE([cxx], @@ -469,7 +471,7 @@ test "${enable_shared}" = "no" && enable_dynamic_module_is="no" if test "${enable_dynamic_module_is}" = "yes" then - AC_DEFINE([HCL_ENABLE_DYNAMIC_MODULE],[],[enable dynamic module capability]) + AC_DEFINE([HCL_ENABLE_DYNAMIC_MODULE],[1],[enable dynamic module capability]) fi AM_CONDITIONAL(ENABLE_DYNAMIC_MODULE, test "${enable_dynamic_module_is}" = "yes") @@ -483,7 +485,7 @@ test "${enable_shared}" = "no" -a "${enable_static}" = "yes" && enable_static_mo if test "${enable_static_module_is}" = "yes" then - AC_DEFINE([HCL_ENABLE_STATIC_MODULE],[],[link modules statically into the main library]) + AC_DEFINE([HCL_ENABLE_STATIC_MODULE],[1],[link modules statically into the main library]) fi AM_CONDITIONAL(ENABLE_STATIC_MODULE, test "${enable_static_module_is}" = "yes") diff --git a/lib/bigint.c b/lib/bigint.c index cccaa96..d70b4a7 100644 --- a/lib/bigint.c +++ b/lib/bigint.c @@ -1060,7 +1060,7 @@ static HCL_INLINE void multiply_unsigned_array (const hcl_liw_t* x, hcl_oow_t xs * -------------------------------------------------------------------- */ -#if !defined(NDEBUG) +#if defined(HCL_BUILD_DEBUG) #define CANNOT_KARATSUBA(hcl,xs,ys) \ ((xs) < (hcl)->option.karatsuba_cutoff || (ys) < (hcl)->option.karatsuba_cutoff || \ ((xs) > (ys) && (ys) <= (((xs) + 1) / 2)) || \ diff --git a/lib/decode.c b/lib/decode.c index 9c713cb..e1cf0e5 100644 --- a/lib/decode.c +++ b/lib/decode.c @@ -28,7 +28,7 @@ #define DECODE_LOG_MASK (HCL_LOG_MNEMONIC | HCL_LOG_INFO) -#if defined(NDEBUG) +#if defined(HCL_BUILD_RELEASE) /* get rid of instruction logging regardless of the log mask * in the release build */ # define LOG_INST_0(hcl,fmt) diff --git a/lib/hcl-cfg.h.in b/lib/hcl-cfg.h.in index 806b1b3..6018dd4 100644 --- a/lib/hcl-cfg.h.in +++ b/lib/hcl-cfg.h.in @@ -216,6 +216,12 @@ /* __va_copy is available */ #undef HAVE___VA_COPY +/* build release/debug */ +#undef HCL_BUILD_DEBUG + +/* build release/debug */ +#undef HCL_BUILD_RELEASE + /* enable dynamic module capability */ #undef HCL_ENABLE_DYNAMIC_MODULE diff --git a/lib/hcl-prv.h b/lib/hcl-prv.h index 7e70237..282efa6 100644 --- a/lib/hcl-prv.h +++ b/lib/hcl-prv.h @@ -58,7 +58,7 @@ -#if !defined(NDEBUG) +#if defined(HCL_BUILD_DEBUG) #define HCL_DEBUG_VM_PROCESSOR 1 #define HCL_DEBUG_VM_EXEC 1 #define HCL_DEBUG_BIGINT 1 diff --git a/lib/hcl.c b/lib/hcl.c index 776205b..9dcabd4 100644 --- a/lib/hcl.c +++ b/lib/hcl.c @@ -103,7 +103,9 @@ int hcl_init (hcl_t* hcl, hcl_mmgr_t* mmgr, hcl_oow_t heapsz, const hcl_vmprim_t hcl->option.dfl_symtab_size = HCL_DFL_SYMTAB_SIZE; hcl->option.dfl_sysdic_size = HCL_DFL_SYSDIC_SIZE; hcl->option.dfl_procstk_size = HCL_DFL_PROCSTK_SIZE; +#if defined(HCL_BUILD_DEBUG) hcl->option.karatsuba_cutoff = HCL_KARATSUBA_CUTOFF; /* this won't be used when NDEBUG is set */ +#endif hcl->log.capa = HCL_ALIGN_POW2(1, HCL_LOG_CAPA_ALIGN); /* TODO: is this a good initial size? */ /* alloate the log buffer in advance though it may get reallocated @@ -265,7 +267,7 @@ int hcl_setoption (hcl_t* hcl, hcl_option_t id, const void* value) { case HCL_TRAIT: hcl->option.trait = *(const unsigned int*)value; - #if !defined(NDEBUG) + #if defined(HCL_BUILD_DEBUG) hcl->option.karatsuba_cutoff = ((hcl->option.trait & HCL_DEBUG_BIGINT)? HCL_KARATSUBA_CUTOFF_DEBUG: HCL_KARATSUBA_CUTOFF); #endif return 0; diff --git a/lib/hcl.h b/lib/hcl.h index 0e2d1b2..07c4324 100644 --- a/lib/hcl.h +++ b/lib/hcl.h @@ -165,7 +165,7 @@ typedef enum hcl_option_dflval_t hcl_option_dflval_t; enum hcl_trait_t { -#if !defined(NDEBUG) +#if defined(HCL_BUILD_DEBUG) HCL_DEBUG_GC = (1 << 0), HCL_DEBUG_BIGINT = (1 << 1), #endif @@ -963,8 +963,10 @@ struct hcl_t hcl_oow_t dfl_sysdic_size; hcl_oow_t dfl_procstk_size; + #if defined(HCL_BUILD_DEBUG) /* set automatically when trait is set */ - int karatsuba_cutoff; /* used when NDEBUG is not set only. but keep it here regardless */ + int karatsuba_cutoff; + #endif } option; hcl_vmprim_t vmprim; @@ -1181,7 +1183,7 @@ typedef enum hcl_log_mask_t hcl_log_mask_t; #define HCL_LOG5(hcl,mask,fmt,a1,a2,a3,a4,a5) do { if (HCL_LOG_ENABLED(hcl,mask)) hcl_logbfmt(hcl, mask, fmt, a1, a2, a3, a4, a5); } while(0) #define HCL_LOG6(hcl,mask,fmt,a1,a2,a3,a4,a5,a6) do { if (HCL_LOG_ENABLED(hcl,mask)) hcl_logbfmt(hcl, mask, fmt, a1, a2, a3, a4, a5, a6); } while(0) -#if defined(NDEBUG) +#if defined(HCL_BUILD_RELEASE) /* [NOTE] * get rid of debugging message totally regardless of * the log mask in the release build. @@ -1215,7 +1217,7 @@ typedef enum hcl_log_mask_t hcl_log_mask_t; /* ========================================================================= * HCL ASSERTION * ========================================================================= */ -#if defined(NDEBUG) +#if defined(HCL_BUILD_RELEASE) # define HCL_ASSERT(hcl,expr) ((void)0) #else # define HCL_ASSERT(hcl,expr) ((void)((expr) || (hcl_assertfailed (hcl, #expr, __FILE__, __LINE__), 0))) diff --git a/lib/main.c b/lib/main.c index 0593343..44b34c6 100644 --- a/lib/main.c +++ b/lib/main.c @@ -1242,7 +1242,7 @@ static int handle_logopt (hcl_t* hcl, const hcl_bch_t* str) return 0; } -#if !defined(NDEBUG) +#if defined(HCL_BUILD_DEBUG) static int handle_dbgopt (hcl_t* hcl, const hcl_bch_t* str) { xtn_t* xtn = hcl_getxtn (hcl); @@ -1435,7 +1435,7 @@ int main (int argc, char* argv[]) { { ":log", 'l' }, { ":memsize", 'm' }, -#if !defined(NDEBUG) +#if defined(HCL_BUILD_DEBUG) { ":debug", '\0' }, /* NOTE: there is no short option for --debug */ #endif { HCL_NULL, '\0' } @@ -1449,7 +1449,7 @@ int main (int argc, char* argv[]) const char* logopt = HCL_NULL; hcl_oow_t memsize = MIN_MEMSIZE; -#if !defined(NDEBUG) +#if defined(HCL_BUILD_DEBUG) const char* dbgopt = HCL_NULL; #endif @@ -1478,7 +1478,7 @@ int main (int argc, char* argv[]) case '\0': - #if !defined(NDEBUG) + #if defined(HCL_BUILD_DEBUG) if (hcl_compbcstr(opt.lngopt, "debug") == 0) { dbgopt = opt.arg; @@ -1568,7 +1568,7 @@ int main (int argc, char* argv[]) xtn->logmask = HCL_LOG_ALL_TYPES | HCL_LOG_ERROR | HCL_LOG_FATAL; } -#if !defined(NDEBUG) +#if defined(HCL_BUILD_DEBUG) if (dbgopt) { if (handle_dbgopt (hcl, dbgopt) <= -1) diff --git a/lib/obj.c b/lib/obj.c index 9c169e5..49c0bcf 100644 --- a/lib/obj.c +++ b/lib/obj.c @@ -31,7 +31,7 @@ void* hcl_allocbytes (hcl_t* hcl, hcl_oow_t size) { hcl_uint8_t* ptr; -#if !defined(NDEBUG) +#if defined(HCL_BUILD_DEBUG) if ((hcl->option.trait & HCL_DEBUG_GC) && !(hcl->option.trait & HCL_NOGC)) hcl_gc (hcl); #endif