bug#34817: coreutils 8.31 compile failure on rhel5
Hi Paul, > Making the variable 'static' might cause some compilers to notice that > the variable never changes, so it's a constant, so it can be folded, and > then they (mistakenly) convert -0.0 to 0.0. Originally the variable was > extern and the extern hack prevents most compilers from doing this > incorrect optimization (unless they're doing whole-program optimization, > which typically they aren't). Since making the variable static removed > the hack, I decided it was clearer to use the larger change, which makes > it more obvious that we aren't trying to work around this potential > problem any more. Yes, I perfectly agree. When I said "a simpler fix", I did not mean "a better fix". Your fix is the more reliable one! Bruno
bug#34817: coreutils 8.31 compile failure on rhel5
On 3/13/19 11:35 AM, Bruno Haible wrote: > A simpler fix would have been to mark the 'minus_zero' variable as 'static': Yes, that would have been a smaller change. Although I originally did that, there's a reason I went for the larger change. Making the variable 'static' might cause some compilers to notice that the variable never changes, so it's a constant, so it can be folded, and then they (mistakenly) convert -0.0 to 0.0. Originally the variable was extern and the extern hack prevents most compilers from doing this incorrect optimization (unless they're doing whole-program optimization, which typically they aren't). Since making the variable static removed the hack, I decided it was clearer to use the larger change, which makes it more obvious that we aren't trying to work around this potential problem any more. I hope the issue I mentioned is not a real problem. If it is, we can go back to the old code except rename the variable so that it's called "lminus_zero" for the long double case. I considered doing that too, but that's even more confusing and I hope we don't have to be that confusing.
bug#34817: coreutils 8.31 compile failure on rhel5
On 3/11/19 4:54 PM, Jesse wrote: > coreutils 8.31 compiles cleanly (warnings, but no errors) on rhel5 x32 > and x64 with the provided patch applied. Thanks, closing the bug report.
bug#34817: coreutils 8.31 compile failure on rhel5
> > On 3/11/19 10:16 AM, Jesse wrote: > > The latest coreutils no longer compiles cleanly on rhel5 x32 and x64 > > (I know rhel5 is EOL). > > Thanks for the bug report. I installed the attached patch into Gnulib. > Would you please give it a try and report back? I can't easily test on > RHEL 5. Thanks. Hello, coreutils 8.31 compiles cleanly (warnings, but no errors) on rhel5 x32 and x64 with the provided patch applied. That you for the prompt response! Jesse
bug#34817: coreutils 8.31 compile failure on rhel5
Hello, The latest coreutils no longer compiles cleanly on rhel5 x32 and x64 (I know rhel5 is EOL). Thanks! Jesse rhel5-x64-build:~ % uname -a; cat /etc/redhat-release Linux rhel5-x64-build.colorado.edu 2.6.18-419.el5 #1 SMP Wed Feb 22 22:40:57 EST 2017 x86_64 x86_64 x86_64 GNU/Linux Red Hat Enterprise Linux Client release 5.11 (Tikanga) rhel5-x64-build:~ % cd /tmp; tar -Jxpf coreutils-8.31.tar.xz; cd coreutils-8.31; ./configure; make -j 64 checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether make supports nested variables... (cached) yes checking for style of include used by make... GNU checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to enable C11 features... unsupported checking for gcc option to enable C99 features... -std=gnu99 checking dependency style of gcc -std=gnu99... gcc3 checking how to run the C preprocessor... gcc -std=gnu99 -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking whether gcc -std=gnu99 needs -traditional... no checking for ranlib... ranlib checking whether ln -s works... yes checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking minix/config.h usability... no checking minix/config.h presence... no checking for minix/config.h... no checking whether it is safe to define __EXTENSIONS__... yes checking whether _XOPEN_SOURCE should be defined... no checking for Minix Amsterdam compiler... no checking for ar... ar checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking for _LARGEFILE_SOURCE value needed for large files... no checking for special C compiler options needed for large files... no checking for _FILE_OFFSET_BITS value needed for large files... no configure: autobuild project... GNU coreutils configure: autobuild revision... 8.31 configure: autobuild hostname... rhel5-x64-build.colorado.edu configure: autobuild timestamp... 20190311T170459Z checking for fchmod... yes checking for pathconf... yes checking for btowc... yes checking for uselocale... yes checking for canonicalize_file_name... yes checking for realpath... yes checking for readlinkat... yes checking for chown... yes checking for fchown... yes checking for _set_invalid_parameter_handler... no checking for fchdir... yes checking for fdopendir... yes checking for faccessat... yes checking for explicit_bzero... no checking for posix_fadvise... yes checking for fchmodat... yes checking for lchmod... no checking for fcntl... yes checking for symlink... yes checking for mempcpy... yes checking for fnmatch... yes checking for isblank... yes checking for iswctype... yes checking for mbsrtowcs... yes checking for wmemchr... yes checking for wmemcpy... yes checking for wmempcpy... yes checking for fpurge... no checking for __fpurge... yes checking for __freadahead... no checking for __freading... yes checking for __freadptr... no checking for __freadptrinc... no checking for __fseterr... no checking for fstatat... yes checking for fsync... yes checking for strtof... yes checking for ftruncate... yes checking for openat... yes checking for fstatfs... yes checking for futimens... no checking for getdelim... yes checking for getdtablesize... yes checking for microuptime... no checking for nanouptime... no checking for getlogin... yes checking for flockfile... yes checking for funlockfile... yes checking for getpass... yes checking for __fsetlocking... yes checking for getprogname... no checking for getexecname... no checking for gettimeofday... yes checking for getusershell... yes checking for iswcntrl... yes checking for iswblank... yes checking for link... yes checking for readlink... yes checking for linkat... yes checking for lstat... yes checking for mbsinit... yes checking for mbrtowc... yes checking for mbrlen... yes checking for mbslen... no checking for isascii... yes checking for mprotect... yes checking for getgrouplist... yes checking for mknod... yes checking for mkostemp... no checking for mkstemp... yes checking for tzset... yes checking for nl_langinfo... yes checking for pipe... yes checking for pipe2... no checking for utmpname... yes checking for utmpxname... yes