Skip to content

Commit 1b476a9

Browse files
committed
Don't abort() in "release" builds
Change the default behavior of `LTC_ARGCHK()` for Release, resp. Release+Shared Library builds to be non-fatal. This closes #458 Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
1 parent 8c477da commit 1b476a9

File tree

3 files changed

+23
-6
lines changed

3 files changed

+23
-6
lines changed

CMakeLists.txt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ option(WITH_PTHREAD "Build with pthread support" FALSE)
5353
# -----------------------------------------------------------------------------
5454
# Compose CFLAGS
5555
# -----------------------------------------------------------------------------
56+
set(LTC_CFLAGS "" CACHE STRING "Optional user-specific CFLAGS")
57+
set(LTC_LDFLAGS "" CACHE STRING "Optional user-specific LDFLAGS")
5658

5759
# Some information ported from makefile_include.mk
5860

@@ -80,8 +82,17 @@ else()
8082
-Wsystem-headers
8183
)
8284
set(CMAKE_C_FLAGS_DEBUG "-g3")
83-
set(CMAKE_C_FLAGS_RELEASE "-O3 -funroll-loops -fomit-frame-pointer")
84-
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-g3 -O2")
85+
if(LTC_CFLAGS MATCHES "-DARGTYPE")
86+
set(ARGTYPE "")
87+
else()
88+
set(ARGTYPE "-DARGTYPE=4")
89+
endif()
90+
set(CMAKE_C_FLAGS_RELEASE "-O3 -funroll-loops -fomit-frame-pointer ${ARGTYPE}")
91+
if(BUILD_SHARED_LIBS)
92+
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-g3 -O2 ${ARGTYPE}")
93+
else()
94+
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-g3 -O2")
95+
endif()
8596
set(CMAKE_C_FLAGS_MINSIZEREL "-Os")
8697
endif()
8798

makefile_include.mk

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,12 @@ ifneq ($(GIT_VERSION),)
148148
LTC_CFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\"
149149
endif
150150

151+
ifndef LTC_DEBUG
152+
ifeq ($(findstring -DARGTYPE,$(CFLAGS)),)
153+
LTC_CFLAGS += -DARGTYPE=4
154+
endif
155+
endif
156+
151157
LTC_CFLAGS := $(LTC_CFLAGS) $(CFLAGS)
152158

153159
ifneq ($(findstring -DLTC_PTHREAD,$(LTC_CFLAGS)),)

src/headers/tomcrypt_argchk.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,19 @@
1111

1212
LTC_NORETURN void crypt_argchk(const char *v, const char *s, int d);
1313
#define LTC_ARGCHK(x) do { if (!(x)) { crypt_argchk(#x, __FILE__, __LINE__); } }while(0)
14-
#define LTC_ARGCHKVD(x) do { if (!(x)) { crypt_argchk(#x, __FILE__, __LINE__); } }while(0)
1514

1615
#elif ARGTYPE == 1
1716

1817
/* fatal type of error */
1918
#define LTC_ARGCHK(x) assert((x))
20-
#define LTC_ARGCHKVD(x) LTC_ARGCHK(x)
2119

2220
#elif ARGTYPE == 2
2321

2422
#define LTC_ARGCHK(x) if (!(x)) { fprintf(stderr, "\nwarning: ARGCHK failed at %s:%d\n", __FILE__, __LINE__); }
25-
#define LTC_ARGCHKVD(x) LTC_ARGCHK(x)
2623

2724
#elif ARGTYPE == 3
2825

2926
#define LTC_ARGCHK(x) LTC_UNUSED_PARAM(x)
30-
#define LTC_ARGCHKVD(x) LTC_ARGCHK(x)
3127

3228
#elif ARGTYPE == 4
3329

@@ -36,3 +32,7 @@ LTC_NORETURN void crypt_argchk(const char *v, const char *s, int d);
3632

3733
#endif
3834

35+
#if defined(LTC_ARGCHK) && !defined(LTC_ARGCHKVD)
36+
#define LTC_ARGCHKVD(x) LTC_ARGCHK(x)
37+
#endif
38+

0 commit comments

Comments
 (0)