Bug#505042: FTBFS with GCC 4.4: #elif is missing defined()
Martin Michlmayr
tbm at cyrius.com
Sat Nov 8 18:40:45 UTC 2008
Package: cyrus-sasl2
Version: 2.1.22.dfsg1-23
User: debian-gcc at lists.debian.org
Usertags: ftbfs-gcc-4.4
Tags: patch
Your package fails to build with the upcoming GCC 4.4. Version 4.4
has not been released yet but I'm building with a snapshot in order
to find errors and give people an advance warning.
GCC 4.4 will introduce better checks in the preprocessor. Your code
does something like:
#ifdef A
#elif B
#endif
but the #elif is wrong: #elif requires a condition whereas you're
trying to test whether B is defined. You therefore have to use:
#elif defined(B)
You can reproduce this problem with gcc-snapshot from unstable.
> Automatic build of cyrus-sasl2_2.1.22.dfsg1-23 on em64t by sbuild/amd64 0.53
...
> digestmd5.c:2514: warning: pointer targets in passing argument 3 of 'text->cipher_init' differ in signedness
> digestmd5.c:2514: note: expected 'unsigned char *' but argument is of type 'char *'
> digestmd5.c:2718:15: error: #elif with no expression
> digestmd5.c: In function 'make_client_response':
> digestmd5.c:3010: warning: pointer targets in passing argument 3 of 'calculate_response' differ in signedness
> digestmd5.c:2851: note: expected 'unsigned char *' but argument is of type 'char *'
> digestmd5.c:3010: warning: pointer targets in passing argument 11 of 'calculate_response' differ in signedness
> digestmd5.c:2851: note: expected 'unsigned char *' but argument is of type 'char *'
> digestmd5.c:3034: warning: pointer targets in passing argument 6 of 'add_to_challenge' differ in signedness
> digestmd5.c:505: note: expected 'unsigned char *' but argument is of type 'char *'
> digestmd5.c:3145: warning: pointer targets in passing argument 2 of 'text->cipher_init' differ in signedness
> digestmd5.c:3145: note: expected 'unsigned char *' but argument is of type 'char *'
> digestmd5.c:3145: warning: pointer targets in passing argument 3 of 'text->cipher_init' differ in signedness
> digestmd5.c:3145: note: expected 'unsigned char *' but argument is of type 'char *'
> digestmd5.c: In function 'digestmd5_client_mech_step1':
> digestmd5.c:3732: warning: pointer targets in passing argument 2 of '_plug_strdup' differ in signedness
> plugin_common.h:147: note: expected 'const char *' but argument is of type 'unsigned char *'
> digestmd5.c:3735: warning: pointer targets in passing argument 2 of '_plug_strdup' differ in signedness
> plugin_common.h:147: note: expected 'const char *' but argument is of type 'unsigned char *'
> digestmd5.c:3703: warning: unused parameter 'serverin'
> digestmd5.c:3704: warning: unused parameter 'serverinlen'
> digestmd5.c: In function 'digestmd5_client_mech_step3':
> digestmd5.c:3838: warning: unused parameter 'prompt_need'
> digestmd5.c:3839: warning: unused parameter 'clientout'
> digestmd5.c:3840: warning: unused parameter 'clientoutlen'
> digestmd5.c: In function 'digestmd5_client_mech_step':
> digestmd5.c:4000: warning: pointer targets in assignment differ in signedness
> digestmd5.c:4037:15: error: #elif with no expression
> make[3]: *** [digestmd5.lo] Error 1
> make[3]: Leaving directory `/build/tbm/cyrus-sasl2-2.1.22.dfsg1/plugins'
--- plugins/digestmd5.c~ 2008-11-08 18:28:21.000000000 +0000
+++ plugins/digestmd5.c 2008-11-08 18:28:50.000000000 +0000
@@ -2715,7 +2715,7 @@
"DIGEST-MD5", /* mech_name */
#ifdef WITH_RC4
128, /* max_ssf */
-#elif WITH_DES
+#elif defined(WITH_DES)
112,
#else
1,
@@ -4034,7 +4034,7 @@
"DIGEST-MD5",
#ifdef WITH_RC4 /* mech_name */
128, /* max ssf */
-#elif WITH_DES
+#elif defined(WITH_DES)
112,
#else
1,
--
Martin Michlmayr
http://www.cyrius.com/
More information about the Pkg-cyrus-sasl2-debian-devel
mailing list