introspection tweaks: rename wolfcrypt/src/debug.c to wolfcrypt/src/wc_debug.c; restore BUILD_WC_DEBUG gating for autotools inclusion of wc_debug.o and disable opportunistically when ENABLED_LEANTLS, ENABLED_LEANPSK, or ENABLED_LOWRESOURCE; add HAVE_WC_INTROSPECTION gate for libwolfssl_configure_args() and libwolfssl_global_cflags().

This commit is contained in:
Daniel Pouzzner
2020-10-23 15:27:10 -05:00
parent f37c25f9c0
commit 1ba0883f4c
8 changed files with 95 additions and 20 deletions

View File

@ -110,7 +110,7 @@ add_library(wolfssl
wolfcrypt/src/cryptocb.c wolfcrypt/src/cryptocb.c
wolfcrypt/src/curve25519.c wolfcrypt/src/curve25519.c
wolfcrypt/src/curve448.c wolfcrypt/src/curve448.c
wolfcrypt/src/debug.c wolfcrypt/src/wc_debug.c
wolfcrypt/src/des3.c wolfcrypt/src/des3.c
wolfcrypt/src/dh.c wolfcrypt/src/dh.c
wolfcrypt/src/dsa.c wolfcrypt/src/dsa.c

View File

@ -5785,6 +5785,18 @@ AM_CONDITIONAL([BUILD_LINUXKM],[test "$ENABLED_LINUXKM" = "yes"])
AM_CONDITIONAL([BUILD_NO_LIBRARY],[test "$ENABLED_NO_LIBRARY" = "yes"]) AM_CONDITIONAL([BUILD_NO_LIBRARY],[test "$ENABLED_NO_LIBRARY" = "yes"])
AM_CONDITIONAL([BUILD_RC2],[test "x$ENABLED_RC2" = "xyes"]) AM_CONDITIONAL([BUILD_RC2],[test "x$ENABLED_RC2" = "xyes"])
if test "$ax_enable_debug" = "yes" ||
test "$ENABLED_STACKSIZE" = "yes" ||
(test "$ENABLED_LEANTLS" = "no" &&
test "$ENABLED_LEANPSK" = "no" &&
test "$ENABLED_LOWRESOURCE" = "no")
then
WC_INTROSPECTION=yes
else
WC_INTROSPECTION=no
fi
AM_CONDITIONAL([BUILD_WC_DEBUG],[test "$WC_INTROSPECTION" = "yes"])
CREATE_HEX_VERSION CREATE_HEX_VERSION
AC_SUBST([AM_CPPFLAGS]) AC_SUBST([AM_CPPFLAGS])
AC_SUBST([AM_CFLAGS]) AC_SUBST([AM_CFLAGS])
@ -5839,6 +5851,12 @@ echo >> $OPTION_FILE
echo "#define LIBWOLFSSL_GLOBAL_CFLAGS \"$CPPFLAGS $AM_CPPFLAGS $CFLAGS $AM_CFLAGS\"" >> $OPTION_FILE echo "#define LIBWOLFSSL_GLOBAL_CFLAGS \"$CPPFLAGS $AM_CPPFLAGS $CFLAGS $AM_CFLAGS\"" >> $OPTION_FILE
echo >> $OPTION_FILE echo >> $OPTION_FILE
if test "$WC_INTROSPECTION" = "yes"
then
echo "#define HAVE_WC_INTROSPECTION" >> $OPTION_FILE
echo >> $OPTION_FILE
fi
for option in $CPPFLAGS $AM_CPPFLAGS $CFLAGS $AM_CFLAGS; do for option in $CPPFLAGS $AM_CPPFLAGS $CFLAGS $AM_CFLAGS; do
defonly=`echo $option | sed 's/^-D//'` defonly=`echo $option | sed 's/^-D//'`
if test "$defonly" != "$option" if test "$defonly" != "$option"

View File

@ -24,6 +24,9 @@
#include <config.h> #include <config.h>
#endif #endif
#ifndef WOLFSSL_USER_SETTINGS
#include <wolfssl/options.h>
#endif
#include <wolfssl/wolfcrypt/settings.h> #include <wolfssl/wolfcrypt/settings.h>
#include <wolfssl/ssl.h> #include <wolfssl/ssl.h>
@ -2125,16 +2128,36 @@ THREAD_RETURN WOLFSSL_THREAD client_test(void* args)
case '@' : case '@' :
{ {
#ifdef HAVE_WC_INTROSPECTION
const char *conf_args = libwolfssl_configure_args(); const char *conf_args = libwolfssl_configure_args();
printf("%s\n", conf_args ? conf_args : "configure args not compiled in"); if (conf_args) {
XEXIT_T(EXIT_SUCCESS); puts(conf_args);
XEXIT_T(EXIT_SUCCESS);
} else {
fputs("configure args not compiled in.\n",stderr);
XEXIT_T(MY_EX_USAGE);
}
#else
fputs("compiled without BUILD_INTROSPECTION.\n",stderr);
XEXIT_T(MY_EX_USAGE);
#endif
} }
case '#' : case '#' :
{ {
#ifdef HAVE_WC_INTROSPECTION
const char *cflags = libwolfssl_global_cflags(); const char *cflags = libwolfssl_global_cflags();
printf("%s\n", cflags ? cflags : "CFLAGS not compiled in"); if (cflags) {
XEXIT_T(EXIT_SUCCESS); puts(cflags);
XEXIT_T(EXIT_SUCCESS);
} else {
fputs("CFLAGS not compiled in.\n",stderr);
XEXIT_T(MY_EX_USAGE);
}
#else
fputs("compiled without BUILD_INTROSPECTION.\n",stderr);
XEXIT_T(MY_EX_USAGE);
#endif
} }
default: default:

View File

@ -23,9 +23,14 @@
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
#include <config.h> #include <config.h>
#endif #endif
#ifndef WOLFSSL_USER_SETTINGS
#include <wolfssl/options.h>
#endif
#include <wolfssl/wolfcrypt/settings.h>
#include <wolfssl/ssl.h> /* name change portability layer */ #include <wolfssl/ssl.h> /* name change portability layer */
#include <wolfssl/wolfcrypt/settings.h>
#ifdef HAVE_ECC #ifdef HAVE_ECC
#include <wolfssl/wolfcrypt/ecc.h> /* wc_ecc_fp_free */ #include <wolfssl/wolfcrypt/ecc.h> /* wc_ecc_fp_free */
#endif #endif
@ -1555,16 +1560,36 @@ THREAD_RETURN WOLFSSL_THREAD server_test(void* args)
case '@' : case '@' :
{ {
#ifdef HAVE_WC_INTROSPECTION
const char *conf_args = libwolfssl_configure_args(); const char *conf_args = libwolfssl_configure_args();
printf("%s\n", conf_args ? conf_args : "configure args not compiled in"); if (conf_args) {
XEXIT_T(EXIT_SUCCESS); puts(conf_args);
XEXIT_T(EXIT_SUCCESS);
} else {
fputs("configure args not compiled in.\n",stderr);
XEXIT_T(MY_EX_USAGE);
}
#else
fputs("compiled without BUILD_INTROSPECTION.\n",stderr);
XEXIT_T(MY_EX_USAGE);
#endif
} }
case '#' : case '#' :
{ {
#ifdef HAVE_WC_INTROSPECTION
const char *cflags = libwolfssl_global_cflags(); const char *cflags = libwolfssl_global_cflags();
printf("%s\n", cflags ? cflags : "CFLAGS not compiled in"); if (cflags) {
XEXIT_T(EXIT_SUCCESS); puts(cflags);
XEXIT_T(EXIT_SUCCESS);
} else {
fputs("CFLAGS not compiled in.\n",stderr);
XEXIT_T(MY_EX_USAGE);
}
#else
fputs("compiled without BUILD_INTROSPECTION.\n",stderr);
XEXIT_T(MY_EX_USAGE);
#endif
} }
default: default:

View File

@ -76,12 +76,12 @@ $(obj)/wolfcrypt/src/aes_asm.o: OBJECT_FILES_NON_STANDARD := y
$(obj)/wolfcrypt/src/aes_gcm_asm.o: OBJECT_FILES_NON_STANDARD := y $(obj)/wolfcrypt/src/aes_gcm_asm.o: OBJECT_FILES_NON_STANDARD := y
# auto-generate the exported symbol list, leveraging the WOLFSSL_API visibility tags. # auto-generate the exported symbol list, leveraging the WOLFSSL_API visibility tags.
# exclude symbols that don't match wc_* or wolf*. # exclude symbols that don't match wc_*, wolf*, or libwolf*.
$(src)/linuxkm/module_exports.c: $(src)/linuxkm/module_exports.c.template $(WOLFSSL_OBJ_TARGETS) $(src)/linuxkm/module_exports.c: $(src)/linuxkm/module_exports.c.template $(WOLFSSL_OBJ_TARGETS)
@cp $< $@ @cp $< $@
@readelf --symbols --wide $(WOLFSSL_OBJ_TARGETS) | \ @readelf --symbols --wide $(WOLFSSL_OBJ_TARGETS) | \
awk '/^ *[0-9]+: / { \ awk '/^ *[0-9]+: / { \
if ($$8 !~ /^(wc_|wolf)/){next;} \ if ($$8 !~ /^(wc_|wolf|libwolf)/){next;} \
if (($$4 == "FUNC") && ($$5 == "GLOBAL") && ($$6 == "DEFAULT")) { \ if (($$4 == "FUNC") && ($$5 == "GLOBAL") && ($$6 == "DEFAULT")) { \
print "EXPORT_SYMBOL_NS(" $$8 ", WOLFSSL);"; \ print "EXPORT_SYMBOL_NS(" $$8 ", WOLFSSL);"; \
} \ } \

View File

@ -315,8 +315,12 @@ endif !BUILD_FIPS_RAND
src_libwolfssl_la_SOURCES += \ src_libwolfssl_la_SOURCES += \
wolfcrypt/src/logging.c \ wolfcrypt/src/logging.c \
wolfcrypt/src/wc_port.c \ wolfcrypt/src/wc_port.c \
wolfcrypt/src/error.c \ wolfcrypt/src/error.c
wolfcrypt/src/debug.c
if BUILD_WC_DEBUG
src_libwolfssl_la_SOURCES += \
wolfcrypt/src/wc_debug.c
endif
if !BUILD_FIPS_RAND if !BUILD_FIPS_RAND
src_libwolfssl_la_SOURCES += \ src_libwolfssl_la_SOURCES += \

View File

@ -1,4 +1,4 @@
/* debug.c /* wc_debug.c
* *
* Copyright (C) 2006-2020 wolfSSL Inc. * Copyright (C) 2006-2020 wolfSSL Inc.
* *
@ -24,10 +24,12 @@
#include <config.h> #include <config.h>
#endif #endif
#include <wolfssl/options.h>
#include <wolfssl/wolfcrypt/settings.h> #include <wolfssl/wolfcrypt/settings.h>
#include <wolfssl/wolfcrypt/wc_port.h> #include <wolfssl/wolfcrypt/wc_port.h>
#include <wolfssl/wolfcrypt/types.h> #include <wolfssl/wolfcrypt/types.h>
#include <wolfssl/options.h>
#ifdef HAVE_WC_INTROSPECTION
WOLFSSL_API const char *libwolfssl_configure_args(void) { WOLFSSL_API const char *libwolfssl_configure_args(void) {
#ifdef LIBWOLFSSL_CONFIGURE_ARGS #ifdef LIBWOLFSSL_CONFIGURE_ARGS
@ -47,10 +49,12 @@ WOLFSSL_API const char *libwolfssl_global_cflags(void) {
#endif #endif
} }
#endif /* HAVE_WC_INTROSPECTION */
#ifdef HAVE_STACK_SIZE_VERBOSE #ifdef HAVE_STACK_SIZE_VERBOSE
WOLFSSL_API THREAD_LS_T unsigned char *StackSizeCheck_myStack = NULL; WOLFSSL_API THREAD_LS_T unsigned char *StackSizeCheck_myStack = NULL;
WOLFSSL_API THREAD_LS_T size_t StackSizeCheck_stackSize = 0; WOLFSSL_API THREAD_LS_T size_t StackSizeCheck_stackSize = 0;
WOLFSSL_API THREAD_LS_T size_t StackSizeCheck_stackSizeHWM = 0; WOLFSSL_API THREAD_LS_T size_t StackSizeCheck_stackSizeHWM = 0;
WOLFSSL_API THREAD_LS_T size_t *StackSizeCheck_stackSizeHWM_ptr = 0; WOLFSSL_API THREAD_LS_T size_t *StackSizeCheck_stackSizeHWM_ptr = 0;
WOLFSSL_API THREAD_LS_T void *StackSizeCheck_stackOffsetPointer = 0; WOLFSSL_API THREAD_LS_T void *StackSizeCheck_stackOffsetPointer = 0;
#endif #endif /* HAVE_STACK_SIZE_VERBOSE */

View File

@ -221,9 +221,6 @@
#include <wolfssl/wolfcrypt/visibility.h> #include <wolfssl/wolfcrypt/visibility.h>
WOLFSSL_API const char *libwolfssl_configure_args(void);
WOLFSSL_API const char *libwolfssl_global_cflags(void);
#ifdef WOLFSSL_USER_SETTINGS #ifdef WOLFSSL_USER_SETTINGS
#include "user_settings.h" #include "user_settings.h"
#elif defined(USE_HAL_DRIVER) && !defined(HAVE_CONFIG_H) #elif defined(USE_HAL_DRIVER) && !defined(HAVE_CONFIG_H)
@ -231,6 +228,10 @@ WOLFSSL_API const char *libwolfssl_global_cflags(void);
#include "wolfSSL.wolfSSL_conf.h" #include "wolfSSL.wolfSSL_conf.h"
#endif #endif
#ifdef HAVE_WC_INTROSPECTION
WOLFSSL_API const char *libwolfssl_configure_args(void);
WOLFSSL_API const char *libwolfssl_global_cflags(void);
#endif
/* make sure old RNG name is used with CTaoCrypt FIPS */ /* make sure old RNG name is used with CTaoCrypt FIPS */
#ifdef HAVE_FIPS #ifdef HAVE_FIPS