Picon

bug

Please help me to fix this problem. Thanks. Vladimir.

Attachment (config.log): text/x-log, 12 KiB
_______________________________________________
Bug-m4 mailing list
Bug-m4 <at> gnu.org
http://lists.gnu.org/mailman/listinfo/bug-m4
Eric Blake | 19 Oct 16:48 2007
Picon

Re: bug


According to Владимир Шабалдас on 10/18/2007 8:46 PM:
> Please help me to fix this problem. Thanks. Vladimir.

You have a bigger problem than just compiling m4 on your hands.  Your
compiler tool chain is not installed correctly:

> configure:2917: gcc    conftest.c  >&5
> /usr/bin/ld: crt1.o: No such file: No such file or directory
> collect2: ld returned 1 exit status
...
> configure:2965: error: C compiler cannot create executables
> See `config.log' for more details.

I'd suggest asking for more information on a Linux user's group forum for
how to correct your broken compiler.

--
Don't work too hard, make some time for fun as well!

Eric Blake             ebb9 <at> byu.net
Tim Rice | 29 Oct 02:15 2007
Picon

m4-1.4.10


It looks like there are some regressions in 1.4.10 on some of my 
platforms.

On my UnixWare 7.1.1 box I needed to patch lib/fpurge.c and lib/freading.c
just to get it to compile. I got errors like
....
UX:acomp: ERROR: "/opt/src/gnu/m4-1.4.10/lib/fpurge.c", line 95: undefined struct/union member: _ptr
....

Looking at stdio.h I see
....
typedef struct _FILE_
{
     int             __cnt;          /* num. avail. characters in buffer */
     unsigned char   *__ptr;         /* next character from/to here */
     unsigned char   *__base;        /* the buffer (not really) */
     unsigned char   __flag;         /* the state of the stream */
     unsigned char   __file;         /* file descriptor (not necessarily) */
     unsigned char   __buf[2];       /* micro buffer as a fall-back */
} FILE;
....
so I patched like this
....
--- m4-1.4.10/lib/fpurge.c.old	2007-07-05 04:48:00.000000000 -0700
+++ m4-1.4.10/lib/fpurge.c	2007-10-19 19:59:28.758956004 -0700
 <at>  <at>  -92,9 +92,9  <at>  <at> 
      }
    return 0;
  # elif defined _IOERR               /* AIX, HP-UX, IRIX, OSF/1, Solaris, mingw */
-  fp->_ptr = fp->_base;
-  if (fp->_ptr != NULL)
-    fp->_cnt = 0;
+  fp->__ptr = fp->__base;
+  if (fp->__ptr != NULL)
+    fp->__cnt = 0;
    return 0;
  # elif defined __UCLIBC__           /* uClibc */
  #  ifdef __STDIO_BUFFERS
--- m4-1.4.10/lib/freading.c.old	2007-07-05 04:48:00.000000000 -0700
+++ m4-1.4.10/lib/freading.c	2007-10-22 20:44:16.222527001 -0700
 <at>  <at>  -37,7 +37,7  <at>  <at> 
  #elif defined __sferror             /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */
    return (fp->_flags & __SRD) != 0;
  #elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, mingw */
-  return (fp->_flag & _IOREAD) != 0;
+  return (fp->__flag & _IOREAD) != 0;
  #elif defined __UCLIBC__            /* uClibc */
    return (fp->__modeflags & (__FLAG_READONLY | __FLAG_READING)) != 0;
  #else
....

Additionally my OpenServer 5.0.4 box has no fseeko so it needed
lib/fseeko.c patched.
.....
--- lib/fseeko.c.old	2007-07-05 04:48:02.000000000 -0700
+++ lib/fseeko.c	2007-10-23 14:25:22.851251004 -0700
 <at>  <at>  -80,8 +80,8  <at>  <at> 
    if (fp_->_ptr == fp_->_base
        && (fp_->_ptr == NULL || fp_->_cnt == 0))
  # else
-  if (fp->_ptr == fp->_base
-      && (fp->_ptr == NULL || fp->_cnt == 0))
+  if (fp->__ptr == fp->__base
+      && (fp->__ptr == NULL || fp->__cnt == 0))
  # endif
  #elif defined __UCLIBC__            /* uClibc */
    if (((fp->__modeflags & __FLAG_WRITING) == 0
.....

The comments in that section of code mention AIX, HP-UX, IRIX, OSF/1,
Solaris, & mingw. Of those I only have Solaris here and with the above
patches Solaris 8 & 10 still build fine and pass tests.

On UnixWare 7.1.1 test-closein.sh fails.
....
./test-closein: error closing file: Illegal seek
FAIL: test-closein.sh
....
After reading up on the OpenGroup's onlinepubs for fseeko(), I came
up with this patch.

.....
--- lib/closein.c.old	2007-05-30 18:30:16.000000000 -0700
+++ lib/closein.c	2007-10-22 22:32:48.958287004 -0700
 <at>  <at>  -82,8 +82,10  <at>  <at> 

    /* Only attempt flush if stdin is seekable, as fflush is entitled to
       fail on non-seekable streams.  */
+  errno = 0;
    if (fseeko (stdin, 0, SEEK_CUR) == 0 && fflush (stdin) != 0)
-    fail = true;
+    if(errno != ESPIPE)
+        fail = true;
    if (close_stream (stdin) != 0)
      fail = true;
    if (fail)
.....

On UnixWare 7.1.1 test-vasprintf-posix fails.
.....
/opt/src/gnu/m4-1.4.10/tests/test-vasprintf-posix.c:203: assertion
failed
/bin/ksh: line 1: 13351: Abort(coredump)
FAIL: test-vasprintf-posix
.....
I have not found a fix for this yet.

The build fails on Caldera OpenLinux 3.1.1
Here is a snipet of the build log
....
make  all-am
make[2]: Entering directory `/usr/local/src/gnu/m4-1.3.10/lib'
source='/opt/src/gnu/m4-1.4.10/lib/gl_array_list.c' object='gl_array_list.o' libtool=no \
DEPDIR=.deps depmode=none /bin/ksh /opt/src/gnu/m4-1.4.10/depcomp \
cc  -I. -I/opt/src/gnu/m4-1.4.10/lib     -g -c /opt/src/gnu/m4-1.4.10/lib/gl_array_list.c
In file included from /opt/src/gnu/m4-1.4.10/lib/gl_array_list.h:22,
                  from /opt/src/gnu/m4-1.4.10/lib/gl_array_list.c:22:
