bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gnulib cross-compiling issue with musl


From: Rich Felker
Subject: gnulib cross-compiling issue with musl
Date: Tue, 18 Jun 2013 13:03:05 -0400
User-agent: Mutt/1.5.21 (2010-09-15)

Hi again,

Last year after a great deal of discussion, we got most of the issues
between gnulib and musl libc fixed. However there's one problem that
keeps coming up again and again from our users: when cross-compiling,
gnulib treats fseeko (well, actually fflush(stdin), which in turn
requires a replacement fseeko) as broken by default (since it can't
run tests to check) and the #else case in gnulib's fseeko.c contains
#error.

Presumably it's possible to work around this issue by creating a
config.cache file that overrides gl_cv_func_fflush_stdin=yes, but that
requires a bit of manual intervention to make it work, and it would
give a much nicer user experience if things just worked out of the
box.

I have a couple proposed solutions for gnulib's fseeko.c:

1. In the #else case, instead of #error, put if(0). In other words,
   treat unknown platforms as having working fseeko that does not need
   any of the replacement code; execution would simply fall through to
   the call to the real fseeko at the end of the function.

2. Write a "portable" version of the replacement code for the #else
   case (or to replace all the existing cases) in terms of standard
   functions and other existing gnulib extended-stdio functions. I
   don't understand well enough what it's doing to judge whether this
   is feasible, but this seems to be the mechanism by which the
   replacement fflush is currently working on musl; all of the
   functions it calls in the #else cases are either standard functions
   or other gnulib functions.

I like the first option better. What do you think?

Rich



reply via email to

[Prev in Thread] Current Thread [Next in Thread]