summaryrefslogtreecommitdiffstats
path: root/src/H5detect.c
diff options
context:
space:
mode:
authorDana Robinson <43805+derobins@users.noreply.github.com>2021-06-30 18:02:42 (GMT)
committerGitHub <noreply@github.com>2021-06-30 18:02:42 (GMT)
commitb9dbabc1523c13627ada0bcb04d780e7ad93b658 (patch)
tree9e7ce4dab9a0a559fb61666d821fbe7ff52fc601 /src/H5detect.c
parent18c08c5adc3fbc0e5b36fff9e97ead10da655e9a (diff)
downloadhdf5-b9dbabc1523c13627ada0bcb04d780e7ad93b658.zip
hdf5-b9dbabc1523c13627ada0bcb04d780e7ad93b658.tar.gz
hdf5-b9dbabc1523c13627ada0bcb04d780e7ad93b658.tar.bz2
VFD SWMR: Sync with develop (#811)
* Normalization with develop * Removes checks and work-arounds for strtoll and strtoull (#769) * Removes checks for (v)snprintf, which are C99 (#772) * Update missing release note info. (#776) * Replaces the H5_OVERRIDE macro with override (#773) The macro is no longer necessary now that we require C++11. * Cleans up some POSIX header bits in H5private.h (#783) * Removes outdated checks for ways inline might be defined (#781) These are obsolete now that we require C99. * Removes checks for system(), which is C89/90 (#782) * Removes C++ dependency on H5private.h (#774) * Removes C++ dependency on H5private.h Most C API calls have been removed, aside from a few uses of free, where we just dropped the 'HD'. A couple of H5_ATTR_UNUSED macros were also replaced with (void) statements. * Committing clang-format changes Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> * Further simplifies Autotools type size checks (#789) Also fixes an issue where clock_gettime and difftime are not detected due to earlier simplifications of this code. * Release Note (#784) * Normalization of CMake H5pubconf.h with Autotools (#791) Mostly just moving things around and changing the comments to keep the delta small. The only symbol change is that for curl/curl.h which I changed to H5_HAVE_CURL_CURL_H to match the Autotools. This symbol is not used in the library and is just an artifact of the checks. * Fix tools test (#794) * Removes ancient Autotools cruft (#790) * Reorganization of C and POSIX headers in H5public.h & H5private.h (#793) * Reorganization of C and POSIX headers in H5public.h & H5private.h Consolidated and removed duplicates * It turns out Windows has sys/types.h Co-authored-by: Larry Knox <lrknox@hdfgroup.org> * Removes checks for signal and set/longjmp, which are C89 (#798) Also removes checks for setjmp.h and stddef.h * Assume frexpl/f and fabsl/f, which are C99 (#799) * Assume the library has C99 types in C++ type code (#806) * Assume the library has C99 types in C++ type code * Committing clang-format changes Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> * Removes obsolete equivalents of C99's __func__ (#800) * Cleans up POSIX/C bits in H5private.h (#804) * Cleans up POSIX/C bits in H5private.h * Assume difftime exists (C89) * Reorg AC_CHECK_HEADERS so headers are in alphabetical order * Split off networking-related AC_CHECK_HEADERS * Remove unused UNAME_CYGWIN from configure.ac * Remove checks for unused sys/timeb.h * Tidying pass over H5private.h HD prefix macros * Tidy H5win32defs.h * Add HD prefix to various scanf calls * Committing clang-format changes * Fixes to the alarm(2) code used in the tests to make Windows happy Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> * Brings the tools getopt(3) replacement into the main library (#803) * Moves get_option from the tools library to the C library * Adds H5 prefix to get_option call and variables * Renames the H5_get_option long options struct and enum * Removes type guesses when C99 types are missing (#807) * Assume C99 types exist in H5detect.c (#808) * Fixes parallel issues from recent C99 changes * Adds MPE FUNC --> __func__ changes missed in earlier PRs * Fix typo * Fixes parallel issues from recent C99 changes (#809) * Fixes parallel issues from recent C99 changes * Adds MPE FUNC --> __func__ changes missed in earlier PRs * Even more missed FUNC --> __func__ macros * Removes remaining H5_TIME_WITH_SYS_TIME cruft (#810) Mostly from CMake Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Larry Knox <lrknox@hdfgroup.org>
Diffstat (limited to 'src/H5detect.c')
-rw-r--r--src/H5detect.c138
1 files changed, 3 insertions, 135 deletions
diff --git a/src/H5detect.c b/src/H5detect.c
index d148301..2e893cf 100644
--- a/src/H5detect.c
+++ b/src/H5detect.c
@@ -80,7 +80,7 @@ H5_GCC_DIAG_OFF("cast-align")
#define H5SETJMP(buf) HDsigsetjmp(buf, 1)
#define H5LONGJMP(buf, val) HDsiglongjmp(buf, val)
#define H5HAVE_SIGJMP /* sigsetjmp/siglongjmp are supported. */
-#elif defined(H5_HAVE_LONGJMP)
+#else
#define H5JMP_BUF jmp_buf
#define H5SETJMP(buf) HDsetjmp(buf)
#define H5LONGJMP(buf, val) HDlongjmp(buf, val)
@@ -149,12 +149,8 @@ static int sigbus_handler_called_g = 0; /* how many times called */
static int sigsegv_handler_called_g = 0; /* how many times called */
static int sigill_handler_called_g = 0; /* how many times called */
static int signal_handler_tested_g = 0; /* how many times tested */
-#if defined(H5SETJMP) && defined(H5_HAVE_SIGNAL)
-static int verify_signal_handlers(int signum, void (*handler)(int));
-#endif
-#ifdef H5JMP_BUF
-static H5JMP_BUF jbuf_g;
-#endif
+static int verify_signal_handlers(int signum, void (*handler)(int));
+static H5JMP_BUF jbuf_g;
/*-------------------------------------------------------------------------
* Function: precision
@@ -388,7 +384,6 @@ precision(detected_t *d)
COMP_ALIGN = (unsigned int)((char *)(&(s.x)) - (char *)(&s)); \
}
-#if defined(H5SETJMP) && defined(H5_HAVE_SIGNAL)
#define ALIGNMENT(TYPE, INFO) \
{ \
char *volatile _buf = NULL; \
@@ -435,15 +430,6 @@ precision(detected_t *d)
HDsignal(SIGSEGV, _handler2); /*restore original handler*/ \
HDsignal(SIGILL, _handler3); /*restore original handler*/ \
}
-#else
-#define ALIGNMENT(TYPE, INFO) \
- { \
- align_status_g |= STA_NoALIGNMENT; \
- (INFO.align) = 0; \
- }
-#endif
-
-#if defined(H5LONGJMP) && defined(H5_HAVE_SIGNAL)
/*-------------------------------------------------------------------------
* Function: sigsegv_handler
@@ -473,9 +459,6 @@ sigsegv_handler(int H5_ATTR_UNUSED signo)
HDsignal(SIGSEGV, sigsegv_handler);
H5LONGJMP(jbuf_g, SIGSEGV);
}
-#endif
-
-#if defined(H5LONGJMP) && defined(H5_HAVE_SIGNAL)
/*-------------------------------------------------------------------------
* Function: sigbus_handler
@@ -505,9 +488,6 @@ sigbus_handler(int H5_ATTR_UNUSED signo)
HDsignal(SIGBUS, sigbus_handler);
H5LONGJMP(jbuf_g, SIGBUS);
}
-#endif
-
-#if defined(H5LONGJMP) && defined(H5_HAVE_SIGNAL)
/*-------------------------------------------------------------------------
* Function: sigill_handler
@@ -537,7 +517,6 @@ sigill_handler(int H5_ATTR_UNUSED signo)
HDsignal(SIGILL, sigill_handler);
H5LONGJMP(jbuf_g, SIGILL);
}
-#endif
/*-------------------------------------------------------------------------
* Function: print_results
@@ -777,21 +756,6 @@ done:\n\
fprintf(rawoutstream, "/* Signal handlers verify test is not available */\n");
/* The following is available in H5pubconf.h. Printing them here for */
/* convenience. */
-#ifdef H5_HAVE_SIGNAL
- fprintf(rawoutstream, "/* Signal() support: yes */\n");
-#else
- fprintf(rawoutstream, "/* Signal() support: no */\n");
-#endif
-#ifdef H5_HAVE_SETJMP
- fprintf(rawoutstream, "/* setjmp() support: yes */\n");
-#else
- fprintf(rawoutstream, "/* setjmp() support: no */\n");
-#endif
-#ifdef H5_HAVE_LONGJMP
- fprintf(rawoutstream, "/* longjmp() support: yes */\n");
-#else
- fprintf(rawoutstream, "/* longjmp() support: no */\n");
-#endif
#ifdef H5_HAVE_SIGSETJMP
fprintf(rawoutstream, "/* sigsetjmp() support: yes */\n");
#else
@@ -1314,60 +1278,18 @@ detect_C89_floats(void)
static void HDF_NO_UBSAN
detect_C99_integers8(void)
{
-#if H5_SIZEOF_INT8_T > 0
-#if H5_SIZEOF_INT8_T == 1
DETECT_BYTE(int8_t, INT8, d_g[nd_g]);
nd_g++;
-#else
- DETECT_I(int8_t, INT8, d_g[nd_g]);
- nd_g++;
-#endif
-#endif
-#if H5_SIZEOF_UINT8_T > 0
-#if H5_SIZEOF_UINT8_T == 1
DETECT_BYTE(uint8_t, UINT8, d_g[nd_g]);
nd_g++;
-#else
- DETECT_I(uint8_t, UINT8, d_g[nd_g]);
- nd_g++;
-#endif
-#endif
-#if H5_SIZEOF_INT_LEAST8_T > 0
-#if H5_SIZEOF_INT_LEAST8_T == 1
DETECT_BYTE(int_least8_t, INT_LEAST8, d_g[nd_g]);
nd_g++;
-#else
- DETECT_I(int_least8_t, INT_LEAST8, d_g[nd_g]);
- nd_g++;
-#endif
-#endif
-#if H5_SIZEOF_UINT_LEAST8_T > 0
-#if H5_SIZEOF_UINT_LEAST8_T == 1
DETECT_BYTE(uint_least8_t, UINT_LEAST8, d_g[nd_g]);
nd_g++;
-#else
- DETECT_I(uint_least8_t, UINT_LEAST8, d_g[nd_g]);
- nd_g++;
-#endif
-#endif
-#if H5_SIZEOF_INT_FAST8_T > 0
-#if H5_SIZEOF_INT_FAST8_T == 1
DETECT_BYTE(int_fast8_t, INT_FAST8, d_g[nd_g]);
nd_g++;
-#else
- DETECT_I(int_fast8_t, INT_FAST8, d_g[nd_g]);
- nd_g++;
-#endif
-#endif
-#if H5_SIZEOF_UINT_FAST8_T > 0
-#if H5_SIZEOF_UINT_FAST8_T == 1
DETECT_BYTE(uint_fast8_t, UINT_FAST8, d_g[nd_g]);
nd_g++;
-#else
- DETECT_I(uint_fast8_t, UINT_FAST8, d_g[nd_g]);
- nd_g++;
-#endif
-#endif
}
/*-------------------------------------------------------------------------
@@ -1381,30 +1303,18 @@ detect_C99_integers8(void)
static void HDF_NO_UBSAN
detect_C99_integers16(void)
{
-#if H5_SIZEOF_INT16_T > 0
DETECT_I(int16_t, INT16, d_g[nd_g]);
nd_g++;
-#endif
-#if H5_SIZEOF_UINT16_T > 0
DETECT_I(uint16_t, UINT16, d_g[nd_g]);
nd_g++;
-#endif
-#if H5_SIZEOF_INT_LEAST16_T > 0
DETECT_I(int_least16_t, INT_LEAST16, d_g[nd_g]);
nd_g++;
-#endif
-#if H5_SIZEOF_UINT_LEAST16_T > 0
DETECT_I(uint_least16_t, UINT_LEAST16, d_g[nd_g]);
nd_g++;
-#endif
-#if H5_SIZEOF_INT_FAST16_T > 0
DETECT_I(int_fast16_t, INT_FAST16, d_g[nd_g]);
nd_g++;
-#endif
-#if H5_SIZEOF_UINT_FAST16_T > 0
DETECT_I(uint_fast16_t, UINT_FAST16, d_g[nd_g]);
nd_g++;
-#endif
}
/*-------------------------------------------------------------------------
@@ -1418,30 +1328,18 @@ detect_C99_integers16(void)
static void HDF_NO_UBSAN
detect_C99_integers32(void)
{
-#if H5_SIZEOF_INT32_T > 0
DETECT_I(int32_t, INT32, d_g[nd_g]);
nd_g++;
-#endif
-#if H5_SIZEOF_UINT32_T > 0
DETECT_I(uint32_t, UINT32, d_g[nd_g]);
nd_g++;
-#endif
-#if H5_SIZEOF_INT_LEAST32_T > 0
DETECT_I(int_least32_t, INT_LEAST32, d_g[nd_g]);
nd_g++;
-#endif
-#if H5_SIZEOF_UINT_LEAST32_T > 0
DETECT_I(uint_least32_t, UINT_LEAST32, d_g[nd_g]);
nd_g++;
-#endif
-#if H5_SIZEOF_INT_FAST32_T > 0
DETECT_I(int_fast32_t, INT_FAST32, d_g[nd_g]);
nd_g++;
-#endif
-#if H5_SIZEOF_UINT_FAST32_T > 0
DETECT_I(uint_fast32_t, UINT_FAST32, d_g[nd_g]);
nd_g++;
-#endif
}
/*-------------------------------------------------------------------------
@@ -1456,47 +1354,23 @@ detect_C99_integers32(void)
static void HDF_NO_UBSAN
detect_C99_integers64(void)
{
-#if H5_SIZEOF_INT64_T > 0
DETECT_I(int64_t, INT64, d_g[nd_g]);
nd_g++;
-#endif
-#if H5_SIZEOF_UINT64_T > 0
DETECT_I(uint64_t, UINT64, d_g[nd_g]);
nd_g++;
-#endif
-#if H5_SIZEOF_INT_LEAST64_T > 0
DETECT_I(int_least64_t, INT_LEAST64, d_g[nd_g]);
nd_g++;
-#endif
-#if H5_SIZEOF_UINT_LEAST64_T > 0
DETECT_I(uint_least64_t, UINT_LEAST64, d_g[nd_g]);
nd_g++;
-#endif
-#if H5_SIZEOF_INT_FAST64_T > 0
DETECT_I(int_fast64_t, INT_FAST64, d_g[nd_g]);
nd_g++;
-#endif
-#if H5_SIZEOF_UINT_FAST64_T > 0
DETECT_I(uint_fast64_t, UINT_FAST64, d_g[nd_g]);
nd_g++;
-#endif
-#if H5_SIZEOF_LONG_LONG > 0
DETECT_I(long long, LLONG, d_g[nd_g]);
nd_g++;
DETECT_I(unsigned long long, ULLONG, d_g[nd_g]);
nd_g++;
-#else
- /*
- * This architecture doesn't support an integer type larger than `long'
- * so we'll just make H5T_NATIVE_LLONG the same as H5T_NATIVE_LONG since
- * `long long' is probably equivalent to `long' here anyway.
- */
- DETECT_I(long, LLONG, d_g[nd_g]);
- nd_g++;
- DETECT_I(unsigned long, ULLONG, d_g[nd_g]);
- nd_g++;
-#endif
}
/*-------------------------------------------------------------------------
@@ -1568,7 +1442,6 @@ detect_alignments(void)
na_g++;
}
-#if defined(H5SETJMP) && defined(H5_HAVE_SIGNAL)
/* Verify the signal handler for signal signum works correctly multiple times.
* One possible cause of failure is that the signal handling is blocked or
* changed to SIG_DFL after H5LONGJMP.
@@ -1625,7 +1498,6 @@ verify_signal_handlers(int signum, void (*handler)(int))
return 0;
}
}
-#endif
/*-------------------------------------------------------------------------
* Function: main
@@ -1655,7 +1527,6 @@ main(int argc, char *argv[])
if (!rawoutstream)
rawoutstream = stdout;
-#if defined(H5SETJMP) && defined(H5_HAVE_SIGNAL)
/* verify the SIGBUS and SIGSEGV handlers work properly */
if (verify_signal_handlers(SIGBUS, sigbus_handler) != 0) {
fprintf(stderr, "Signal handler %s for signal %d failed\n", "sigbus_handler", SIGBUS);
@@ -1666,9 +1537,6 @@ main(int argc, char *argv[])
if (verify_signal_handlers(SIGILL, sigill_handler) != 0) {
fprintf(stderr, "Signal handler %s for signal %d failed\n", "sigill_handler", SIGILL);
}
-#else
- align_status_g |= STA_NoHandlerVerify;
-#endif
print_header();