bug-coreutils
[Top][All Lists]
Advanced

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

Test report coreutils-5.3.0 on Solaris 7


From: Eric Blake
Subject: Test report coreutils-5.3.0 on Solaris 7
Date: Wed, 12 Jan 2005 07:46:36 -0700
User-agent: Mozilla Thunderbird 1.0 (Windows/20041206)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I have access to an old Solaris 7 box at work, which has gcc 2.8.1.  When
compiled with CFLAGS='', all non-root tests pass or are skipped.  But with
the default CFLAGS='-g -O2', gcc miscompiles putchar() (basically, it
replaces '\n' with '\0').  This breaks, among other things, the `yes'
executable, and led to a runaway process in the testsuite that consumed my
entire disk quota.  A truss log of a stripped-down yes.c is attached, to
show how putchar() is miscompiled when optimized.  Is it worth putting a
workaround into coreutils to accomodate this old platform/gcc combination,
or should I just try again using the system cc or else upgrading gcc to
the 3.x series?

$ uname -a
SunOS voatm1 5.7 Generic_106541-02 sun4u sparc SUNW,Ultra-5_10 Solaris
$ config.guess
sparc-sun-solaris2.7
$ gcc -v
Reading specs from
/software/gnu/gcc/2.8.1/sun4os5/lib/gcc-lib/sparc-sun-solaris2.6/2.8.1/specs
gcc version 2.8.1

- --
Life is short - so eat dessert first!

Eric Blake             address@hidden
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (Cygwin)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFB5ThM84KuGfSFAYARAnEgAKCEGlpvGRnSSBmcJAtHOFxlIxqb2ACgz88o
KDULazOEbDCReF7srKebJsc=
=rcIU
-----END PGP SIGNATURE-----
# cat myyes.c
/* yes - output a string repeatedly until killed
   Copyright (C) 1991-1997, 1999-2005 Free Software Foundation, Inc.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */

/* David MacKenzie <address@hidden> */

#include <stdio.h>
#include <sys/types.h>
#include <errno.h>

#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1
#define _(str) str
void
error(int dummy, int err, const char* str)
{
   puts("myyes: ");
   errno = err;
   perror(str);
}

/* The official name of this program (e.g., no `g' prefix).  */
#define PROGRAM_NAME "yes"

#define AUTHORS "David MacKenzie"

/* The name this program was run with. */
char *program_name;

void
usage (int status)
{
  if (status != EXIT_SUCCESS)
    fprintf (stderr, _("Try `%s --help' for more information.\n"),
             program_name);
  else
    {
      printf (_("\
Usage: %s [STRING]...\n\
  or:  %s OPTION\n\
"),
              program_name, program_name);

      fputs (_("\
Repeatedly output a line with all specified STRING(s), or `y'.\n\
\n\
"), stdout);
/*       fputs (HELP_OPTION_DESCRIPTION, stdout); */
/*       fputs (VERSION_OPTION_DESCRIPTION, stdout); */
/*       printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT); */
    }
  exit (status);
}

