Changeset: 8f6bbb9c4156 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/8f6bbb9c4156 Modified Files: CMakeLists.txt cmake/monetdb-functions.cmake gdk/gdk_utils.c monetdb5/modules/atoms/uuid.c monetdb5/optimizer/opt_bincopyfrom.c monetdb5/optimizer/opt_json.c monetdb5/optimizer/opt_mergetable.c sql/common/sql_types.c sql/test/emptydb/Tests/check.stable.out sql/test/emptydb/Tests/check.stable.out.32bit sql/test/emptydb/Tests/check.stable.out.int128 sql/test/prepare/Tests/sqlancer_prepare.stable.out sql/test/prepare/Tests/sqlancer_prepare.stable.out.int128 Branch: default Log Message:
Merged with Jul2021 diffs (truncated from 1423 to 300 lines): diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -53,8 +53,7 @@ test_big_endian(IS_BIG_ENDIAN) include(monetdb-functions) include(monetdb-findpackages) include(monetdb-toolchain) -monetdb_default_toolchain() -#monetdb_default_compiler_options() +monetdb_default_compiler_options() include(monetdb-defines) monetdb_hg_revision() diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c --- a/clients/mapiclient/dump.c +++ b/clients/mapiclient/dump.c @@ -382,15 +382,16 @@ dump_foreign_keys(Mapi mid, const char * if (tname != NULL) { char *s = sescape(schema); char *t = sescape(tname); + if (s == NULL || t == NULL) { + free(s); + free(t); + goto bailout; + } maxquerylen = 1024 + strlen(t) + strlen(s); query = malloc(maxquerylen); - if (s == NULL || t == NULL || query == NULL) { - if (s) - free(s); - if (t) - free(t); - if (query) - free(query); + if (query == NULL) { + free(s); + free(t); goto bailout; } snprintf(query, maxquerylen, diff --git a/clients/odbc/driver/ODBCUtil.c b/clients/odbc/driver/ODBCUtil.c --- a/clients/odbc/driver/ODBCUtil.c +++ b/clients/odbc/driver/ODBCUtil.c @@ -1255,6 +1255,7 @@ ODBCTranslateSQL(ODBCDbc *dbc, const SQL strncpy(q, nquery, pr); for (r = func->repl; *r; r++) { if (*r == '\1' || *r == '\2' || *r == '\3' || *r == '\4') { + assert(*r <= func->nargs); if (args[*r - 1].argstart[0] == '\'') q[pr++] = 'r'; strncpy(q + pr, args[*r - 1].argstart, args[*r - 1].arglen); diff --git a/clients/odbc/driver/SQLTables.c b/clients/odbc/driver/SQLTables.c --- a/clients/odbc/driver/SQLTables.c +++ b/clients/odbc/driver/SQLTables.c @@ -82,6 +82,8 @@ MNDBTables(ODBCStmt *stmt, "cast(null as varchar(1)) as remarks " "from sys.env() e " "where e.name = 'gdk_dbname'"); + if (query == NULL) + goto nomem; } else if (NameLength1 == 0 && NameLength3 == 0 && SchemaName && @@ -96,6 +98,8 @@ MNDBTables(ODBCStmt *stmt, * schema remarks */ "cast(null as varchar(1)) as remarks " "from sys.schemas order by table_schem"); + if (query == NULL) + goto nomem; } else if (NameLength1 == 0 && NameLength2 == 0 && NameLength3 == 0 && @@ -108,6 +112,8 @@ MNDBTables(ODBCStmt *stmt, "table_type_name as table_type, " "cast(null as varchar(1)) as remarks " "from sys.table_types order by table_type"); + if (query == NULL) + goto nomem; } else { /* no special case argument values */ size_t querylen; @@ -241,8 +247,6 @@ MNDBTables(ODBCStmt *stmt, free(sch); if (tab) free(tab); - if (query) - free(query); /* Memory allocation error */ addStmtError(stmt, "HY001", NULL, 0); return SQL_ERROR; diff --git a/cmake/monetdb-functions.cmake b/cmake/monetdb-functions.cmake --- a/cmake/monetdb-functions.cmake +++ b/cmake/monetdb-functions.cmake @@ -49,33 +49,10 @@ function(monetdb_hg_revision) endif() endfunction() -function(MT_addCompilerFlag REGEX_EXPRESSION FLAG_TO_ADD OLD_FLAGS BUILD NEW_FLAGS) - if(NOT "${OLD_FLAGS}" MATCHES "${REGEX_EXPRESSION}") - set(${NEW_FLAGS} "${OLD_FLAGS} ${FLAG_TO_ADD}" PARENT_SCOPE) - message(STATUS "Added ${FLAG_TO_ADD} flag for ${BUILD} build(s)") - endif() -endfunction() - -function(MT_checkCompilerFlag Flag) - # WARNING this doesn't work with LINK_OPTIONS yet! - if(NOT "${CMAKE_C_FLAGS}" MATCHES "${Flag}") - # cmake will get confused if we don't remove - / = , - string(REGEX REPLACE "[-/=,]" "" FLAG_TEST "${Flag}") - cmake_push_check_state() - set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${Flag}") - check_c_source_compiles("int main(int argc,char** argv){(void)argc;(void)argv;return 0;}" COMPILER_${FLAG_TEST}) - cmake_pop_check_state() - if(COMPILER_${FLAG_TEST}) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${Flag}" PARENT_SCOPE) - message(STATUS "Added ${Flag} flag for all build(s)") - endif() - endif() -endfunction() - function(add_option_if_available Flag) string(REGEX REPLACE "[-/=,]" "" FLAG_TEST "${Flag}") check_c_compiler_flag(${Flag} ${FLAG_TEST}_FOUND) - set(ISFOUND "${${FLAG_TEST}_FOUND}}") + set(ISFOUND "${${FLAG_TEST}_FOUND}") if(ISFOUND) add_compile_options("${Flag}") endif() diff --git a/cmake/monetdb-toolchain.cmake b/cmake/monetdb-toolchain.cmake --- a/cmake/monetdb-toolchain.cmake +++ b/cmake/monetdb-toolchain.cmake @@ -6,108 +6,6 @@ # Copyright 1997 - July 2008 CWI, August 2008 - 2021 MonetDB B.V. #]] -function(monetdb_default_toolchain) - if (${FORCE_COLORED_OUTPUT}) - if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") - MT_addCompilerFlag("-fdiagnostics-color=always" "-fdiagnostics-color=always" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - elseif ("${CMAKE_C_COMPILER_ID}" MATCHES "^(Clang|AppleClang)$") - MT_addCompilerFlag("-fcolor-diagnostics" "-fcolor-diagnostics" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - endif () - endif () - - if(SANITIZER) - if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU") - MT_addCompilerFlag("-fsanitize=address" "-fsanitize=address" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - MT_addCompilerFlag("-fno-omit-frame-pointer" "-fno-omit-frame-pointer" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - add_definitions(-DNO_ATOMIC_INSTRUCTIONS) - else() - message(FATAL_ERROR "Sanitizer only supported with GCC") - endif() - endif() - - if(STRICT) - if(${CMAKE_C_COMPILER_ID} MATCHES "^(GNU|Clang|AppleClang)$") - MT_addCompilerFlag("-Werror" "-Werror" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - MT_addCompilerFlag("-Wall" "-Wall" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - MT_addCompilerFlag("-Wextra" "-Wextra" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - MT_addCompilerFlag("-W" "-W" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - MT_checkCompilerFlag("-Werror-implicit-function-declaration") - - MT_checkCompilerFlag("-Wpointer-arith") - MT_checkCompilerFlag("-Wundef") - MT_checkCompilerFlag("-Wformat=2") - MT_checkCompilerFlag("-Wformat-overflow=1") - MT_checkCompilerFlag("-Wno-format-truncation") - MT_checkCompilerFlag("-Wno-format-nonliteral") - #MT_checkCompilerFlag("-Wformat-signedness") -- numpy messes this up - MT_checkCompilerFlag("-Wno-cast-function-type") - MT_checkCompilerFlag("-Winit-self") - MT_checkCompilerFlag("-Winvalid-pch") - MT_checkCompilerFlag("-Wmissing-declarations") - MT_checkCompilerFlag("-Wmissing-format-attribute") - MT_checkCompilerFlag("-Wmissing-prototypes") - # need this for clang 9.1.0 on Darwin: - MT_checkCompilerFlag("-Wno-missing-field-initializers") - MT_checkCompilerFlag("-Wold-style-definition") - MT_checkCompilerFlag("-Wpacked") - MT_checkCompilerFlag("-Wunknown-pragmas") - MT_checkCompilerFlag("-Wvariadic-macros") - MT_checkCompilerFlag("-Wstack-protector") - MT_checkCompilerFlag("-fstack-protector-all") - MT_checkCompilerFlag("-Wpacked-bitfield-compat") - MT_checkCompilerFlag("-Wsync-nand") - MT_checkCompilerFlag("-Wjump-misses-init") - MT_checkCompilerFlag("-Wmissing-include-dirs") - MT_checkCompilerFlag("-Wlogical-op") - MT_checkCompilerFlag("-Wduplicated-cond") - MT_checkCompilerFlag("-Wduplicated-branches") - MT_checkCompilerFlag("-Wrestrict") - MT_checkCompilerFlag("-Wnested-externs") - MT_checkCompilerFlag("-Wmissing-noreturn") - MT_checkCompilerFlag("-Wuninitialized") - - # since we use values of type "int8_t" as subscript, - # and int8_t may be defined as plain "char", we cannot - # allow this warning (part of -Wall) - MT_checkCompilerFlag("-Wno-char-subscripts") - - MT_checkCompilerFlag("-Wunreachable-code") - - elseif(${CMAKE_C_COMPILER_ID} STREQUAL "Intel") - if(WIN32) - set(COMPILER_OPTION "/") - MT_addCompilerFlag("${COMPILER_OPTION}W3" "${COMPILER_OPTION}W3" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - MT_addCompilerFlag("${COMPILER_OPTION}Qdiag-disable:11074" "${COMPILER_OPTION}Qdiag-disable:11074" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - MT_addCompilerFlag("${COMPILER_OPTION}Qdiag-disable:11075" "${COMPILER_OPTION}Qdiag-disable:11075" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - else() - set(COMPILER_OPTION "-") - MT_addCompilerFlag("${COMPILER_OPTION}Wall" "${COMPILER_OPTION}Wall" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - endif() - MT_addCompilerFlag("${COMPILER_OPTION}Wcheck" "${COMPILER_OPTION}Wcheck" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - MT_addCompilerFlag("${COMPILER_OPTION}Werror-all" "${COMPILER_OPTION}Werror-all" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - MT_addCompilerFlag("${COMPILER_OPTION}${INTEL_OPTION_EXTRA}wd2259" "${COMPILER_OPTION}${INTEL_OPTION_EXTRA}wd2259" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - elseif(MSVC) - MT_addCompilerFlag("/WX" "/WX" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - endif() - endif() - - if(NOT MSVC) - cmake_push_check_state() - set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS};-Wno-unreachable-code") - # Warning don't add '-' or '/' to the output variable! - check_c_source_compiles("int main(int argc,char** argv){(void)argc;(void)argv;return 0;}" - COMPILER_Wnounreachablecode) - cmake_pop_check_state() - endif() - - if(NOT ASSERT) - MT_checkCompilerFlag("-DNDEBUG=1") - endif() - - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" PARENT_SCOPE) - -endfunction() - function(monetdb_default_compiler_options) if (${FORCE_COLORED_OUTPUT}) if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") @@ -121,7 +19,7 @@ function(monetdb_default_compiler_option if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU") add_compile_options("-fsanitize=address") add_compile_options("-fno-omit-frame-pointer") - add_compile_definitions(NO_ATOMIC_INSTRUCTIONS) + add_compile_definitions(SANITIZER) else() message(FATAL_ERROR "Sanitizer only supported with GCC") endif() diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -1414,6 +1414,7 @@ bm_get_counts(logger *lg) if (BUNfnd(lg->dcatalog, &pos) == BUN_NONE) { BAT *b = BBPquickdesc(bids[p]); + assert(b); cnt = BATcount(b); } else { deleted++; diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c --- a/gdk/gdk_utils.c +++ b/gdk/gdk_utils.c @@ -1850,7 +1850,7 @@ GDKvm_cursize(void) /* we allocate extra space and return a pointer offset by this amount */ #define MALLOC_EXTRA_SPACE (2 * SIZEOF_VOID_P) -#ifdef NDEBUG +#if defined(NDEBUG) || defined(SANITIZER) #define DEBUG_SPACE 0 #else #define DEBUG_SPACE 16 @@ -1897,7 +1897,7 @@ GDKmalloc_internal(size_t size) /* just before the pointer that we return, write how much we * asked of malloc */ ((size_t *) s)[-1] = nsize + MALLOC_EXTRA_SPACE + DEBUG_SPACE; -#ifndef NDEBUG +#if !defined(NDEBUG) && !defined(SANITIZER) /* just before that, write how much was asked of us */ ((size_t *) s)[-2] = size; /* write pattern to help find out-of-bounds writes */ @@ -1914,7 +1914,7 @@ GDKmalloc(size_t size) if ((s = GDKmalloc_internal(size)) == NULL) return NULL; -#ifndef NDEBUG +#if !defined(NDEBUG) && !defined(SANITIZER) /* write a pattern to help make sure all data is properly * initialized by the caller */ DEADBEEFCHK memset(s, '\xBD', size); @@ -1978,7 +1978,7 @@ GDKfree(void *s) asize = ((size_t *) s)[-1]; /* how much allocated last */ -#ifndef NDEBUG +#if !defined(NDEBUG) && !defined(SANITIZER) assert((asize & 2) == 0); /* check against duplicate free */ /* check for out-of-bounds writes */ { @@ -1989,7 +1989,7 @@ GDKfree(void *s) _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list