Skip to contentSkip to conversation

2.5.51 ntfs - GCC3

PATCH In review Justin Pryzby 2 participants 2 messages Dec 10, 2002 NTFS filesystem

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 2.5.51 ntfs - GCC3

Trivial patch for GCC3.
What was going on with 2.96<=__GNUC__<3 ?!

Justin

fs/ntfs/types.h +4 -4
diff -Naur linux-2.5.51.org/fs/ntfs/types.h linux-2.5.51.ntfs/fs/ntfs/types.h
@@ -23,12 +23,12 @@
 #ifndef _LINUX_NTFS_TYPES_H
 #define _LINUX_NTFS_TYPES_H
 
-#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 96)
-#define SN(X)   X	/* Struct Name */
-#define SC(P,N) P.N	/* ShortCut: Prefix, Name */
-#else
+#if __GNUC__ == 2 && __GNUC_MINOR__ >= 96
 #define SN(X)
 #define SC(P,N) N
+#else
+#define SN(X)   X	/* Struct Name */
+#define SC(P,N) P.N	/* ShortCut: Prefix, Name */
 #endif
 
 /* 2-byte Unicode character type. */
fs/ntfs/types.h +4 -4
diff -Naur linux-2.5.51.org/fs/ntfs/types.h linux-2.5.51.ntfs/fs/ntfs/types.h
@@ -23,12 +23,12 @@
 #ifndef _LINUX_NTFS_TYPES_H
 #define _LINUX_NTFS_TYPES_H
 
-#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 96)
-#define SN(X)   X	/* Struct Name */
-#define SC(P,N) P.N	/* ShortCut: Prefix, Name */
-#else
+#if __GNUC__ == 2 && __GNUC_MINOR__ >= 96
 #define SN(X)
 #define SC(P,N) N
+#else
+#define SN(X)   X	/* Struct Name */
+#define SC(P,N) P.N	/* ShortCut: Prefix, Name */
 #endif
 
 /* 2-byte Unicode character type. */
#1 lore raw

This patch is completely wrong. Please do not apply.

Quoted 1 line · Justin Pryzby

What was going on with 2.96<=__GNUC__<3 ?!

gcc-2.96 introduces unnamed unions and structures which we make heavy use of in the NTFS driver. To be able to compile with earlier gcc versions, we had to do some macro magic which is what the below code snippet in your patch shows. The idea is that as soon as the official kernel requirements for the minimum compiler are raised to gcc-2.96 or above, we will remove all the macro magic and just leave everything unnamed.

Unfortunately the gcc crew fscked up and broke typedefs to unnamed unions and structures in gcc-3.1 I think it was. This has since been fixed again in the more recent gcc versions (gcc-3.2 is ok).

So if any special casing needs to be made below it would be to extend the existing test with an || (__GNUC__ == 3 && __GNUC_MINOR__ == 1) but I prefer not to do that. People should just upgrade their compiler. After all it is the compiler that is broken not the code.

Best regards,

Anton

Quoted 25 lines

Justin

diff -Naur linux-2.5.51.org/fs/ntfs/types.h linux-2.5.51.ntfs/fs/ntfs/types.h

fs/ntfs/types.h +4 -4
@@ -23,12 +23,12 @@
 #ifndef _LINUX_NTFS_TYPES_H
 #define _LINUX_NTFS_TYPES_H
 
-#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 96)
-#define SN(X)   X	/* Struct Name */
-#define SC(P,N) P.N	/* ShortCut: Prefix, Name */
-#else
+#if __GNUC__ == 2 && __GNUC_MINOR__ >= 96
 #define SN(X)
 #define SC(P,N) N
+#else
+#define SN(X)   X	/* Struct Name */
+#define SC(P,N) P.N	/* ShortCut: Prefix, Name */
 #endif
 
 /* 2-byte Unicode character type. */
Signature · 3 lines
Anton Altaparmakov <aia21 at cantab.net> (replace at with @)
Linux NTFS maintainer / IRC: #ntfs on irc.freenode.net
WWW: http://linux-ntfs.sf.net/ & http://www-stu.christs.cam.ac.uk/~aia21/