This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: headache on build repeatibility: octave vs BLODA ?


On Wed, 29 Jan 2020 16:34:28 +0100
Corinna Vinschen wrote:
> On Jan 29 16:32, Corinna Vinschen wrote:
> > On Jan 29 22:46, Takashi Yano wrote:
> > > --- m4/fseeko.m4.orig   2020-01-29 21:39:37.280507900 +0900
> > > +++ m4/fseeko.m4        2020-01-29 21:36:29.263747100 +0900
> > > @@ -30,16 +30,19 @@
> > >      HAVE_FSEEKO=0
> > >    else
> > >      if test $WINDOWS_64_BIT_OFF_T = 1; then
> 
> This makes me a bit suspicious... it looks like a check only
> required for native builds, not for Cygwin.

I think REPLACE_FSEEKO is set to 1 not here,

> > >      m4_ifdef([gl_FUNC_FFLUSH_STDIN], [
> > >        gl_FUNC_FFLUSH_STDIN
> > >        case "$gl_cv_func_fflush_stdin" in
> > >          *yes) ;;
> > > -        *) REPLACE_FSEEKO=1 ;;
> > > +        dnl *) REPLACE_FSEEKO=1 ;;
> > > +        *) REPLACE_FSEEKO=0 ;;
> > >        esac

but here.

gl_cv_func_fflush_stdin is set here in configure by:

if ac_fn_c_try_run "$LINENO"; then :
  gl_cv_func_fflush_stdin=yes
else
  gl_cv_func_fflush_stdin=no
fi

and the test code for this decision is as attached. conftest.c
returns 0 in cygwin 3.0.7, while cygwin with commit 59362c80e3a
returns 5.

I am not sure why segfault occurs if fseeko is replaced.
Probably due to a bug in octave or cygwin.

-- 
Takashi Yano <takashi.yano@nifty.ne.jp>
#include <stdio.h>
# include <unistd.h>

int
main ()
{
FILE *f = fopen ("conftest.txt", "r");
         char buffer[10];
         int fd;
         int c;
         if (f == NULL)
           return 1;
         fd = fileno (f);
         if (fd < 0 || fread (buffer, 1, 5, f) != 5)
           { fclose (f); return 2; }
         /* For deterministic results, ensure f read a bigger buffer.  */
         if (lseek (fd, 0, SEEK_CUR) == 5)
           { fclose (f); return 3; }
         /* POSIX requires fflush-fseek to set file offset of fd.  This fails
            on BSD systems and on mingw.  */
         if (fflush (f) != 0 || fseek (f, 0, SEEK_CUR) != 0)
           { fclose (f); return 4; }
         if (lseek (fd, 0, SEEK_CUR) != 5)
           { fclose (f); return 5; }
         /* Verify behaviour of fflush after ungetc. See
            <http://www.opengroup.org/austin/aardvark/latest/xshbug3.txt>  */
         /* Verify behaviour of fflush after a backup ungetc.  This fails on
            mingw.  */
         c = fgetc (f);
         ungetc (c, f);
         fflush (f);
         if (fgetc (f) != c)
           { fclose (f); return 6; }
         /* Verify behaviour of fflush after a non-backup ungetc.  This fails
            on glibc 2.8 and on BSD systems.  */
         c = fgetc (f);
         ungetc ('@', f);
         fflush (f);
         if (fgetc (f) != c)
           { fclose (f); return 7; }
         fclose (f);
         return 0;

  ;
  return 0;
}

Attachment: conftest.txt
Description: Text document

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]