/opt/src/gnu/m4-1.4.10/lib/gl_list.h:99: parse error before `*'
/opt/src/gnu/m4-1.4.10/lib/gl_list.h:99: `_Bool' declared as function returning a function
/opt/src/gnu/m4-1.4.10/lib/gl_list.h:133: parse error before `gl_listelement_equals_fn'
....
I suspect 1.4.10 may not have been tested using gcc version 2.95.2.

The build fails on OpenServer 5.0.4 using the native compiler.
.....
source='/opt/src/gnu/m4-1.4.10/lib/isnanf.c' object='isnanf.o' libtool=no \
DEPDIR=.deps depmode=none /bin/ksh /opt/src/gnu/m4-1.4.10/depcomp \
cc  -I. -I/opt/src/gnu/m4-1.4.10/lib     -g -c /opt/src/gnu/m4-1.4.10/lib/isnanf.c
"/opt/src/gnu/m4-1.4.10/lib/isnan.c", line 121: error: division by 0
"/opt/src/gnu/m4-1.4.10/lib/isnan.c", line 122: error: division by 0
"/opt/src/gnu/m4-1.4.10/lib/isnan.c", line 123: error: division by 0
gmake[2]: *** [isnanf.o] Error 1
.....
If I switch to a gcc build, it doesn't fail until building the test
programs.
.....
source='/opt/src/gnu/m4-1.4.10/tests/test-stdint.c' object='test-stdint.o' libtool=no \
DEPDIR=.deps depmode=gcc /bin/ksh /opt/src/gnu/m4-1.4.10/depcomp \
gcc  -I. -I../lib -I/opt/src/gnu/m4-1.4.10/tests  -I. -I/opt/src/gnu/m4-1.4.10/tests -I..
-I/opt/src/gnu/m4-1.4.10/tests/.. -I../lib -I/opt/src/gnu/m4-1.4.10/tests/../lib   -g -O2 -c /opt/src/gnu/m4-1.4.10/tests/test-stdint.c
/opt/src/gnu/m4-1.4.10/tests/test-stdint.c:309: negative width in bit-field `verify_error_if_negative_size__'
/opt/src/gnu/m4-1.4.10/tests/test-stdint.c:310: negative width in bit-field `verify_error_if_negative_size__'
gmake[4]: *** [test-stdint.o] Error 1
.....

If you have any ideas how to fix the test-vasprintf-posix failure on
the UnixWare 7.1.1 box, I'd love to hear them.

Thanks.

--

-- 
Tim Rice				Multitalents	(707) 887-1469
tim <at> multitalents.net
Eric Blake | 29 Oct 03:58 2007
Picon

Re: m4-1.4.10


According to Tim Rice on 10/28/2007 7:15 PM:
> 
> It looks like there are some regressions in 1.4.10 on some of my platforms.

Thanks for the report.  Many of these issues have already been fixed in
gnulib, and will thus be in m4 1.4.11 when I release that.  And for those
that aren't, I'm forwarding your entire mail to the gnulib list.  Would
you be interested in me making a snapshot for you to test?

> 
> On my UnixWare 7.1.1 box I needed to patch lib/fpurge.c and lib/freading.c
> just to get it to compile. I got errors like
> ....
> UX:acomp: ERROR: "/opt/src/gnu/m4-1.4.10/lib/fpurge.c", line 95:
> undefined struct/union member: _ptr
> ....
> 
> Looking at stdio.h I see
> ....
> typedef struct _FILE_
> {
>     int             __cnt;          /* num. avail. characters in buffer */
>     unsigned char   *__ptr;         /* next character from/to here */
>     unsigned char   *__base;        /* the buffer (not really) */
>     unsigned char   __flag;         /* the state of the stream */
>     unsigned char   __file;         /* file descriptor (not necessarily) */
>     unsigned char   __buf[2];       /* micro buffer as a fall-back */
> } FILE;
> ....
> so I patched like this
> ....
> --- m4-1.4.10/lib/fpurge.c.old    2007-07-05 04:48:00.000000000 -0700
> +++ m4-1.4.10/lib/fpurge.c    2007-10-19 19:59:28.758956004 -0700
>  <at>  <at>  -92,9 +92,9  <at>  <at> 
>      }
>    return 0;
>  # elif defined _IOERR               /* AIX, HP-UX, IRIX, OSF/1,
> Solaris, mingw */
> -  fp->_ptr = fp->_base;
> -  if (fp->_ptr != NULL)
> -    fp->_cnt = 0;
> +  fp->__ptr = fp->__base;
> +  if (fp->__ptr != NULL)
> +    fp->__cnt = 0;
>    return 0;
>  # elif defined __UCLIBC__           /* uClibc */
>  #  ifdef __STDIO_BUFFERS
> --- m4-1.4.10/lib/freading.c.old    2007-07-05 04:48:00.000000000 -0700
> +++ m4-1.4.10/lib/freading.c    2007-10-22 20:44:16.222527001 -0700
>  <at>  <at>  -37,7 +37,7  <at>  <at> 
>  #elif defined __sferror             /* FreeBSD, NetBSD, OpenBSD, MacOS
> X, Cygwin */
>    return (fp->_flags & __SRD) != 0;
>  #elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1,
> Solaris, mingw */
> -  return (fp->_flag & _IOREAD) != 0;
> +  return (fp->__flag & _IOREAD) != 0;
>  #elif defined __UCLIBC__            /* uClibc */
>    return (fp->__modeflags & (__FLAG_READONLY | __FLAG_READING)) != 0;
>  #else
> ....
> 
> Additionally my OpenServer 5.0.4 box has no fseeko so it needed
> lib/fseeko.c patched.
> .....
> --- lib/fseeko.c.old    2007-07-05 04:48:02.000000000 -0700
> +++ lib/fseeko.c    2007-10-23 14:25:22.851251004 -0700
>  <at>  <at>  -80,8 +80,8  <at>  <at> 
>    if (fp_->_ptr == fp_->_base
>        && (fp_->_ptr == NULL || fp_->_cnt == 0))
>  # else
> -  if (fp->_ptr == fp->_base
> -      && (fp->_ptr == NULL || fp->_cnt == 0))
> +  if (fp->__ptr == fp->__base
> +      && (fp->__ptr == NULL || fp->__cnt == 0))
>  # endif
>  #elif defined __UCLIBC__            /* uClibc */
>    if (((fp->__modeflags & __FLAG_WRITING) == 0
> .....
> 
> The comments in that section of code mention AIX, HP-UX, IRIX, OSF/1,
> Solaris, & mingw. Of those I only have Solaris here and with the above
> patches Solaris 8 & 10 still build fine and pass tests.
> 
> On UnixWare 7.1.1 test-closein.sh fails.
> ....
> ./test-closein: error closing file: Illegal seek
> FAIL: test-closein.sh
> ....
> After reading up on the OpenGroup's onlinepubs for fseeko(), I came
> up with this patch.
> 
> .....
> --- lib/closein.c.old    2007-05-30 18:30:16.000000000 -0700
> +++ lib/closein.c    2007-10-22 22:32:48.958287004 -0700
>  <at>  <at>  -82,8 +82,10  <at>  <at> 
> 
>    /* Only attempt flush if stdin is seekable, as fflush is entitled to
>       fail on non-seekable streams.  */
> +  errno = 0;
>    if (fseeko (stdin, 0, SEEK_CUR) == 0 && fflush (stdin) != 0)
> -    fail = true;
> +    if(errno != ESPIPE)
> +        fail = true;
>    if (close_stream (stdin) != 0)
>      fail = true;
>    if (fail)
> .....
> 
> On UnixWare 7.1.1 test-vasprintf-posix fails.
> .....
> /opt/src/gnu/m4-1.4.10/tests/test-vasprintf-posix.c:203: assertion
> failed
> /bin/ksh: line 1: 13351: Abort(coredump)
> FAIL: test-vasprintf-posix
> .....
> I have not found a fix for this yet.
> 
> 
> The build fails on Caldera OpenLinux 3.1.1
> Here is a snipet of the build log
> ....
> make  all-am
> make[2]: Entering directory `/usr/local/src/gnu/m4-1.3.10/lib'
> source='/opt/src/gnu/m4-1.4.10/lib/gl_array_list.c'
> object='gl_array_list.o' libtool=no \
> DEPDIR=.deps depmode=none /bin/ksh /opt/src/gnu/m4-1.4.10/depcomp \
> cc  -I. -I/opt/src/gnu/m4-1.4.10/lib     -g -c
> /opt/src/gnu/m4-1.4.10/lib/gl_array_list.c
> In file included from /opt/src/gnu/m4-1.4.10/lib/gl_array_list.h:22,
>                  from /opt/src/gnu/m4-1.4.10/lib/gl_array_list.c:22:
> /opt/src/gnu/m4-1.4.10/lib/gl_list.h:99: parse error before `*'
> /opt/src/gnu/m4-1.4.10/lib/gl_list.h:99: `_Bool' declared as function
> returning a function
> /opt/src/gnu/m4-1.4.10/lib/gl_list.h:133: parse error before
> `gl_listelement_equals_fn'
> ....
> I suspect 1.4.10 may not have been tested using gcc version 2.95.2.
> 
> 
> The build fails on OpenServer 5.0.4 using the native compiler.
> .....
> source='/opt/src/gnu/m4-1.4.10/lib/isnanf.c' object='isnanf.o' libtool=no \
> DEPDIR=.deps depmode=none /bin/ksh /opt/src/gnu/m4-1.4.10/depcomp \
> cc  -I. -I/opt/src/gnu/m4-1.4.10/lib     -g -c
> /opt/src/gnu/m4-1.4.10/lib/isnanf.c
> "/opt/src/gnu/m4-1.4.10/lib/isnan.c", line 121: error: division by 0
> "/opt/src/gnu/m4-1.4.10/lib/isnan.c", line 122: error: division by 0
> "/opt/src/gnu/m4-1.4.10/lib/isnan.c", line 123: error: division by 0
> gmake[2]: *** [isnanf.o] Error 1
> .....
> If I switch to a gcc build, it doesn't fail until building the test
> programs.
> .....
> source='/opt/src/gnu/m4-1.4.10/tests/test-stdint.c'
> object='test-stdint.o' libtool=no \
> DEPDIR=.deps depmode=gcc /bin/ksh /opt/src/gnu/m4-1.4.10/depcomp \
> gcc  -I. -I../lib -I/opt/src/gnu/m4-1.4.10/tests  -I.
> -I/opt/src/gnu/m4-1.4.10/tests -I.. -I/opt/src/gnu/m4-1.4.10/tests/..
> -I../lib -I/opt/src/gnu/m4-1.4.10/tests/../lib   -g -O2 -c
> /opt/src/gnu/m4-1.4.10/tests/test-stdint.c
> /opt/src/gnu/m4-1.4.10/tests/test-stdint.c:309: negative width in
> bit-field `verify_error_if_negative_size__'
> /opt/src/gnu/m4-1.4.10/tests/test-stdint.c:310: negative width in
> bit-field `verify_error_if_negative_size__'
> gmake[4]: *** [test-stdint.o] Error 1
> .....
> 
> If you have any ideas how to fix the test-vasprintf-posix failure on
> the UnixWare 7.1.1 box, I'd love to hear them.
> 
> Thanks.
> 

--
Don't work too hard, make some time for fun as well!

Eric Blake             ebb9 <at> byu.net

Gmane