Since make 4.1 built with --enable-nls only links against
/sw/lib/libintl.8.dylib, the only likely candidate I see is...

      __builtin_expect (fstat (fd, &st) != 0, 0)

in gettext-0.19.5.1/gettext-runtime/intl/loadmsgcat.c. It's not clear how
we manage to keep the __builtin_expect macro wrapper while also looping on
fstat with the missing check for EINTR added.
            Jack
ps In theory, we probably should also check the i/o system calls for
missing EINTR checks in /sw/lib/libiconv.2.dylib since libintl.8.dylib is
linked against that.

On Fri, Oct 23, 2015 at 3:22 PM, Jack Howarth <howarth.at.f...@gmail.com>
wrote:

> Max,
>       I did an exhaustive check by adding EINTRLOOP macros to every single
> POSIX system call in the make 4.1 sources which can return EINTR. None of
> that helped eliminate the build failures here in openmpi and gcc5. I
> finally stumbled in a workaround that suppresses the failures. Passing
> --disable-nls to the ConfigureParms in the make 4.1 build produces a binary
> that doesn't exhibit this bug on 10.11.
>      This work-around actually makes sense to me. If the read/write/stat
> calls in the make 4.1 sources require addition of an EINTRLOOP macro
> wrapper, then why shouldn't the same be true of those function calls in the
> gettext library itself.. Any i/o in that library should be under that same
> restrictions as those in the make 4.1 sources themselves, no?
>                Jack
> ps The attached make-4.1-4 applies --disable-nls universally to the build
> so that binaries built prior to the upgrade to 10.11 will have the same
> necessary elimination of that feature.
> ppc The explanation of the failure being due to the NLS support also has
> the added benefit of explaining why this issue was quasi-latent in prior
> darwin releases...
>
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63827#c5
>
> Looking at the gettext-0.19.5.1 sources, I see that their read calls use a
> while loop to check for EINTR being returned but this doesn't rule out that
> some other POSIX call in there is missing the required EINTR checks. For
> instance in gettext-tools/gnulib-lib/pipe-filter-ii.c,
>
>               read (fd[0], buf, bufsize > SSIZE_MAX ? SSIZE_MAX : bufsize);
>
> looks like it might need a EINTR check. IMHO, gnu-lib might be the best
> place to start as that code isn't under the direct control of the gettext
> developers. It also seems to do write() and stat() calls without checking
> for EINTR in places within the gnu-lib sources.
>
------------------------------------------------------------------------------
_______________________________________________
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
List archive:
http://news.gmane.org/gmane.os.apple.fink.devel
Subscription management:
https://lists.sourceforge.net/lists/listinfo/fink-devel

Reply via email to