badly punctuated parameter list in `#define' (2.4.3-ac5 and 2.4.4 -pre2)
When compiling 2.4.3-ac5 (and also 2.4.4-pre2) I get this:
/usr/src/linux-2.4.3-ac5/include/asm/rwsem.h:26: badly punctuated parameter list
in `#define'
This appears to be due to some code in rwsem.h that is written for a different version of gcc. (I'm still using gcc-2.91.66 as specified in Documentation/Changes.) It works for me if I replace it with the code in the section labeled /* old gcc */. Here's a patch to do that:
asm-i386/rwsem.h Thu Apr 12 13:48:04 2001 renamed from asm-i386/rwsem.h.old Thu Apr 12 13:47:00 2001 +0 -1
@@ -21,16 +21,16 @@ #include <linux/wait.h> #if RWSEM_DEBUG -#define rwsemdebug(FMT,...) do { if (sem->debug) printk(FMT,__VA_ARGS__); }
while(0)
+//#define rwsemdebug(FMT,...) do { if (sem->debug) printk(FMT,__VA_ARGS__); } while(0)
#else
-#define rwsemdebug(FMT,...)
+//#define rwsemdebug(FMT,...)
#endif
/* old gcc */
#if RWSEM_DEBUG
-//#define rwsemdebug(FMT, ARGS...) do { if (sem->debug) printk(FMT,##ARGS); } while(0)
+#define rwsemdebug(FMT, ARGS...) do { if (sem->debug) printk(FMT,##ARGS); } while(0)
#else
-//#define rwsemdebug(FMT, ARGS...)
+#define rwsemdebug(FMT, ARGS...)
#endif
#ifdef CONFIG_X86_XADD
Quoted 10 lines · In article <[email protected]> you wrote:
When compiling 2.4.3-ac5 (and also 2.4.4-pre2) I get this:
/usr/src/linux-2.4.3-ac5/include/asm/rwsem.h:26: badly punctuated parameter list
in `#define'This appears to be due to some code in
rwsem.hthat is written for a different version of gcc. (I'm still using gcc-2.91.66 as specified inDocumentation/Changes.) It works for me if I replace it with the code in the section labeled /* old gcc */. Here's a patch to do that:
So the /* old gcc */ part should probably be enabled based on a define for the old compiler. The right ifdef seems to be:
#if __GNUC__ == 2 && __GNUC_MINOR__ < 95
Could you test it this way?
Christoph
Signature · 1 line
Of course it doesn't work. We've performed a software upgrade.
Quoted 4 lines · Christoph Hellwig
So the /* old gcc */ part should probably be enabled based on a define for the old compiler. The right ifdef seems to be:
#if __GNUC__ == 2 && __GNUC_MINOR__ < 95
The current GCC supports the old syntax and will do so for a while yet, so perhaps this is not required?
-- Jamie
Quoted 8 lines · Jamie Lokier
Quoted 4 lines · Christoph Hellwig
So the /* old gcc */ part should probably be enabled based on a define for the old compiler. The right ifdef seems to be:
#if __GNUC__ == 2 && __GNUC_MINOR__ < 95The current GCC supports the old syntax and will do so for a while yet, so perhaps this is not required?
If that's true (I have no gcc3.0 to verify it) that's the better soloution in my eyes.
Christoph
Signature · 1 line
Of course it doesn't work. We've performed a software upgrade.