tfm: use unsigned int for fp_digit on !FP_64BIT
There is a bugzilla entry at clamav [0] reports a problem on s390x "mul/fp_mul_comba_20.c:91: warning: right shift count >= width of type" because fp_digit is 64bit and according to the comment it should be smaller. s390x is 64bit platform i.e. long and long long are both 64bit. The same is true for ppc64, arm64 or sparc64 (RIP alpha). The headerfile seems only to define FP_64BIT on x86_64. The current code seems to define SIZEOF_FP_DIGIT either to 8 (64bit) or to 4 in the else case and 4 looks like int and not long. Therefore the change here. If this change makes no sense and you would prefer to use something like #if __SIZEOF_LONG__ == 8 #define FP_64BIT #endif to autodetect a 64bit platform then we could try do this instead. I haven't tested this patch nor verified that the problem still occures. If you have no obvious solution and would like to have a confirmation that this patch solves a problem I could try to get my hands on something not x86 with 64bit in order to verify. [0] https://bugzilla.clamav.net/show_bug.cgi?id=9017 Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
This commit is contained in:
parent
522a092ffb
commit
5d83c4e5ab
@ -265,7 +265,7 @@
|
||||
#endif /* defined(_MSC_VER) ... */
|
||||
#endif /* CRYPT */
|
||||
|
||||
typedef unsigned long fp_digit;
|
||||
typedef unsigned int fp_digit;
|
||||
#define SIZEOF_FP_DIGIT 4
|
||||
typedef ulong64 fp_word;
|
||||
#endif /* FP_64BIT */
|
||||
|
Loading…
Reference in New Issue
Block a user