#error "This file should not be included by userland programs."
#endif
-#define ASSYM_ABS(value) ((value) < 0 ? -((value) + 1) + 1ULL : (value))
+/* Add an ASSYM_BIAS to all arrays to avoid zero-size, which can be
+ mishandled in some compilers */
+#define ASSYM_BIAS 0x00100000
-#define ASSYM(name, value) \
-char name ## sign[(value) < 0 ? 1 : 0]; \
-char name ## w0[ASSYM_ABS(value) & 0xFFFFU]; \
-char name ## w1[(ASSYM_ABS(value) & 0xFFFF0000UL) >> 16]; \
-char name ## w2[(ASSYM_ABS(value) & 0xFFFF00000000ULL) >> 32]; \
-char name ## w3[(ASSYM_ABS(value) & 0xFFFF000000000000ULL) >> 48]
+#define ASSYM_ABS(value) ((value) < 0 ? -((value) + 1) + 1ULL : (value))
+
+#define ASSYM(name, value) \
+char name ## sign[((value) < 0 ? 1 : 0) + ASSYM_BIAS]; \
+char name ## w0[(ASSYM_ABS(value) & 0xFFFFU) + ASSYM_BIAS]; \
+char name ## w1[((ASSYM_ABS(value) & 0xFFFF0000UL) >> 16) + ASSYM_BIAS]; \
+char name ## w2[((ASSYM_ABS(value) & 0xFFFF00000000ULL) >> 32) + ASSYM_BIAS]; \
+char name ## w3[((ASSYM_ABS(value) & 0xFFFF000000000000ULL) >> 48) + ASSYM_BIAS]
#endif /* !_SYS_ASSYM_H_ */