kmackay / micro-ecc

ECDH and ECDSA for 8-bit, 32-bit, and 64-bit processors.
BSD 2-Clause "Simplified" License
1.26k stars 458 forks source link

GCC + `-Wpedantic` throws warning about `__int128` #222

Open fzi-haxel opened 11 months ago

fzi-haxel commented 11 months ago

If the platform supports __int128, GCC throws the following warning if the -Wpedantic flag is set.

types.h:100:18: warning: ISO C does not support ‘__int128’ types [-Wpedantic]
  100 | typedef unsigned __int128 uECC_dword_t;

Here are three ways to avoid the GCC warning

  1. Use the __attribute__((mode(TI))) (similar to mbedtls)
    typedef unsigned int uECC_dword_t __attribute__((mode(TI)));
  2. Use __extension__ GCC Documentation
    __extension__ typedef unsigned __int128 uECC_dword_t;
  3. Just ignore -Wpedantic at this line
    #pragma GCC diagnostic push
    #pragma GCC diagnostic ignored "-Wpedantic"
    typedef unsigned __int128 uECC_dword_t;
    #pragma GCC diagnostic pop
greenozon commented 2 months ago

Also hit this issue today:

└─▪ make
In file included from uECC_vli.h:7,
                 from uECC.c:4:
types.h:98:18: error: ISO C does not support ‘__int128’ types [-Werror=pedantic]
   98 | typedef unsigned __int128 uECC_dword_t;
      |                  ^~~~~~~~
cc1: all warnings being treated as errors
make: *** [makefile:129: uECC.o] Error 1

└─▪ cat /etc/issue
Ubuntu 22.04.4 LTS \n \l

┌─[±][master ?:3 ✗][micro-ecc]
└─▪ gcc --version
gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.