Hi Steven
On 2024-04-08 15:38:50 -0700, Steven Eker wrote:
Hi Nilish,
I don't have a 32-bit machine to test on, but my understanding is that Linux
has moved to a 64-bit signed integer for time_t and this is a long long on
32-bit machines which is explicitly not supported by GMP's C++ API.
This sounds like it needs to fixed in GMP then.
https://urldefense.com/v3/__https://en.wikipedia.org/wiki/Year_2038_problem__;!!DZ3fjg!--tzUBTnQHRKfnkc8PqaPE5gHxPm2QWswg2_MWTbLaWxFFDXu6jiPCjltocalTdckv2oG8G8tDajml0HNO6JIFyo$
https://urldefense.com/v3/__https://gmplib.org/manual/C_002b_002b-Interface-Integers__;!!DZ3fjg!--tzUBTnQHRKfnkc8PqaPE5gHxPm2QWswg2_MWTbLaWxFFDXu6jiPCjltocalTdckv2oG8G8tDajml0HNHAQQdRg$
I'm not happy converting a signed value to an unsigned value for all
architectures. But
mpz_class nanoSeconds(static_cast<Index>(timeValue.tv_sec));
should fix the problem, at least until 2038. Can you check that this works?
If so I'll put it in the next public alpha.
And this does not sound like a fix which we want.
Best
Sebastian