/* LONG_DOUBLESIZE:
* This symbol contains the size of a long double, so that the
* C preprocessor can make decisions based on it. It is only
- * defined if the system supports long doubles. Note that this
+ * defined if the system supports long doubles. Note that this
* is sizeof(long double), which may include unused bytes.
*/
/* HAS_LDEXPL:
* LONG_DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN
* LONG_DOUBLE_IS_X86_80_BIT_LITTLE_ENDIAN
* LONG_DOUBLE_IS_X86_80_BIT_BIG_ENDIAN
- * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN
- * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN
+ * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE
+ * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE
+ * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE
+ * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE
* LONG_DOUBLE_IS_UNKNOWN_FORMAT
* It is only defined if the system supports long doubles.
*/
#define LONG_DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN 2
#define LONG_DOUBLE_IS_X86_80_BIT_LITTLE_ENDIAN 3
#define LONG_DOUBLE_IS_X86_80_BIT_BIG_ENDIAN 4
-#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN 5
-#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN 6
+#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE 5
+#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE 6
+#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE 7
+#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE 8
#define LONG_DOUBLE_IS_UNKNOWN_FORMAT -1
+/* Backward compat. */
+#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE
+#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE
#endif
/* HAS_LONG_LONG:
*/
#$d_sigaction HAS_SIGACTION /**/
+/* HAS_SIGINFO_SI_ERRNO:
+ * This symbol, if defined, indicates that siginfo_t has the
+ * si_errno member
+ */
+#$d_siginfo_si_errno HAS_SIGINFO_SI_ERRNO /**/
+
+/* HAS_SIGINFO_SI_PID:
+ * This symbol, if defined, indicates that siginfo_t has the
+ * si_pid member
+ */
+#$d_siginfo_si_pid HAS_SIGINFO_SI_PID /**/
+
+/* HAS_SIGINFO_SI_UID:
+ * This symbol, if defined, indicates that siginfo_t has the
+ * si_uid member
+ */
+#$d_siginfo_si_uid HAS_SIGINFO_SI_UID /**/
+
+/* HAS_SIGINFO_SI_ADDR:
+ * This symbol, if defined, indicates that siginfo_t has the
+ * si_addr member
+ */
+#$d_siginfo_si_addr HAS_SIGINFO_SI_ADDR /**/
+
+/* HAS_SIGINFO_SI_STATUS:
+ * This symbol, if defined, indicates that siginfo_t has the
+ * si_status member
+ */
+#$d_siginfo_si_status HAS_SIGINFO_SI_STATUS /**/
+
+/* HAS_SIGINFO_SI_BAND:
+ * This symbol, if defined, indicates that siginfo_t has the
+ * si_band member
+ */
+#$d_siginfo_si_band HAS_SIGINFO_SI_BAND /**/
+
+/* HAS_SIGINFO_SI_VALUE:
+ * This symbol, if defined, indicates that siginfo_t has the
+ * si_value member
+ */
+#$d_siginfo_si_value HAS_SIGINFO_SI_VALUE /**/
+
/* HAS_SIGSETJMP:
* This variable indicates to the C program that the sigsetjmp()
* routine is available to save the calling process's registers
* This symbol, if defined, indicates that the BSD socketpair() call is
* supported.
*/
-/* HAS_MSG_CTRUNC:
- * This symbol, if defined, indicates that the MSG_CTRUNC is supported.
- * Checking just with #ifdef might not be enough because this symbol
- * has been known to be an enum.
- */
-/* HAS_MSG_DONTROUTE:
- * This symbol, if defined, indicates that the MSG_DONTROUTE is supported.
- * Checking just with #ifdef might not be enough because this symbol
- * has been known to be an enum.
- */
-/* HAS_MSG_OOB:
- * This symbol, if defined, indicates that the MSG_OOB is supported.
- * Checking just with #ifdef might not be enough because this symbol
- * has been known to be an enum.
- */
-/* HAS_MSG_PEEK:
- * This symbol, if defined, indicates that the MSG_PEEK is supported.
- * Checking just with #ifdef might not be enough because this symbol
- * has been known to be an enum.
- */
-/* HAS_MSG_PROXY:
- * This symbol, if defined, indicates that the MSG_PROXY is supported.
- * Checking just with #ifdef might not be enough because this symbol
- * has been known to be an enum.
- */
-/* HAS_SCM_RIGHTS:
- * This symbol, if defined, indicates that the SCM_RIGHTS is supported.
- * Checking just with #ifdef might not be enough because this symbol
- * has been known to be an enum.
- */
/* HAS_SOCKADDR_SA_LEN:
* This symbol, if defined, indicates that the struct sockaddr
* structure has a member called sa_len, indicating the length of
#$d_socket HAS_SOCKET /**/
#$d_sockpair HAS_SOCKETPAIR /**/
#$d_sockaddr_sa_len HAS_SOCKADDR_SA_LEN /**/
-#$d_msg_ctrunc HAS_MSG_CTRUNC /**/
-#$d_msg_dontroute HAS_MSG_DONTROUTE /**/
-#$d_msg_oob HAS_MSG_OOB /**/
-#$d_msg_peek HAS_MSG_PEEK /**/
-#$d_msg_proxy HAS_MSG_PROXY /**/
-#$d_scm_rights HAS_SCM_RIGHTS /**/
#$d_sockaddr_in6 HAS_SOCKADDR_IN6 /**/
#$d_sin6_scope_id HAS_SIN6_SCOPE_ID /**/
#$d_ip_mreq HAS_IP_MREQ /**/
*/
#$d_fcntl_can_lock FCNTL_CAN_LOCK /**/
+/* HAS_FDCLOSE:
+ * This symbol, if defined, indicates that the fdclose routine is
+ * available to free a FILE structure without closing the underlying
+ * file descriptor. This function appeared in FreeBSD 10.2.
+ */
+#$d_fdclose HAS_FDCLOSE /**/
+
/* HAS_FDIM:
* This symbol, if defined, indicates that the fdim routine is
* available to do the positive difference function.
* a prototype for the modfl() function. Otherwise, it is up
* to the program to supply one.
*/
-/* HAS_MODFL_POW32_BUG:
- * This symbol, if defined, indicates that the modfl routine is
- * broken for long doubles >= pow(2, 32).
- * For example from 4294967303.150000 one would get 4294967302.000000
- * and 1.150000. The bug has been seen in certain versions of glibc,
- * release 2.2.2 is known to be okay.
- */
#$d_modfl HAS_MODFL /**/
#$d_modflproto HAS_MODFL_PROTO /**/
-#$d_modfl_pow32_bug HAS_MODFL_POW32_BUG /**/
/* HAS_MPROTECT:
* This symbol, if defined, indicates that the mprotect system call is
*/
#$i_ustat I_USTAT /**/
+/* DOUBLEINFBYTES:
+ * This symbol, if defined, is a comma-separated list of
+ * hexadecimal bytes for the double precision infinity.
+ */
+/* DOUBLENANBYTES:
+ * This symbol, if defined, is a comma-separated list of
+ * hexadecimal bytes (0xHH) for the double precision not-a-number.
+ */
+/* LONGDBLINFBYTES:
+ * This symbol, if defined, is a comma-separated list of
+ * hexadecimal bytes for the long double precision infinity.
+ */
+/* LONGDBLNANBYTES:
+ * This symbol, if defined, is a comma-separated list of
+ * hexadecimal bytes (0xHH) for the long double precision not-a-number.
+ */
+#define DOUBLEINFBYTES $doubleinfbytes /**/
+#define DOUBLENANBYTES $doublenanbytes /**/
+#define LONGDBLINFBYTES $longdblinfbytes /**/
+#define LONGDBLNANBYTES $longdblnanbytes /**/
+
/* PERL_PRIfldbl:
* This symbol, if defined, contains the string used by stdio to
* format long doubles (format 'f') for output.
#$d_PRIeldbl PERL_PRIeldbl $sPRIeldbl /**/
#$d_SCNfldbl PERL_SCNfldbl $sSCNfldbl /**/
+/* DOUBLEMANTBITS:
+ * This symbol, if defined, tells how many mantissa bits
+ * there are in double precision floating point format.
+ * Note that this is usually DBL_MANT_DIG minus one, since
+ * with the standard IEEE 754 formats DBL_MANT_DIG includes
+ * the implicit bit, which doesn't really exist.
+ */
+/* LONGDBLMANTBITS:
+ * This symbol, if defined, tells how many mantissa bits
+ * there are in long double precision floating point format.
+ * Note that this can be LDBL_MANT_DIG minus one,
+ * since LDBL_MANT_DIG can include the IEEE 754 implicit bit.
+ * The common x86-style 80-bit long double does not have
+ * an implicit bit.
+ */
+/* NVMANTBITS:
+ * This symbol, if defined, tells how many mantissa bits
+ * (not including implicit bit) there are in a Perl NV.
+ * This depends on which floating point type was chosen.
+ */
+#define DOUBLEMANTBITS $doublemantbits
+#define LONGDBLMANTBITS $longdblmantbits
+#define NVMANTBITS $nvmantbits
+
/* NEED_VA_COPY:
* This symbol, if defined, indicates that the system stores
* the variable argument list datatype, va_list, in a format