|
Message-ID: <CAMKF1sqS9-K6wUXKN_kWz3Wz6VqDOJJrRVuFU3pgS8GrAYsSMw@mail.gmail.com> Date: Wed, 16 Feb 2022 10:03:30 -0800 From: Khem Raj <raj.khem@...il.com> To: musl@...ts.openwall.com Subject: Re: -Wsign-conversion warning on ARM when using CMSG_NXTHDR On Wed, Feb 16, 2022 at 4:42 AM Christian Eggers <ceggers@...i.de> wrote: > Toolchain: Yocto Linux with poky-tiny > Host platform: openSUSE 15.3 x86_64 > Target platform: arm-poky-linux-musleabi (armv7, 32 bit) > > When I try to compile libkcapi [1] [2] with current > Yocto/Openembedded master branch, I get the following compiler error: > > | ../git/lib/kcapi-kernel-if.c: In function '_kcapi_common_send_meta': > | ../git/lib/kcapi-kernel-if.c:193:26: error: unsigned conversion from > 'long int' to 'long unsigned int' changes value from '-4' to '4294967292' > [-Werror=sign-conversion] > | 193 | header = CMSG_NXTHDR(&msg, header); > | | ^~~~~~~~~~~ > | ../git/lib/kcapi-kernel-if.c:193:26: error: unsigned conversion from > 'long int' to 'long unsigned int' changes value from '-4' to '4294967292' > [-Werror=sign-conversion] > | ../git/lib/kcapi-kernel-if.c:213:26: error: unsigned conversion from > 'long int' to 'long unsigned int' changes value from '-4' to '4294967292' > [-Werror=sign-conversion] > | 213 | header = CMSG_NXTHDR(&msg, header); > | | ^~~~~~~~~~~ > | ../git/lib/kcapi-kernel-if.c:213:26: error: unsigned conversion from > 'long int' to 'long unsigned int' changes value from '-4' to '4294967292' > [-Werror=sign-conversion] > > Note: libcapi uses the '-Werror' and '-Wconversion' flags. > > For testing, I created a minimal code snipset (cmsg.c): > > #include <stddef.h> > #include <sys/socket.h> > > void foo(void) > { > struct msghdr msg = {0}; > struct cmsghdr *header = NULL; > > header = CMSG_FIRSTHDR(&msg); > header = CMSG_NXTHDR(&msg, header); > } > > # arm-poky-linux-musleabi-gcc --sysroot=<...> -Werror -Wconversion -c -o > cmsg.o cmsg.c > cmsg.c: In function 'foo': > cmsg.c:10:18: error: unsigned conversion from 'long int' to 'long unsigned > int' changes value from '-4' to '4294967292' [-Werror=sign-conversion] > 10 | header = CMSG_NXTHDR(&msg, header); > | ^~~~~~~~~~~ > cmsg.c:10:18: error: unsigned conversion from 'long int' to 'long unsigned > int' changes value from '-4' to '4294967292' [-Werror=sign-conversion] > > > When replace CMSG_NXTHDR() by the expanded macro code, I get the following > errors: > > cmsg.c: In function 'foo': > cmsg.c:12:46: error: unsigned conversion from 'long int' to 'long unsigned > int' changes value from '-4' to '4294967292' [-Werror=sign-conversion] > 12 | (((header)->cmsg_len + sizeof(long) - 1) & ~(long)(sizeof(long) - 1)) > + sizeof(struct cmsghdr) >= ((unsigned char *)(&msg)->msg_control + > (&msg)->msg_controllen) - (unsigned char *)(header) \ > | ^ > cmsg.c:13:99: error: unsigned conversion from 'long int' to 'long unsigned > int' changes value from '-4' to '4294967292' [-Werror=sign-conversion] > 13 | ? 0 : (struct cmsghdr *)((unsigned char *)(header) + > (((header)->cmsg_len + sizeof(long) - 1) & ~(long)(sizeof(long) - 1)))); > | ^ > > check https://github.com/smuellerDD/libkcapi/pull/131 libkcapi has dropped using -Werror > > [1] > https://git.openembedded.org/meta-openembedded/tree/meta-oe/recipes-crypto/libkcapi?h=master > [2] > https://github.com/smuellerDD/libkcapi/tree/2936ecd060c299157ac880650ba2c9fd94d27bb1 > > > > _______________________________________________________ > Christian > Eggers > Software Engineer > ARRI > Arnold & Richter Cine Technik GmbH & Co. Betriebs KG > Arriweg 17 , > 83071 > Stephanskirchen > > > *www.arri.com * <http://www.arri.com/> > *+49 8036 3009-3118* <+49%208036%203009-3118> > *CEggers@...i.de* <CEggers@...i.de> > > [image: Orbiter Docking Ring] > <https://www.arri.com/en/lighting/led/orbiter-accessories/orbiter-dockingring/> > Get all the latest information from *www.arri.com* <http://www.arri.com/> > , *Facebook* <https://www.facebook.com/TeamARRI>, *Twitter* > <https://twitter.com/ARRIChannel>, *Instagram* <http://instagram.com/arri> > and *YouTube* <http://www.youtube.com/user/ARRIChannel>. > > Arnold & Richter Cine Technik GmbH & Co. Betriebs KG > > Sitz: München ‑ Registergericht: Amtsgericht München ‑ Handelsregisternummer: HRA 57918 > Persönlich haftender Gesellschafter: Arnold & Richter Cine Technik GmbH > > Sitz: München ‑ Registergericht: Amtsgericht München ‑ Handelsregisternummer: HRB 54477 > > Geschäftsführer: Dr. Michael Neuhäuser; Stephan Schenk; Walter Trauninger; Markus Zeiler > > > Content of type "text/html" skipped Download attachment "image092396.png" of type "image/png" (528 bytes) Download attachment "image623061.png" of type "image/png" (824 bytes)
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.