https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61407
--- Comment #29 from James Clarke <jrtc27 at jrtc27 dot com> --- (In reply to Jack Howarth from comment #28) > I noticed that MacPorts is using… > > #if SANITIZER_MAC && ( !defined(__DARWIN_64_BIT_INO_T) || > __DARWIN_64_BIT_INO_T) > > and > > # if ! defined(__DARWIN_64_BIT_INO_T) || __DARWIN_64_BIT_INO_T > > rather than just… > > > #if SANITIZER_MAC && __DARWIN_64_BIT_INO_T > > and > > # if __DARWIN_64_BIT_INO_T > > in their patch for gcc49… > > https://trac.macports.org/browser/trunk/dports/lang/gcc49/files/patch-10.10. > diff > > Should we be doing the same? That's because they're using my original patch from this bug report (https://gcc.gnu.org/bugzilla/attachment.cgi?id=33180), which itself is based off Ilya Mikhaltsou's patch (https://gcc.gnu.org/bugzilla/attachment.cgi?id=32949, also from this bug report). I don't know why Ilya decided to default to a 64-bit dirent struct, as the documentation clearly states that it is only 64-bit when the _DARWIN_FEATURE_64_BIT_INODE macro is defined (https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/dir.5.html#//apple_ref/doc/man/5/dir). This is different from __DARWIN_64_BIT_INO_T, but you can see in sys/cdefs.h that _DARWIN_FEATURE_64_BIT_INODE is only defined (to 1) when __DARWIN_64_BIT_INO_T is true. Please note that I have updated my patch to use the public _DARWIN_FEATURE_64_BIT_INODE macro, and to check whether it is defined rather than its value (seeing as the documentation only refers to its definition, not its value). The updated patches are at https://gcc.gnu.org/ml/gcc-patches/2014-08/msg02427.html.