int
main (int argc, char **argv)
{
   int j;
  program_name = argv[0];
  if (argc <= optind)
    {
      optind = argc;
      argv[argc++] = "y";
    }

  for (j = 0;j < 512;j++)
    {
      int i;
      for (i = optind; i < argc; i++)
        if (fputs (argv[i], stdout) == EOF
            || putchar (i == argc - 1 ? '\n' : ' ') == EOF)
          {
            error (0, errno, _("standard output"));
            exit (EXIT_FAILURE);
          }
    }
}
# gcc -o myyes myyes.c
# truss myyes 2>&1
execve("myyes", 0xFFBEF8EC, 0xFFBEF8F4)  argc = 1
open("/dev/zero", O_RDONLY)                     = 3
mmap(0x00000000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE, 3, 0) = 
0xFF3A0000
open("/usr/dt/lib/libc.so.1", O_RDONLY)         Err#2 ENOENT
open("/usr/openwin/lib/libc.so.1", O_RDONLY)    Err#2 ENOENT
open("/usr/lib/libc.so.1", O_RDONLY)            = 4
fstat(4, 0xFFBEF484)                            = 0
mmap(0x00000000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0xFF390000
mmap(0x00000000, 761856, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0xFF280000
munmap(0xFF324000, 57344)                       = 0
mmap(0xFF332000, 25540, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 
4, 663552) = 0xFF332000
close(4)                                        = 0
open("/usr/dt/lib/libdl.so.1", O_RDONLY)        Err#2 ENOENT
open("/usr/openwin/lib/libdl.so.1", O_RDONLY)   Err#2 ENOENT
open("/usr/lib/libdl.so.1", O_RDONLY)           = 4
fstat(4, 0xFFBEF484)                            = 0
mmap(0xFF390000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 4, 0) = 
0xFF390000
close(4)                                        = 0
open("/usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1", O_RDONLY) = 4
fstat(4, 0xFFBEF264)                            = 0
mmap(0x00000000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0xFF380000
mmap(0x00000000, 16384, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0xFF370000
close(4)                                        = 0
close(3)                                        = 0
munmap(0xFF380000, 8192)                        = 0
ioctl(1, TCGETA, 0xFFBEF644)                    Err#25 ENOTTY
fstat64(1, 0xFFBEF6B8)                          = 0
brk(0x00021B48)                                 = 0
brk(0x00025B48)                                 = 0
llseek(0, 0, SEEK_CUR)                          = 270989
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
write(1, " y\n y\n y\n y\n y\n y\n".., 1024)    = 1024
_exit(1)
# gcc -o myyes -O2 myyes.c
# truss myyes 2>&1
execve("myyes", 0xFFBEF8EC, 0xFFBEF8F4)  argc = 1
open("/dev/zero", O_RDONLY)                     = 3
mmap(0x00000000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE, 3, 0) = 
0xFF3A0000
open("/usr/dt/lib/libc.so.1", O_RDONLY)         Err#2 ENOENT
open("/usr/openwin/lib/libc.so.1", O_RDONLY)    Err#2 ENOENT
open("/usr/lib/libc.so.1", O_RDONLY)            = 4
fstat(4, 0xFFBEF484)                            = 0
mmap(0x00000000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0xFF390000
mmap(0x00000000, 761856, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0xFF280000
munmap(0xFF324000, 57344)                       = 0
mmap(0xFF332000, 25540, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 
4, 663552) = 0xFF332000
close(4)                                        = 0
open("/usr/dt/lib/libdl.so.1", O_RDONLY)        Err#2 ENOENT
open("/usr/openwin/lib/libdl.so.1", O_RDONLY)   Err#2 ENOENT
open("/usr/lib/libdl.so.1", O_RDONLY)           = 4
fstat(4, 0xFFBEF484)                            = 0
mmap(0xFF390000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 4, 0) = 
0xFF390000
close(4)                                        = 0
open("/usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1", O_RDONLY) = 4
fstat(4, 0xFFBEF264)                            = 0
mmap(0x00000000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0xFF380000
mmap(0x00000000, 16384, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0xFF370000
close(4)                                        = 0
close(3)                                        = 0
munmap(0xFF380000, 8192)                        = 0
ioctl(1, TCGETA, 0xFFBEF64C)                    Err#25 ENOTTY
fstat64(1, 0xFFBEF6C0)                          = 0
brk(0x00021A28)                                 = 0
brk(0x00025A28)                                 = 0
llseek(0, 0, SEEK_CUR)                          = 272401
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyywrite(1,
 " y\0 y\0 y\0 y\0 y\0 y\0".., 1024)    = 1024
_exit(2)
# gcc -v
Reading specs from 
/software/gnu/gcc/2.8.1/sun4os5/lib/gcc-lib/sparc-sun-solaris2.6/2.8.1/specs
gcc version 2.8.1

reply via email to

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