[Resending as the first message had the incorrect "bus-bison" as the
return address.]
On 1/20/21 3:50 PM, Albert Chin wrote:
Unfortunately, on HP-UX 11.23/IA, UINT_LEAST8_MAX evaluates to
((unsigned char)(255)) causing a problem with:
#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
&& UINT_LEAST8_MAX <= INT_MAX)
This is also an issue for UINT_LEAST16_MAX.
That is a known bug in HP-UX 11.23 that Gnulib has had a workaround for
since 2009. See:
https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=3a4f1890986aeea9906c261c146bfaab4136a263
I suppose Bison cannot assume that Gnulib is in use, unfortunately.
Does the attached Bison patch fix the problem for you?
>From f73f899a1b16f8cd0bde64bef877491b432aa367 Mon Sep 17 00:00:00 2001
From: Paul Eggert <egg...@cs.ucla.edu>
Date: Wed, 20 Jan 2021 18:30:16 -0800
Subject: [PATCH] c: port to HP-UX 11.23
Problem reported by Albert Chin in:
https://lists.gnu.org/r/bug-bison/2021-01/msg00029.html
* data/skeletons/c.m4 (b4_c99_int_type_define):
Work around HP-UX bug.
---
data/skeletons/c.m4 | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/data/skeletons/c.m4 b/data/skeletons/c.m4
index fccd4cc8..f2abec5a 100644
--- a/data/skeletons/c.m4
+++ b/data/skeletons/c.m4
@@ -254,6 +254,18 @@ typedef int_least16_t yytype_int16;
typedef short yytype_int16;
#endif
+/* Work around bug in HP-UX 11.23, which defines these macros
+ incorrectly for preprocessor constants. This workaround can likely
+ be removed in 2023, as HPE has promised support for HP-UX 11.23
+ (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
+ <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
+#ifdef __hpux
+# undef UINT_LEAST8_MAX
+# undef UINT_LEAST16_MAX
+# define UINT_LEAST8_MAX 255
+# define UINT_LEAST16_MAX 65535
+#endif
+
#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
typedef __UINT_LEAST8_TYPE__ yytype_uint8;
#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
--
2.27.0