https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61407
--- Comment #33 from James Clarke <jrtc27 at jrtc27 dot com> --- (In reply to Jack Howarth from comment #30) > The proposed changes in v4 of the patch aren't building here on 10.9. I > don't see how > > # if defined(_DARWIN_FEATURE_64_BIT_INODE) > > can completely substitute for… > > # if ! defined(__DARWIN_64_BIT_INO_T) || __DARWIN_64_BIT_INO_T > > as sys/cdefs.h shows… > > /* > * _DARWIN_FEATURE_64_BIT_INODE indicates that the ino_t type is 64-bit, and > * structures modified for 64-bit inodes (like struct stat) will be used. > */ > #if __DARWIN_64_BIT_INO_T > #define _DARWIN_FEATURE_64_BIT_INODE 1 > #endif > > which means that… > > # if defined(_DARWIN_FEATURE_64_BIT_INODE) > > is effectively only > > # if __DARWIN_64_BIT_INO_T > > as the definition of _DARWIN_FEATURE_64_BIT_INODE only checks if > __DARWIN_64_BIT_INO_T is set and not if it is undefined as well. I was able to perform a complete clean bootstrap on my system, so I'm curious as to what error(s) you got? I agree, the two are not equivalent, but the first one (!defined(X) || X) is wrong in my opinion, as if the macro is not defined, the documentation for dir(5) states that the 32-bit versions are used.