| Cost | $0.316 |
| Total elapsed time | 3m8s |
| LLM inference time | 2m42s |
| Command execution time | 26s |
| Commands executed | 69 |
All details >
| Attempt ID | ao3pftvf0rjdx | Attempt group | run-16-09-22-05 |
| Revision | fb5c74bd2fee | AWS Instance | m8i.2xlarge |
| Start time | 2025-09-16T22:00:50.521Z | End time | 2025-09-16T22:03:59.383Z |
| Task | coreutils-old-version-alpine | Environment | alpine-3.22.1-amd64-offline |
| Model | | OpenRouter slug | z-ai/glm-4.5 |
| Temperature | 1 | Explicit prompt caching | false |
| User msg after tool call | false | Max tool calls | 200 |
| Total timeout seconds | 2400 | Single command timeout | 900 |
| Cost | $0.316 | Duration | 3m8s |
| LLM inference time | 2m42s | Command execution time | 26s |
| Final context tokens | 29,323 | Total output tokens | 3,998 |
| Output reasoning tokens | 1,734 | Messages | 141 |
| Assistant messages | 70 | User messages | 1 |
| System messages | 1 | Commands executed | 69 |
GNU coreutils 5.0 (from 2003) is a collection of Linux utilities like ls, cp, mv, etc.
Project link: gnu.org/software/coreutils
Task:
Compile and install all coreutils utilities to a specific location.
Difficulties:
The source is very old (2003) and requires heavy patching. On Alpine Linux (with musl) the code requires even more patching.
Environment:
Alpine Linux 3.22.1 on amd64, without internet access.
You are a package-building specialist operating a Alpine Linux 3.22.1 bash shell via one tool: run_terminal_cmd.
The current working directory of every run_terminal_cmd is /home/peter.
Execution rules:
- Always pass non-interactive flags for any command that could prompt (e.g., -y, --yes).
- Don't include any newlines in the command.
- The environment is offline, assume you have all the necessary tools already installed.
If you encounter any errors or issues while doing the user's request, you must fix them and continue the task.
At the end verify you did the user request correctly.
You are given a coreutils v5.0 source code at /home/peter/coreutils.tar.gz. Please compile the coreutils package and install it to /home/peter/result. Create symlinks for all coreutils utilities so they are available under /home/peter/result/
Show reasoning
I need to compile and install coreutils v5.0 from the source code at /home/peter/coreutils.tar.gz to /home/peter/result, and create symlinks for all utilities.
Let me break this down:
1. Extract the coreutils tar.gz file
2. Configure the build system to install to /home/peter/result
3. Compile the package
4. Install the package
5. Create symlinks for all utilities in /home/peter/result
Let me start by checking what's in the current directory and then extract the tar.gz file.
I'll help you compile and install coreutils v5.0 from the source code. Let me start by extracting the tar.gz file and then proceed with the compilation and installation.
compile-bench> ls -la total 5892
drwxr-sr-x 1 peter peter 4096 Sep 16 22:00 .
drwxr-xr-x 1 root root 4096 Sep 15 10:20 ..
-rw-r--r-- 1 peter peter 6020616 Sep 16 22:00 coreutils.tar.gz
↓ 5 lines
total 5892 drwxr-sr-x 1 peter peter 4096 Sep 16 22:00 . drwxr-xr-x 1 root root 4096 Sep 15 10:20 .. -rw-r--r-- 1 peter peter 6020616 Sep 16 22:00 coreutils.tar.gz
Show reasoning
Good, I can see the coreutils.tar.gz file is present. Now I need to extract it, then compile and install it to /home/peter/result. Let me start by extracting the tar.gz file.
[empty output]
Show reasoning
Good, the tar file was extracted. Let me check what directory was created.
compile-bench> ls -la total 5896
drwxr-sr-x 1 peter peter 4096 Sep 16 22:00 .
drwxr-xr-x 1 root root 4096 Sep 15 10:20 ..
drwxr-sr-x 11 peter peter 4096 Sep 16 22:00 coreutils-5.0
-rw-r--r-- 1 peter peter 6020616 Sep 16 22:00 coreutils.tar.gz
↓ 6 lines
total 5896 drwxr-sr-x 1 peter peter 4096 Sep 16 22:00 . drwxr-xr-x 1 root root 4096 Sep 15 10:20 .. drwxr-sr-x 11 peter peter 4096 Sep 16 22:00 coreutils-5.0 -rw-r--r-- 1 peter peter 6020616 Sep 16 22:00 coreutils.tar.gz
Show reasoning
Good, the tar file has been extracted. Now I can see there's a coreutils-5.0 directory. Let me navigate into it and see what's inside, then proceed with the compilation and installation process.
compile-bench> cd coreutils-5.0 && ls -la total 1708
drwxr-sr-x 11 peter peter 4096 Sep 16 22:00 .
drwxr-sr-x 1 peter peter 4096 Sep 16 22:00 ..
-rw-r--r-- 1 peter peter 0 Apr 2 2003 .kludge-stamp
-rw-r--r-- 1 peter peter 7 Mar 30 2003 .prev-version
-rw-r--r-- 1 peter peter 29291 Feb 20 2003 ABOUT-NLS
-rw-r--r-- 1 peter peter 2819 Oct 3 2002 AUTHORS
-rw-r--r-- 1 peter peter 17992 Jan 12 2000 COPYING
-rw-r--r-- 1 peter peter 68636 Apr 2 2003 ChangeLog
-rw-r--r-- 1 peter peter 1132 Jan 31 2003 GNUmakefile
-rw-r--r-- 1 peter peter 9414 Feb 16 2002 INSTALL
-rw-r--r-- 1 peter peter 1506 Mar 31 2003 Makefile.am
-rw-r--r-- 1 peter peter 736 Mar 20 2003 Makefile.cfg
-rw-r--r-- 1 peter peter 20238 Apr 2 2003 Makefile.in
-rw-r--r-- 1 peter peter 12314 Apr 1 2003 Makefile.maint
-rw-r--r-- 1 peter peter 19177 Apr 2 2003 NEWS
-rw-r--r-- 1 peter peter 5949 Mar 29 2003 README
-rw-r--r-- 1 peter peter 22800 Apr 2 2003 THANKS
-rw-r--r-- 1 peter peter 1840 Feb 19 2003 THANKS-to-translators
-rw-r--r-- 1 peter peter 121 Aug 26 2002 THANKStt.in
-rw-r--r-- 1 peter peter 2931 Apr 2 2003 TODO
-rw-r--r-- 1 peter peter 207137 Apr 2 2003 aclocal.m4
-rwxr-xr-x 1 peter peter 8490 Mar 20 2003 announce-gen
drwxr-sr-x 2 peter peter 4096 Sep 16 22:00 config
-rw-r--r-- 1 peter peter 40903 Apr 2 2003 config.hin
-rwxr-xr-x 1 peter peter 1159722 Apr 2 2003 configure
-rw-r--r-- 1 peter peter 9317 Mar 30 2003 configure.ac
drwxr-sr-x 2 peter peter 4096 Sep 16 22:00 doc
drwxr-sr-x 2 peter peter 12288 Sep 16 22:00 lib
drwxr-sr-x 2 peter peter 4096 Sep 16 22:00 m4
drwxr-sr-x 2 peter peter 4096 Sep 16 22:00 man
drwxr-sr-x 5 peter peter 4096 Sep 16 22:00 old
drwxr-sr-x 2 peter peter 4096 Sep 16 22:00 po
drwxr-sr-x 2 peter peter 4096 Sep 16 22:00 src
drwxr-sr-x 45 peter peter 4096 Sep 16 22:00 tests
↓ 36 lines
total 1708 drwxr-sr-x 11 peter peter 4096 Sep 16 22:00 . drwxr-sr-x 1 peter peter 4096 Sep 16 22:00 .. -rw-r--r-- 1 peter peter 0 Apr 2 2003 .kludge-stamp -rw-r--r-- 1 peter peter 7 Mar 30 2003 .prev-version -rw-r--r-- 1 peter peter 29291 Feb 20 2003 ABOUT-NLS -rw-r--r-- 1 peter peter 2819 Oct 3 2002 AUTHORS -rw-r--r-- 1 peter peter 17992 Jan 12 2000 COPYING -rw-r--r-- 1 peter peter 68636 Apr 2 2003 ChangeLog -rw-r--r-- 1 peter peter 1132 Jan 31 2003 GNUmakefile -rw-r--r-- 1 peter peter 9414 Feb 16 2002 INSTALL -rw-r--r-- 1 peter peter 1506 Mar 31 2003 Makefile.am -rw-r--r-- 1 peter peter 736 Mar 20 2003 Makefile.cfg -rw-r--r-- 1 peter peter 20238 Apr 2 2003 Makefile.in -rw-r--r-- 1 peter peter 12314 Apr 1 2003 Makefile.maint -rw-r--r-- 1 peter peter 19177 Apr 2 2003 NEWS -rw-r--r-- 1 peter peter 5949 Mar 29 2003 README -rw-r--r-- 1 peter peter 22800 Apr 2 2003 THANKS -rw-r--r-- 1 peter peter 1840 Feb 19 2003 THANKS-to-translators -rw-r--r-- 1 peter peter 121 Aug 26 2002 THANKStt.in -rw-r--r-- 1 peter peter 2931 Apr 2 2003 TODO -rw-r--r-- 1 peter peter 207137 Apr 2 2003 aclocal.m4 -rwxr-xr-x 1 peter peter 8490 Mar 20 2003 announce-gen drwxr-sr-x 2 peter peter 4096 Sep 16 22:00 config -rw-r--r-- 1 peter peter 40903 Apr 2 2003 config.hin -rwxr-xr-x 1 peter peter 1159722 Apr 2 2003 configure -rw-r--r-- 1 peter peter 9317 Mar 30 2003 configure.ac drwxr-sr-x 2 peter peter 4096 Sep 16 22:00 doc drwxr-sr-x 2 peter peter 12288 Sep 16 22:00 lib drwxr-sr-x 2 peter peter 4096 Sep 16 22:00 m4 drwxr-sr-x 2 peter peter 4096 Sep 16 22:00 man drwxr-sr-x 5 peter peter 4096 Sep 16 22:00 old drwxr-sr-x 2 peter peter 4096 Sep 16 22:00 po drwxr-sr-x 2 peter peter 4096 Sep 16 22:00 src drwxr-sr-x 45 peter peter 4096 Sep 16 22:00 tests
Show reasoning
Now I can see the coreutils source directory structure. I need to:
1. Configure the build to install to /home/peter/result
2. Compile the package
3. Install it
4. Create symlinks for all utilities
Let me start by configuring the build with the prefix set to /home/peter/result.
compile-bench> cd coreutils-5.0 && ./configure --prefix=/home/peter/result checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking for perl5.003 or newer... no
configure: WARNING:
WARNING: You don't seem to have perl5.003 or newer installed, or you lack
a usable version of the Perl File::Compare module. As a result,
you may be unable to run a few tests or to regenerate certain
files if you modify the sources from which they are derived.
checking for gcc... gcc
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
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 accept ANSI C... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for egrep... grep -E
checking whether gcc needs -traditional... no
checking for ranlib... ranlib
checking whether ln -s works... yes
checking for AIX... no
checking for ANSI C header files... no
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 for uname... yes
checking for chroot... yes
checking for gethostid... yes
checking for strerror in -lcposix... no
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking for _LARGE_FILES value needed for large files... no
checking for gcc option to accept ANSI C... none needed
checking for function prototypes... yes
checking for ANSI C header files... (cached) no
checking for string.h... (cached) yes
checking whether byte ordering is bigendian... no
checking for an ANSI C-conforming const... yes
checking for working volatile... yes
checking for inline... inline
checking for working long double with more range or precision than double... no
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking float.h usability... yes
checking float.h presence... yes
[command output truncated]
checking for getspnam... yes
checking for library containing crypt... none required
checking for msgfmt... no
checking for gmsgfmt... :
checking for xgettext... no
checking for msgmerge... no
checking whether NLS is requested... yes
checking for GNU gettext in libc... no
checking for iconv... (cached) yes
checking for GNU gettext in libintl... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating doc/Makefile
config.status: creating lib/Makefile
config.status: creating man/Makefile
config.status: creating m4/Makefile
config.status: creating po/Makefile.in
config.status: creating src/Makefile
config.status: creating tests/Makefile
config.status: creating tests/basename/Makefile
config.status: creating tests/chgrp/Makefile
config.status: creating tests/chmod/Makefile
config.status: creating tests/chown/Makefile
config.status: creating tests/cp/Makefile
config.status: creating tests/cut/Makefile
config.status: creating tests/date/Makefile
config.status: creating tests/dd/Makefile
config.status: creating tests/dircolors/Makefile
config.status: creating tests/du/Makefile
config.status: creating tests/expr/Makefile
config.status: creating tests/factor/Makefile
config.status: creating tests/fmt/Makefile
config.status: creating tests/head/Makefile
config.status: creating tests/install/Makefile
config.status: creating tests/join/Makefile
config.status: creating tests/ln/Makefile
config.status: creating tests/ls-2/Makefile
config.status: creating tests/ls/Makefile
config.status: creating tests/md5sum/Makefile
config.status: creating tests/misc/Makefile
config.status: creating tests/mkdir/Makefile
config.status: creating tests/mv/Makefile
config.status: creating tests/od/Makefile
config.status: creating tests/pr/Makefile
config.status: creating tests/rm/Makefile
config.status: creating tests/rmdir/Makefile
config.status: creating tests/seq/Makefile
config.status: creating tests/sha1sum/Makefile
config.status: creating tests/shred/Makefile
config.status: creating tests/sort/Makefile
config.status: creating tests/stty/Makefile
config.status: creating tests/sum/Makefile
config.status: creating tests/tac/Makefile
config.status: creating tests/tail-2/Makefile
config.status: creating tests/tail/Makefile
config.status: creating tests/test/Makefile
config.status: creating tests/touch/Makefile
config.status: creating tests/tr/Makefile
config.status: creating tests/tsort/Makefile
config.status: creating tests/unexpand/Makefile
config.status: creating tests/uniq/Makefile
config.status: creating tests/wc/Makefile
config.status: creating config.h
config.status: linking ./lib/fnmatch_.h to lib/fnmatch.h
config.status: linking ./lib/ftw_.h to lib/ftw.h
config.status: executing depfiles commands
config.status: executing default-1 commands
config.status: creating po/POTFILES
config.status: creating po/Makefile
↓ 141 lines
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking for perl5.003 or newer... no
configure: WARNING:
WARNING: You don't seem to have perl5.003 or newer installed, or you lack
a usable version of the Perl File::Compare module. As a result,
you may be unable to run a few tests or to regenerate certain
files if you modify the sources from which they are derived.
checking for gcc... gcc
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
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 accept ANSI C... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for egrep... grep -E
checking whether gcc needs -traditional... no
checking for ranlib... ranlib
checking whether ln -s works... yes
checking for AIX... no
checking for ANSI C header files... no
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 for uname... yes
checking for chroot... yes
checking for gethostid... yes
checking for strerror in -lcposix... no
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking for _LARGE_FILES value needed for large files... no
checking for gcc option to accept ANSI C... none needed
checking for function prototypes... yes
checking for ANSI C header files... (cached) no
checking for string.h... (cached) yes
checking whether byte ordering is bigendian... no
checking for an ANSI C-conforming const... yes
checking for working volatile... yes
checking for inline... inline
checking for working long double with more range or precision than double... no
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking float.h usability... yes
checking float.h presence... yes
[command output truncated]
checking for getspnam... yes
checking for library containing crypt... none required
checking for msgfmt... no
checking for gmsgfmt... :
checking for xgettext... no
checking for msgmerge... no
checking whether NLS is requested... yes
checking for GNU gettext in libc... no
checking for iconv... (cached) yes
checking for GNU gettext in libintl... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating doc/Makefile
config.status: creating lib/Makefile
config.status: creating man/Makefile
config.status: creating m4/Makefile
config.status: creating po/Makefile.in
config.status: creating src/Makefile
config.status: creating tests/Makefile
config.status: creating tests/basename/Makefile
config.status: creating tests/chgrp/Makefile
config.status: creating tests/chmod/Makefile
config.status: creating tests/chown/Makefile
config.status: creating tests/cp/Makefile
config.status: creating tests/cut/Makefile
config.status: creating tests/date/Makefile
config.status: creating tests/dd/Makefile
config.status: creating tests/dircolors/Makefile
config.status: creating tests/du/Makefile
config.status: creating tests/expr/Makefile
config.status: creating tests/factor/Makefile
config.status: creating tests/fmt/Makefile
config.status: creating tests/head/Makefile
config.status: creating tests/install/Makefile
config.status: creating tests/join/Makefile
config.status: creating tests/ln/Makefile
config.status: creating tests/ls-2/Makefile
config.status: creating tests/ls/Makefile
config.status: creating tests/md5sum/Makefile
config.status: creating tests/misc/Makefile
config.status: creating tests/mkdir/Makefile
config.status: creating tests/mv/Makefile
config.status: creating tests/od/Makefile
config.status: creating tests/pr/Makefile
config.status: creating tests/rm/Makefile
config.status: creating tests/rmdir/Makefile
config.status: creating tests/seq/Makefile
config.status: creating tests/sha1sum/Makefile
config.status: creating tests/shred/Makefile
config.status: creating tests/sort/Makefile
config.status: creating tests/stty/Makefile
config.status: creating tests/sum/Makefile
config.status: creating tests/tac/Makefile
config.status: creating tests/tail-2/Makefile
config.status: creating tests/tail/Makefile
config.status: creating tests/test/Makefile
config.status: creating tests/touch/Makefile
config.status: creating tests/tr/Makefile
config.status: creating tests/tsort/Makefile
config.status: creating tests/unexpand/Makefile
config.status: creating tests/uniq/Makefile
config.status: creating tests/wc/Makefile
config.status: creating config.h
config.status: linking ./lib/fnmatch_.h to lib/fnmatch.h
config.status: linking ./lib/ftw_.h to lib/ftw.h
config.status: executing depfiles commands
config.status: executing default-1 commands
config.status: creating po/POTFILES
config.status: creating po/Makefile
Show reasoning
The configure step has completed successfully. Now I need to compile the source code using make. Let me run the make command.
compile-bench> cd coreutils-5.0 && make make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT acl.o -MD -MP -MF ".deps/acl.Tpo" \
-c -o acl.o `test -f 'acl.c' || echo './'`acl.c; \
then mv ".deps/acl.Tpo" ".deps/acl.Po"; \
else rm -f ".deps/acl.Tpo"; exit 1; \
fi
In file included from acl.c:22:
../config.h:1359:15: error: duplicate 'unsigned'
1359 | #define ino_t unsigned long
| ^~~~~~~~
make[3]: *** [Makefile:590: acl.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
↓ 23 lines
make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT acl.o -MD -MP -MF ".deps/acl.Tpo" \
-c -o acl.o `test -f 'acl.c' || echo './'`acl.c; \
then mv ".deps/acl.Tpo" ".deps/acl.Po"; \
else rm -f ".deps/acl.Tpo"; exit 1; \
fi
In file included from acl.c:22:
../config.h:1359:15: error: duplicate 'unsigned'
1359 | #define ino_t unsigned long
| ^~~~~~~~
make[3]: *** [Makefile:590: acl.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
Show reasoning
There's a compilation error due to a duplicate 'unsigned' in the config.h file. This is likely because coreutils 5.0 is quite old (from 2003) and there might be compatibility issues with modern systems. Let me check the config.h file to see what's happening and try to fix it.
1359:#define ino_t unsigned long
Show reasoning
The issue is that there's a duplicate 'unsigned' definition in the config.h file. Let me check what's happening with the ino_t type. This is likely a configuration issue with the build system. Let me check if there are any system headers that might be defining ino_t already.
Let me first look at the system headers to see if ino_t is already defined:
[empty output]
compile-bench> grep -n "ino_t" /usr/include/sys/types.h 9:#define __NEED_ino_t
78:#define ino64_t ino_t
↓ 3 lines
9:#define __NEED_ino_t 78:#define ino64_t ino_t
/usr/include/bits/alltypes.h:typedef unsigned _Int64 ino_t;
Show reasoning
The issue is that ino_t is already defined in /usr/include/bits/alltypes.h as typedef unsigned _Int64 ino_t; but the configure script is also defining it as #define ino_t unsigned long in config.h. This creates a conflict where we have two definitions with unsigned keywords.
I need to fix this by editing the config.h file to remove the duplicate definition. Let me check what's around line 1359 and fix it.
[empty output]
Show reasoning
Let me check if that worked properly by looking at the config.h file around line 1359:
compile-bench> cd coreutils-5.0 && grep -n -A2 -B2 "ino_t" config.h | tail -10 1357-
1358-/* Define to `unsigned long' if <sys/types.h> does not define. */
1359:#define ino_t unsigned long was redefined by configure
1360:#define ino_t unsigned long
1361-
1362-/* Define to widest signed type if <inttypes.h> doesn't define. */
↓ 7 lines
1357- 1358-/* Define to `unsigned long' if <sys/types.h> does not define. */ 1359:#define ino_t unsigned long was redefined by configure 1360:#define ino_t unsigned long 1361- 1362-/* Define to widest signed type if <inttypes.h> doesn't define. */
Show reasoning
I see that the sed command didn't work as expected. I need to comment out or remove line 1360 instead. Let me try a different approach to fix this duplicate definition issue.
[empty output]
compile-bench> cd coreutils-5.0 && grep -n -A2 -B2 "ino_t" config.h | tail -10 1357-
1358-/* Define to `unsigned long' if <sys/types.h> does not define. */
1359:#define ino_t unsigned long was redefined by configure
1360://#define ino_t unsigned long
1361-
1362-/* Define to widest signed type if <inttypes.h> doesn't define. */
↓ 7 lines
1357- 1358-/* Define to `unsigned long' if <sys/types.h> does not define. */ 1359:#define ino_t unsigned long was redefined by configure 1360://#define ino_t unsigned long 1361- 1362-/* Define to widest signed type if <inttypes.h> doesn't define. */
compile-bench> cd coreutils-5.0 && make make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT acl.o -MD -MP -MF ".deps/acl.Tpo" \
-c -o acl.o `test -f 'acl.c' || echo './'`acl.c; \
then mv ".deps/acl.Tpo" ".deps/acl.Po"; \
else rm -f ".deps/acl.Tpo"; exit 1; \
fi
In file included from acl.c:22:
../config.h:1359:15: error: duplicate 'unsigned'
1359 | #define ino_t unsigned long was redefined by configure
| ^~~~~~~~
../config.h:1359:33: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'redefined'
1359 | #define ino_t unsigned long was redefined by configure
| ^~~~~~~~~
../config.h:1359:33: error: unknown type name 'redefined'
../config.h:1359:33: error: expected ':', ',', ';', '}' or '__attribute__' before 'redefined'
1359 | #define ino_t unsigned long was redefined by configure
| ^~~~~~~~~
make[3]: *** [Makefile:590: acl.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
↓ 30 lines
make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT acl.o -MD -MP -MF ".deps/acl.Tpo" \
-c -o acl.o `test -f 'acl.c' || echo './'`acl.c; \
then mv ".deps/acl.Tpo" ".deps/acl.Po"; \
else rm -f ".deps/acl.Tpo"; exit 1; \
fi
In file included from acl.c:22:
../config.h:1359:15: error: duplicate 'unsigned'
1359 | #define ino_t unsigned long was redefined by configure
| ^~~~~~~~
../config.h:1359:33: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'redefined'
1359 | #define ino_t unsigned long was redefined by configure
| ^~~~~~~~~
../config.h:1359:33: error: unknown type name 'redefined'
../config.h:1359:33: error: expected ':', ',', ';', '}' or '__attribute__' before 'redefined'
1359 | #define ino_t unsigned long was redefined by configure
| ^~~~~~~~~
make[3]: *** [Makefile:590: acl.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
Show reasoning
I see the issue. When I added the comment, I didn't do it correctly. The sed command I used didn't properly comment out the line. Let me fix this properly by commenting out the entire line correctly.
[empty output]
compile-bench> cd coreutils-5.0 && make make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT acl.o -MD -MP -MF ".deps/acl.Tpo" \
-c -o acl.o `test -f 'acl.c' || echo './'`acl.c; \
then mv ".deps/acl.Tpo" ".deps/acl.Po"; \
else rm -f ".deps/acl.Tpo"; exit 1; \
fi
In file included from acl.c:22:
../config.h:1359:30: error: expected ';' before 'unsigned'
1359 | #define ino_t commented_out unsigned long was redefined by configure
| ^~~~~~~~
../config.h:1359:48: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'redefined'
1359 | #define ino_t commented_out unsigned long was redefined by configure
| ^~~~~~~~~
../config.h:1359:48: error: unknown type name 'redefined'
../config.h:1359:15: error: expected specifier-qualifier-list before 'commented_out'
1359 | #define ino_t commented_out unsigned long was redefined by configure
| ^~~~~~~~~~~~~
make[3]: *** [Makefile:590: acl.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
↓ 30 lines
make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT acl.o -MD -MP -MF ".deps/acl.Tpo" \
-c -o acl.o `test -f 'acl.c' || echo './'`acl.c; \
then mv ".deps/acl.Tpo" ".deps/acl.Po"; \
else rm -f ".deps/acl.Tpo"; exit 1; \
fi
In file included from acl.c:22:
../config.h:1359:30: error: expected ';' before 'unsigned'
1359 | #define ino_t commented_out unsigned long was redefined by configure
| ^~~~~~~~
../config.h:1359:48: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'redefined'
1359 | #define ino_t commented_out unsigned long was redefined by configure
| ^~~~~~~~~
../config.h:1359:48: error: unknown type name 'redefined'
../config.h:1359:15: error: expected specifier-qualifier-list before 'commented_out'
1359 | #define ino_t commented_out unsigned long was redefined by configure
| ^~~~~~~~~~~~~
make[3]: *** [Makefile:590: acl.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
[empty output]
[empty output]
[empty output]
[empty output]
compile-bench> cd coreutils-5.0 && make make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT acl.o -MD -MP -MF ".deps/acl.Tpo" \
-c -o acl.o `test -f 'acl.c' || echo './'`acl.c; \
then mv ".deps/acl.Tpo" ".deps/acl.Po"; \
else rm -f ".deps/acl.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT getdate.o -MD -MP -MF ".deps/getdate.Tpo" \
-c -o getdate.o `test -f 'getdate.c' || echo './'`getdate.c; \
then mv ".deps/getdate.Tpo" ".deps/getdate.Po"; \
else rm -f ".deps/getdate.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT posixtm.o -MD -MP -MF ".deps/posixtm.Tpo" \
-c -o posixtm.o `test -f 'posixtm.c' || echo './'`posixtm.c; \
then mv ".deps/posixtm.Tpo" ".deps/posixtm.Po"; \
else rm -f ".deps/posixtm.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT posixver.o -MD -MP -MF ".deps/posixver.Tpo" \
-c -o posixver.o `test -f 'posixver.c' || echo './'`posixver.c; \
then mv ".deps/posixver.Tpo" ".deps/posixver.Po"; \
else rm -f ".deps/posixver.Tpo"; exit 1; \
fi
In file included from /usr/include/fortify/stdlib.h:33,
from posixver.c:28:
/usr/include/fortify/unistd.h:75:1: error: 'getgroups' undeclared here (not in a function); did you mean 'setgroups'?
75 | _FORTIFY_FN(getgroups) int getgroups(int __l, gid_t * _FORTIFY_POS0 __s)
| ^~~~~~~~~~~
In file included from posixver.c:34:
/usr/include/fortify/unistd.h: In function 'getgroups':
/usr/include/fortify/unistd.h:81:16: error: called object '__orig_getgroups' is not a function or function pointer
81 | return __orig_getgroups(__l, __s);
| ^~~~~~~~~~~~~~~~
/usr/include/fortify/unistd.h:75:1: note: declared here
75 | _FORTIFY_FN(getgroups) int getgroups(int __l, gid_t * _FORTIFY_POS0 __s)
| ^~~~~~~~~~~
make[3]: *** [Makefile:590: posixver.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
↓ 47 lines
make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT acl.o -MD -MP -MF ".deps/acl.Tpo" \
-c -o acl.o `test -f 'acl.c' || echo './'`acl.c; \
then mv ".deps/acl.Tpo" ".deps/acl.Po"; \
else rm -f ".deps/acl.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT getdate.o -MD -MP -MF ".deps/getdate.Tpo" \
-c -o getdate.o `test -f 'getdate.c' || echo './'`getdate.c; \
then mv ".deps/getdate.Tpo" ".deps/getdate.Po"; \
else rm -f ".deps/getdate.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT posixtm.o -MD -MP -MF ".deps/posixtm.Tpo" \
-c -o posixtm.o `test -f 'posixtm.c' || echo './'`posixtm.c; \
then mv ".deps/posixtm.Tpo" ".deps/posixtm.Po"; \
else rm -f ".deps/posixtm.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT posixver.o -MD -MP -MF ".deps/posixver.Tpo" \
-c -o posixver.o `test -f 'posixver.c' || echo './'`posixver.c; \
then mv ".deps/posixver.Tpo" ".deps/posixver.Po"; \
else rm -f ".deps/posixver.Tpo"; exit 1; \
fi
In file included from /usr/include/fortify/stdlib.h:33,
from posixver.c:28:
/usr/include/fortify/unistd.h:75:1: error: 'getgroups' undeclared here (not in a function); did you mean 'setgroups'?
75 | _FORTIFY_FN(getgroups) int getgroups(int __l, gid_t * _FORTIFY_POS0 __s)
| ^~~~~~~~~~~
In file included from posixver.c:34:
/usr/include/fortify/unistd.h: In function 'getgroups':
/usr/include/fortify/unistd.h:81:16: error: called object '__orig_getgroups' is not a function or function pointer
81 | return __orig_getgroups(__l, __s);
| ^~~~~~~~~~~~~~~~
/usr/include/fortify/unistd.h:75:1: note: declared here
75 | _FORTIFY_FN(getgroups) int getgroups(int __l, gid_t * _FORTIFY_POS0 __s)
| ^~~~~~~~~~~
make[3]: *** [Makefile:590: posixver.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
Show reasoning
We're getting another error, this time related to getgroups. This seems to be a fortify issue. Let me check if there are any includes that might be causing conflicts. The error shows that getgroups is not declared but is being used. This might be because the system headers are expecting different includes or there's a conflict with the fortify headers.
Let me check what the posixver.c file includes and see if we can fix this.
compile-bench> cd coreutils-5.0 && head -40 lib/posixver.c /* Which POSIX version to conform to, for utilities.
Copyright (C) 2002 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library 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. */
/* Written by Paul Eggert. */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <limits.h>
#include <stdlib.h>
#if !HAVE_DECL_GETENV && !defined getenv
char *getenv ();
#endif
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
#ifndef _POSIX2_VERSION
# define _POSIX2_VERSION 0
#endif
/* The POSIX version that utilities should conform to. The default is
↓ 41 lines
/* Which POSIX version to conform to, for utilities. Copyright (C) 2002 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library 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. */ /* Written by Paul Eggert. */ #if HAVE_CONFIG_H # include <config.h> #endif #include <limits.h> #include <stdlib.h> #if !HAVE_DECL_GETENV && !defined getenv char *getenv (); #endif #if HAVE_UNISTD_H # include <unistd.h> #endif #ifndef _POSIX2_VERSION # define _POSIX2_VERSION 0 #endif /* The POSIX version that utilities should conform to. The default is
[empty output]
compile-bench> cd coreutils-5.0 && grep -n "getgroups" src/*.c | head -5 src/id.c:251:xgetgroups (const char *username, gid_t gid, int *n_groups,
src/id.c:260: max_n_groups = getgroups (0, NULL);
src/id.c:267: ng = getgroups (max_n_groups, g);
src/id.c:311: if (xgetgroups (username, (pwd ? pwd->pw_gid : (gid_t) -1),
src/id.c:377: if (xgetgroups (username, (pwd ? pwd->pw_gid : (gid_t) -1),
↓ 6 lines
src/id.c:251:xgetgroups (const char *username, gid_t gid, int *n_groups, src/id.c:260: max_n_groups = getgroups (0, NULL); src/id.c:267: ng = getgroups (max_n_groups, g); src/id.c:311: if (xgetgroups (username, (pwd ? pwd->pw_gid : (gid_t) -1), src/id.c:377: if (xgetgroups (username, (pwd ? pwd->pw_gid : (gid_t) -1),
Show reasoning
The error is happening in the fortify headers, not in the actual source code. This seems to be a compatibility issue with the Alpine Linux fortify headers and the old coreutils 5.0 code. Let me try to work around this by disabling fortify compilation or using different compilation flags.
Let me try to compile with different flags that might avoid the fortify issues.
compile-bench> cd coreutils-5.0 && make clean Making clean in tests
make[1]: Entering directory '/home/peter/coreutils-5.0/tests'
Making clean in wc
make[2]: Entering directory '/home/peter/coreutils-5.0/tests/wc'
test -z "a0.O a0.E a1.O a1.E a2.O a2.E a3.O a3.E a4.O a4.E a5.O a5.E a6.O a6.E a7.O a7.E a8.O a8.E a9.O a9.E b0.O b0.E b1.O b1.E c0.O c0.E c1.O c1.E c2.O c2.E" || rm -f a0.O a0.E a1.O a1.E a2.O a2.E a3.O a3.E a4.O a4.E a5.O a5.E a6.O a6.E a7.O a7.E a8.O a8.E a9.O a9.E b0.O b0.E b1.O b1.E c0.O c0.E c1.O c1.E c2.O c2.E
make[2]: Leaving directory '/home/peter/coreutils-5.0/tests/wc'
Making clean in uniq
make[2]: Entering directory '/home/peter/coreutils-5.0/tests/uniq'
test -z "1.O 1.E 2.O 2.E 3.O 3.E 4.O 4.E 5.O 5.E 6.O 6.E 7.O 7.E 8.O 8.E 9.O 9.E 10.O 10.E 11.O 11.E 12.O 12.E 13.O 13.E 20.O 20.E 21.O 21.E 22.O 22.E 23.O 23.E obs30.O obs30.E 31.O 31.E 32.O 32.E 33.O 33.E 34.O 34.E 35.O 35.E obs40.O obs40.E obs41.O obs41.E 42.O 42.E 43.O 43.E obs44.O obs44.E obs45.O obs45.E 50.O 50.E 51.O 51.E 52.O 52.E 53.O 53.E 54.O 54.E 55.O 55.E 56.O 56.E 57.O 57.E 60.O 60.E 61.O 61.E 62.O 62.E 63.O 63.E 64.O 64.E 65.O 65.E 90.O 90.E 91.O 91.E 92.O 92.E 93.O 93.E 94.O 94.E 101.O 101.E 102.O 102.E 110.O 110.E 111.O 111.E 112.O 112.E 113.O 113.E 114.O 114.E 115.O 115.E 116.O 116.E 117.O 117.E 118.O 118.E 119.O 119.E" || rm -f 1.O 1.E 2.O 2.E 3.O 3.E 4.O 4.E 5.O 5.E 6.O 6.E 7.O 7.E 8.O 8.E 9.O 9.E 10.O 10.E 11.O 11.E 12.O 12.E 13.O 13.E 20.O 20.E 21.O 21.E 22.O 22.E 23.O 23.E obs30.O obs30.E 31.O 31.E 32.O 32.E 33.O 33.E 34.O 34.E 35.O 35.E obs40.O obs40.E obs41.O obs41.E 42.O 42.E 43.O 43.E obs44.O obs44.E obs45.O obs45.E 50.O 50.E 51.O 51.E 52.O 52.E 53.O 53.E 54.O 54.E 55.O 55.E 56.O 56.E 57.O 57.E 60.O 60.E 61.O 61.E 62.O 62.E 63.O 63.E 64.O 64.E 65.O 65.E 90.O 90.E 91.O 91.E 92.O 92.E 93.O 93.E 94.O 94.E 101.O 101.E 102.O 102.E 110.O 110.E 111.O 111.E 112.O 112.E 113.O 113.E 114.O 114.E 115.O 115.E 116.O 116.E 117.O 117.E 118.O 118.E 119.O 119.E
make[2]: Leaving directory '/home/peter/coreutils-5.0/tests/uniq'
Making clean in unexpand
make[2]: Entering directory '/home/peter/coreutils-5.0/tests/unexpand'
make[2]: Nothing to be done for 'clean'.
make[2]: Leaving directory '/home/peter/coreutils-5.0/tests/unexpand'
Making clean in tsort
make[2]: Entering directory '/home/peter/coreutils-5.0/tests/tsort'
make[2]: Nothing to be done for 'clean'.
make[2]: Leaving directory '/home/peter/coreutils-5.0/tests/tsort'
Making clean in tr
make[2]: Entering directory '/home/peter/coreutils-5.0/tests/tr'
test -z "1.O 1.E 2.O 2.E 3.O 3.E 4.O 4.E 5.O 5.E 6.O 6.E 7.O 7.E 8.O 8.E 9.O 9.E a.O a.E b.O b.E c.O c.E d.O d.E e.O e.E f.O f.E g.O g.E h.O h.E i.O i.E j.O j.E k.O k.E l.O l.E m.O m.E n.O n.E o.O o.E p.O p.E q.O q.E r.O r.E s.O s.E t.O t.E u.O u.E v.O v.E w.O w.E x.O x.E y.O y.E z.O z.E range-a-a.O range-a-a.E null.O null.E upcase.O upcase.E dncase.O dncase.E rep-cclass.O rep-cclass.E rep-1.O rep-1.E rep-2.O rep-2.E rep-3.O rep-3.E o-rep-1.O o-rep-1.E o-rep-2.O o-rep-2.E esc.O esc.E ross-0
[command output truncated]
coreutils.1po coreutils.2po *.new.po
rm -fr *.o
make[1]: Leaving directory '/home/peter/coreutils-5.0/po'
Making clean in m4
make[1]: Entering directory '/home/peter/coreutils-5.0/m4'
make[1]: Nothing to be done for 'clean'.
make[1]: Leaving directory '/home/peter/coreutils-5.0/m4'
Making clean in man
make[1]: Entering directory '/home/peter/coreutils-5.0/man'
make[1]: Nothing to be done for 'clean'.
make[1]: Leaving directory '/home/peter/coreutils-5.0/man'
Making clean in doc
make[1]: Entering directory '/home/peter/coreutils-5.0/doc'
rm -f coreutils.aux coreutils.cp coreutils.cps coreutils.fl coreutils.fn \
coreutils.ky coreutils.log coreutils.op coreutils.pg \
coreutils.tmp coreutils.toc coreutils.tp coreutils.tps \
coreutils.vr coreutils.dvi coreutils.pdf coreutils.ps
rm -f vti.tmp
make[1]: Leaving directory '/home/peter/coreutils-5.0/doc'
Making clean in src
make[1]: Entering directory '/home/peter/coreutils-5.0/src'
test -z "chgrp chown chmod cp dd dircolors du ginstall link ln dir vdir ls mkdir mkfifo mknod mv readlink rm rmdir shred stat sync touch unlink cat cksum comm csplit cut expand fmt fold head join md5sum nl od paste pr ptx sha1sum sort split sum tac tail tr tsort unexpand uniq wc basename date dirname echo env expr factor false hostname id kill logname pathchk printenv printf pwd seq sleep tee test true tty whoami yes uname chroot hostid nice pinky users who " || rm -f chgrp chown chmod cp dd dircolors du ginstall link ln dir vdir ls mkdir mkfifo mknod mv readlink rm rmdir shred stat sync touch unlink cat cksum comm csplit cut expand fmt fold head join md5sum nl od paste pr ptx sha1sum sort split sum tac tail tr tsort unexpand uniq wc basename date dirname echo env expr factor false hostname id kill logname pathchk printenv printf pwd seq sleep tee test true tty whoami yes uname chroot hostid nice pinky users who > /dev/null 2>&1 || /bin/rm -f chgrp chown chmod cp dd dircolors du ginstall link ln dir vdir ls mkdir mkfifo mknod mv readlink rm rmdir shred stat sync touch unlink cat cksum comm csplit cut expand fmt fold head join md5sum nl od paste pr ptx sha1sum sort split sum tac tail tr tsort unexpand uniq wc basename date dirname echo env expr factor false hostname id kill logname pathchk printenv printf pwd seq sleep tee test true tty whoami yes uname chroot hostid nice pinky users who
test -z "groups nohup su" || rm -f groups nohup su
rm -f *.o core *.core
make[1]: Leaving directory '/home/peter/coreutils-5.0/src'
Making clean in lib
make[1]: Entering directory '/home/peter/coreutils-5.0/lib'
test -z "charset.alias ref-add.sed ref-del.sed" || rm -f charset.alias ref-add.sed ref-del.sed
test -z "libfetish.a" || rm -f libfetish.a
rm -f *.o core *.core
make[1]: Leaving directory '/home/peter/coreutils-5.0/lib'
Making clean in .
make[1]: Entering directory '/home/peter/coreutils-5.0'
make[1]: Nothing to be done for 'clean-am'.
make[1]: Leaving directory '/home/peter/coreutils-5.0'
↓ 58 lines
Making clean in tests make[1]: Entering directory '/home/peter/coreutils-5.0/tests' Making clean in wc make[2]: Entering directory '/home/peter/coreutils-5.0/tests/wc' test -z "a0.O a0.E a1.O a1.E a2.O a2.E a3.O a3.E a4.O a4.E a5.O a5.E a6.O a6.E a7.O a7.E a8.O a8.E a9.O a9.E b0.O b0.E b1.O b1.E c0.O c0.E c1.O c1.E c2.O c2.E" || rm -f a0.O a0.E a1.O a1.E a2.O a2.E a3.O a3.E a4.O a4.E a5.O a5.E a6.O a6.E a7.O a7.E a8.O a8.E a9.O a9.E b0.O b0.E b1.O b1.E c0.O c0.E c1.O c1.E c2.O c2.E make[2]: Leaving directory '/home/peter/coreutils-5.0/tests/wc' Making clean in uniq make[2]: Entering directory '/home/peter/coreutils-5.0/tests/uniq' test -z "1.O 1.E 2.O 2.E 3.O 3.E 4.O 4.E 5.O 5.E 6.O 6.E 7.O 7.E 8.O 8.E 9.O 9.E 10.O 10.E 11.O 11.E 12.O 12.E 13.O 13.E 20.O 20.E 21.O 21.E 22.O 22.E 23.O 23.E obs30.O obs30.E 31.O 31.E 32.O 32.E 33.O 33.E 34.O 34.E 35.O 35.E obs40.O obs40.E obs41.O obs41.E 42.O 42.E 43.O 43.E obs44.O obs44.E obs45.O obs45.E 50.O 50.E 51.O 51.E 52.O 52.E 53.O 53.E 54.O 54.E 55.O 55.E 56.O 56.E 57.O 57.E 60.O 60.E 61.O 61.E 62.O 62.E 63.O 63.E 64.O 64.E 65.O 65.E 90.O 90.E 91.O 91.E 92.O 92.E 93.O 93.E 94.O 94.E 101.O 101.E 102.O 102.E 110.O 110.E 111.O 111.E 112.O 112.E 113.O 113.E 114.O 114.E 115.O 115.E 116.O 116.E 117.O 117.E 118.O 118.E 119.O 119.E" || rm -f 1.O 1.E 2.O 2.E 3.O 3.E 4.O 4.E 5.O 5.E 6.O 6.E 7.O 7.E 8.O 8.E 9.O 9.E 10.O 10.E 11.O 11.E 12.O 12.E 13.O 13.E 20.O 20.E 21.O 21.E 22.O 22.E 23.O 23.E obs30.O obs30.E 31.O 31.E 32.O 32.E 33.O 33.E 34.O 34.E 35.O 35.E obs40.O obs40.E obs41.O obs41.E 42.O 42.E 43.O 43.E obs44.O obs44.E obs45.O obs45.E 50.O 50.E 51.O 51.E 52.O 52.E 53.O 53.E 54.O 54.E 55.O 55.E 56.O 56.E 57.O 57.E 60.O 60.E 61.O 61.E 62.O 62.E 63.O 63.E 64.O 64.E 65.O 65.E 90.O 90.E 91.O 91.E 92.O 92.E 93.O 93.E 94.O 94.E 101.O 101.E 102.O 102.E 110.O 110.E 111.O 111.E 112.O 112.E 113.O 113.E 114.O 114.E 115.O 115.E 116.O 116.E 117.O 117.E 118.O 118.E 119.O 119.E make[2]: Leaving directory '/home/peter/coreutils-5.0/tests/uniq' Making clean in unexpand make[2]: Entering directory '/home/peter/coreutils-5.0/tests/unexpand' make[2]: Nothing to be done for 'clean'. make[2]: Leaving directory '/home/peter/coreutils-5.0/tests/unexpand' Making clean in tsort make[2]: Entering directory '/home/peter/coreutils-5.0/tests/tsort' make[2]: Nothing to be done for 'clean'. make[2]: Leaving directory '/home/peter/coreutils-5.0/tests/tsort' Making clean in tr make[2]: Entering directory '/home/peter/coreutils-5.0/tests/tr' test -z "1.O 1.E 2.O 2.E 3.O 3.E 4.O 4.E 5.O 5.E 6.O 6.E 7.O 7.E 8.O 8.E 9.O 9.E a.O a.E b.O b.E c.O c.E d.O d.E e.O e.E f.O f.E g.O g.E h.O h.E i.O i.E j.O j.E k.O k.E l.O l.E m.O m.E n.O n.E o.O o.E p.O p.E q.O q.E r.O r.E s.O s.E t.O t.E u.O u.E v.O v.E w.O w.E x.O x.E y.O y.E z.O z.E range-a-a.O range-a-a.E null.O null.E upcase.O upcase.E dncase.O dncase.E rep-cclass.O rep-cclass.E rep-1.O rep-1.E rep-2.O rep-2.E rep-3.O rep-3.E o-rep-1.O o-rep-1.E o-rep-2.O o-rep-2.E esc.O esc.E ross-0 [command output truncated] coreutils.1po coreutils.2po *.new.po rm -fr *.o make[1]: Leaving directory '/home/peter/coreutils-5.0/po' Making clean in m4 make[1]: Entering directory '/home/peter/coreutils-5.0/m4' make[1]: Nothing to be done for 'clean'. make[1]: Leaving directory '/home/peter/coreutils-5.0/m4' Making clean in man make[1]: Entering directory '/home/peter/coreutils-5.0/man' make[1]: Nothing to be done for 'clean'. make[1]: Leaving directory '/home/peter/coreutils-5.0/man' Making clean in doc make[1]: Entering directory '/home/peter/coreutils-5.0/doc' rm -f coreutils.aux coreutils.cp coreutils.cps coreutils.fl coreutils.fn \ coreutils.ky coreutils.log coreutils.op coreutils.pg \ coreutils.tmp coreutils.toc coreutils.tp coreutils.tps \ coreutils.vr coreutils.dvi coreutils.pdf coreutils.ps rm -f vti.tmp make[1]: Leaving directory '/home/peter/coreutils-5.0/doc' Making clean in src make[1]: Entering directory '/home/peter/coreutils-5.0/src' test -z "chgrp chown chmod cp dd dircolors du ginstall link ln dir vdir ls mkdir mkfifo mknod mv readlink rm rmdir shred stat sync touch unlink cat cksum comm csplit cut expand fmt fold head join md5sum nl od paste pr ptx sha1sum sort split sum tac tail tr tsort unexpand uniq wc basename date dirname echo env expr factor false hostname id kill logname pathchk printenv printf pwd seq sleep tee test true tty whoami yes uname chroot hostid nice pinky users who " || rm -f chgrp chown chmod cp dd dircolors du ginstall link ln dir vdir ls mkdir mkfifo mknod mv readlink rm rmdir shred stat sync touch unlink cat cksum comm csplit cut expand fmt fold head join md5sum nl od paste pr ptx sha1sum sort split sum tac tail tr tsort unexpand uniq wc basename date dirname echo env expr factor false hostname id kill logname pathchk printenv printf pwd seq sleep tee test true tty whoami yes uname chroot hostid nice pinky users who > /dev/null 2>&1 || /bin/rm -f chgrp chown chmod cp dd dircolors du ginstall link ln dir vdir ls mkdir mkfifo mknod mv readlink rm rmdir shred stat sync touch unlink cat cksum comm csplit cut expand fmt fold head join md5sum nl od paste pr ptx sha1sum sort split sum tac tail tr tsort unexpand uniq wc basename date dirname echo env expr factor false hostname id kill logname pathchk printenv printf pwd seq sleep tee test true tty whoami yes uname chroot hostid nice pinky users who test -z "groups nohup su" || rm -f groups nohup su rm -f *.o core *.core make[1]: Leaving directory '/home/peter/coreutils-5.0/src' Making clean in lib make[1]: Entering directory '/home/peter/coreutils-5.0/lib' test -z "charset.alias ref-add.sed ref-del.sed" || rm -f charset.alias ref-add.sed ref-del.sed test -z "libfetish.a" || rm -f libfetish.a rm -f *.o core *.core make[1]: Leaving directory '/home/peter/coreutils-5.0/lib' Making clean in . make[1]: Entering directory '/home/peter/coreutils-5.0' make[1]: Nothing to be done for 'clean-am'. make[1]: Leaving directory '/home/peter/coreutils-5.0'
compile-bench> cd coreutils-5.0 && grep -n "getgroups" src/id.c 251:xgetgroups (const char *username, gid_t gid, int *n_groups,
260: max_n_groups = getgroups (0, NULL);
267: ng = getgroups (max_n_groups, g);
311: if (xgetgroups (username, (pwd ? pwd->pw_gid : (gid_t) -1),
377: if (xgetgroups (username, (pwd ? pwd->pw_gid : (gid_t) -1),
↓ 6 lines
251:xgetgroups (const char *username, gid_t gid, int *n_groups, 260: max_n_groups = getgroups (0, NULL); 267: ng = getgroups (max_n_groups, g); 311: if (xgetgroups (username, (pwd ? pwd->pw_gid : (gid_t) -1), 377: if (xgetgroups (username, (pwd ? pwd->pw_gid : (gid_t) -1),
[empty output]
compile-bench> cd coreutils-5.0 && head -30 src/id.c /* id -- print real and effective UIDs and GIDs
Copyright (C) 1989-2003 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. */
/* Written by Arnold Robbins.
Major rewrite by David MacKenzie, [email protected]. */
#include <config.h>
#include <stdio.h>
#include <getopt.h>
#include <sys/types.h>
#include <pwd.h>
#include <grp.h>
#include <getopt.h>
#include "system.h"
#include "error.h"
↓ 31 lines
/* id -- print real and effective UIDs and GIDs Copyright (C) 1989-2003 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. */ /* Written by Arnold Robbins. Major rewrite by David MacKenzie, [email protected]. */ #include <config.h> #include <stdio.h> #include <getopt.h> #include <sys/types.h> #include <pwd.h> #include <grp.h> #include <getopt.h> #include "system.h" #include "error.h"
[empty output]
29:#include "system.h"
cat: can't open 'lib/system.h': No such file or directory
./src/system.h
compile-bench> cd coreutils-5.0 && grep -n -A5 -B5 "unistd" src/system.h 31-
32-#if HAVE_SYS_PARAM_H
33-# include <sys/param.h>
34-#endif
35-
36:/* <unistd.h> should be included before any preprocessor test
37- of _POSIX_VERSION. */
38-#if HAVE_UNISTD_H
39:# include <unistd.h>
40-#endif
41-
42-#ifndef STDIN_FILENO
43-# define STDIN_FILENO 0
44-#endif
↓ 15 lines
31- 32-#if HAVE_SYS_PARAM_H 33-# include <sys/param.h> 34-#endif 35- 36:/* <unistd.h> should be included before any preprocessor test 37- of _POSIX_VERSION. */ 38-#if HAVE_UNISTD_H 39:# include <unistd.h> 40-#endif 41- 42-#ifndef STDIN_FILENO 43-# define STDIN_FILENO 0 44-#endif
Show reasoning
This is strange. The system.h file does include unistd.h, so getgroups should be available. But we're getting an error about it being undeclared. Let me check if there are any other issues with the fortify headers or if we need to work around the fortify issue.
Let me try a different approach. Let me see if we can compile without fortify by adding some compiler flags, or see if there's a way to work around this issue.
116:int getgroups(int, gid_t []);
[empty output]
compile-bench> cd coreutils-5.0 && grep -n "getgroups" config.h 65:/* Define to the type of elements in the array set by `getgroups'. Usually
397:/* Define to 1 if your system has a working `getgroups' function. */
1345:/* Define as rpl_getgroups if getgroups doesn't work right. */
1346:#define getgroups rpl_getgroups
↓ 5 lines
65:/* Define to the type of elements in the array set by `getgroups'. Usually 397:/* Define to 1 if your system has a working `getgroups' function. */ 1345:/* Define as rpl_getgroups if getgroups doesn't work right. */ 1346:#define getgroups rpl_getgroups
[empty output]
[empty output]
compile-bench> cd coreutils-5.0 && grep -n -A3 -B3 "getgroups" src/id.c 248-/* FIXME: document */
249-
250-static int
251:xgetgroups (const char *username, gid_t gid, int *n_groups,
252- GETGROUPS_T **groups)
253-{
254- int max_n_groups;
--
257- int fail = 0;
258-
259- if (username == 0)
260: max_n_groups = getgroups (0, NULL);
261- else
262- max_n_groups = getugroups (0, NULL, username, gid);
263-
264- /* Add 1 just in case max_n_groups is zero. */
265- g = (GETGROUPS_T *) xmalloc (max_n_groups * sizeof (GETGROUPS_T) + 1);
266- if (username == 0)
267: ng = getgroups (max_n_groups, g);
268- else
269- ng = getugroups (max_n_groups, g, username, gid);
270-
--
308- GETGROUPS_T *groups;
309- register int i;
310-
311: if (xgetgroups (username, (pwd ? pwd->pw_gid : (gid_t) -1),
312- &n_groups, &groups))
313- {
314- ++problems;
--
374- GETGROUPS_T *groups;
375- register int i;
376-
377: if (xgetgroups (username, (pwd ? pwd->pw_gid : (gid_t) -1),
378- &n_groups, &groups))
379- {
380- ++problems;
↓ 39 lines
248-/* FIXME: document */
249-
250-static int
251:xgetgroups (const char *username, gid_t gid, int *n_groups,
252- GETGROUPS_T **groups)
253-{
254- int max_n_groups;
--
257- int fail = 0;
258-
259- if (username == 0)
260: max_n_groups = getgroups (0, NULL);
261- else
262- max_n_groups = getugroups (0, NULL, username, gid);
263-
264- /* Add 1 just in case max_n_groups is zero. */
265- g = (GETGROUPS_T *) xmalloc (max_n_groups * sizeof (GETGROUPS_T) + 1);
266- if (username == 0)
267: ng = getgroups (max_n_groups, g);
268- else
269- ng = getugroups (max_n_groups, g, username, gid);
270-
--
308- GETGROUPS_T *groups;
309- register int i;
310-
311: if (xgetgroups (username, (pwd ? pwd->pw_gid : (gid_t) -1),
312- &n_groups, &groups))
313- {
314- ++problems;
--
374- GETGROUPS_T *groups;
375- register int i;
376-
377: if (xgetgroups (username, (pwd ? pwd->pw_gid : (gid_t) -1),
378- &n_groups, &groups))
379- {
380- ++problems;
Show reasoning
I see the issue. The getgroups function is being used directly in the code, but the config.h file is trying to redefine it as rpl_getgroups:
```
1346:#define getgroups rpl_getgroups
```
This is causing a conflict with the fortify headers. Let me comment out this line in config.h to see if that resolves the issue.
[empty output]
compile-bench> cd coreutils-5.0 && make make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT acl.o -MD -MP -MF ".deps/acl.Tpo" \
-c -o acl.o `test -f 'acl.c' || echo './'`acl.c; \
then mv ".deps/acl.Tpo" ".deps/acl.Po"; \
else rm -f ".deps/acl.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT getdate.o -MD -MP -MF ".deps/getdate.Tpo" \
-c -o getdate.o `test -f 'getdate.c' || echo './'`getdate.c; \
then mv ".deps/getdate.Tpo" ".deps/getdate.Po"; \
else rm -f ".deps/getdate.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT posixtm.o -MD -MP -MF ".deps/posixtm.Tpo" \
-c -o posixtm.o `test -f 'posixtm.c' || echo './'`posixtm.c; \
then mv ".deps/posixtm.Tpo" ".deps/posixtm.Po"; \
else rm -f ".deps/posixtm.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT posixver.o -MD -MP -MF ".deps/posixver.Tpo" \
-c -o posixver.o `test -f 'posixver.c' || echo './'`posixver.c; \
then mv ".deps/posixver.Tpo" ".deps/posixver.Po"; \
else rm -f ".deps/posixver.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT strftime.o -MD -MP -MF ".deps/strftime.Tpo" \
-c -o strftime.o `test -f 'strftime.c' || echo './'`strftime.c; \
then mv ".deps/strftime.Tpo" ".deps/strftime.Po"; \
else rm -f ".deps/strftime.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT getopt.o -MD -MP -MF ".deps/getopt.Tpo" \
-c -o getopt.o `test -f 'getopt.c' || echo './'`getopt.c; \
then mv ".deps/getopt.Tpo" ".deps/getopt.Po"; \
else rm -f ".deps/getopt.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT getopt1.o -MD -MP -MF ".deps/getopt1.Tpo" \
-c -o getopt1.o `test -f 'getopt1.c' || echo './'`getopt1.c; \
then mv ".deps/getopt1.Tpo" ".deps/getopt1.Po"; \
else rm -f ".deps/getopt1.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT hash.o -MD -MP -MF ".deps/hash.Tpo" \
-c -o hash.o `test -f 'hash.c' || echo './'`hash.c; \
then mv ".deps/hash.Tpo" ".deps/hash.Po"; \
else rm -f ".deps/hash.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT hash-pjw.o -MD -MP -MF ".deps/hash-pjw.Tpo" \
-c -o hash-pjw.o `test -f 'hash-pjw.c' || echo './'`hash-pjw.c; \
then mv ".deps/hash-pjw.Tpo" ".deps/hash-pjw.Po"; \
else rm -f ".deps/hash-pjw.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I..
[command output truncated]
-DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT mbswidth.o -MD -MP -MF ".deps/mbswidth.Tpo" \
-c -o mbswidth.o `test -f 'mbswidth.c' || echo './'`mbswidth.c; \
then mv ".deps/mbswidth.Tpo" ".deps/mbswidth.Po"; \
else rm -f ".deps/mbswidth.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT md5.o -MD -MP -MF ".deps/md5.Tpo" \
-c -o md5.o `test -f 'md5.c' || echo './'`md5.c; \
then mv ".deps/md5.Tpo" ".deps/md5.Po"; \
else rm -f ".deps/md5.Tpo"; exit 1; \
fi
md5.c: In function 'md5_finish_ctx':
md5.c:129:3: error: implicit declaration of function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
129 | memcpy (&ctx->buffer[bytes], fillbuf, pad);
| ^~~~~~
md5.c:40:1: note: include '<string.h>' or provide a declaration of 'memcpy'
39 | #include "unlocked-io.h"
+++ |+#include <string.h>
40 |
md5.c:129:3: warning: incompatible implicit declaration of built-in function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
129 | memcpy (&ctx->buffer[bytes], fillbuf, pad);
| ^~~~~~
md5.c:129:3: note: include '<string.h>' or provide a declaration of 'memcpy'
md5.c: In function 'md5_process_bytes':
md5.c:246:7: warning: incompatible implicit declaration of built-in function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
246 | memcpy (&ctx->buffer[left_over], buffer, add);
| ^~~~~~
md5.c:246:7: note: include '<string.h>' or provide a declaration of 'memcpy'
md5.c:277:32: warning: incompatible implicit declaration of built-in function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
277 | md5_process_block (memcpy (ctx->buffer, buffer, 64), 64, ctx);
| ^~~~~~
md5.c:277:32: note: include '<string.h>' or provide a declaration of 'memcpy'
md5.c:295:7: warning: incompatible implicit declaration of built-in function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
295 | memcpy (&ctx->buffer[left_over], buffer, len);
| ^~~~~~
md5.c:295:7: note: include '<string.h>' or provide a declaration of 'memcpy'
make[3]: *** [Makefile:590: md5.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
↓ 96 lines
make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT acl.o -MD -MP -MF ".deps/acl.Tpo" \
-c -o acl.o `test -f 'acl.c' || echo './'`acl.c; \
then mv ".deps/acl.Tpo" ".deps/acl.Po"; \
else rm -f ".deps/acl.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT getdate.o -MD -MP -MF ".deps/getdate.Tpo" \
-c -o getdate.o `test -f 'getdate.c' || echo './'`getdate.c; \
then mv ".deps/getdate.Tpo" ".deps/getdate.Po"; \
else rm -f ".deps/getdate.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT posixtm.o -MD -MP -MF ".deps/posixtm.Tpo" \
-c -o posixtm.o `test -f 'posixtm.c' || echo './'`posixtm.c; \
then mv ".deps/posixtm.Tpo" ".deps/posixtm.Po"; \
else rm -f ".deps/posixtm.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT posixver.o -MD -MP -MF ".deps/posixver.Tpo" \
-c -o posixver.o `test -f 'posixver.c' || echo './'`posixver.c; \
then mv ".deps/posixver.Tpo" ".deps/posixver.Po"; \
else rm -f ".deps/posixver.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT strftime.o -MD -MP -MF ".deps/strftime.Tpo" \
-c -o strftime.o `test -f 'strftime.c' || echo './'`strftime.c; \
then mv ".deps/strftime.Tpo" ".deps/strftime.Po"; \
else rm -f ".deps/strftime.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT getopt.o -MD -MP -MF ".deps/getopt.Tpo" \
-c -o getopt.o `test -f 'getopt.c' || echo './'`getopt.c; \
then mv ".deps/getopt.Tpo" ".deps/getopt.Po"; \
else rm -f ".deps/getopt.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT getopt1.o -MD -MP -MF ".deps/getopt1.Tpo" \
-c -o getopt1.o `test -f 'getopt1.c' || echo './'`getopt1.c; \
then mv ".deps/getopt1.Tpo" ".deps/getopt1.Po"; \
else rm -f ".deps/getopt1.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT hash.o -MD -MP -MF ".deps/hash.Tpo" \
-c -o hash.o `test -f 'hash.c' || echo './'`hash.c; \
then mv ".deps/hash.Tpo" ".deps/hash.Po"; \
else rm -f ".deps/hash.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT hash-pjw.o -MD -MP -MF ".deps/hash-pjw.Tpo" \
-c -o hash-pjw.o `test -f 'hash-pjw.c' || echo './'`hash-pjw.c; \
then mv ".deps/hash-pjw.Tpo" ".deps/hash-pjw.Po"; \
else rm -f ".deps/hash-pjw.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I..
[command output truncated]
-DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT mbswidth.o -MD -MP -MF ".deps/mbswidth.Tpo" \
-c -o mbswidth.o `test -f 'mbswidth.c' || echo './'`mbswidth.c; \
then mv ".deps/mbswidth.Tpo" ".deps/mbswidth.Po"; \
else rm -f ".deps/mbswidth.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT md5.o -MD -MP -MF ".deps/md5.Tpo" \
-c -o md5.o `test -f 'md5.c' || echo './'`md5.c; \
then mv ".deps/md5.Tpo" ".deps/md5.Po"; \
else rm -f ".deps/md5.Tpo"; exit 1; \
fi
md5.c: In function 'md5_finish_ctx':
md5.c:129:3: error: implicit declaration of function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
129 | memcpy (&ctx->buffer[bytes], fillbuf, pad);
| ^~~~~~
md5.c:40:1: note: include '<string.h>' or provide a declaration of 'memcpy'
39 | #include "unlocked-io.h"
+++ |+#include <string.h>
40 |
md5.c:129:3: warning: incompatible implicit declaration of built-in function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
129 | memcpy (&ctx->buffer[bytes], fillbuf, pad);
| ^~~~~~
md5.c:129:3: note: include '<string.h>' or provide a declaration of 'memcpy'
md5.c: In function 'md5_process_bytes':
md5.c:246:7: warning: incompatible implicit declaration of built-in function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
246 | memcpy (&ctx->buffer[left_over], buffer, add);
| ^~~~~~
md5.c:246:7: note: include '<string.h>' or provide a declaration of 'memcpy'
md5.c:277:32: warning: incompatible implicit declaration of built-in function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
277 | md5_process_block (memcpy (ctx->buffer, buffer, 64), 64, ctx);
| ^~~~~~
md5.c:277:32: note: include '<string.h>' or provide a declaration of 'memcpy'
md5.c:295:7: warning: incompatible implicit declaration of built-in function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
295 | memcpy (&ctx->buffer[left_over], buffer, len);
| ^~~~~~
md5.c:295:7: note: include '<string.h>' or provide a declaration of 'memcpy'
make[3]: *** [Makefile:590: md5.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
compile-bench> cd coreutils-5.0 && head -50 lib/md5.c /* md5.c - Functions to compute MD5 message digest of files or memory blocks
according to the definition of MD5 in RFC 1321 from April 1992.
Copyright (C) 1995, 1996, 2001, 2003 Free Software Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C
Library. Bugs can be reported to [email protected].
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. */
/* Written by Ulrich Drepper <[email protected]>, 1995. */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
#if STDC_HEADERS || defined _LIBC
# include <stdlib.h>
# include <string.h>
#else
# ifndef HAVE_MEMCPY
# define memcpy(d, s, n) bcopy ((s), (d), (n))
# endif
#endif
#include "md5.h"
#include "unlocked-io.h"
#ifdef _LIBC
# include <endian.h>
# if __BYTE_ORDER == __BIG_ENDIAN
# define WORDS_BIGENDIAN 1
# endif
/* We need to keep the namespace clean so define the MD5 function
protected using leading __ . */
# define md5_init_ctx __md5_init_ctx
# define md5_process_block __md5_process_block
# define md5_process_bytes __md5_process_bytes
↓ 51 lines
/* md5.c - Functions to compute MD5 message digest of files or memory blocks according to the definition of MD5 in RFC 1321 from April 1992. Copyright (C) 1995, 1996, 2001, 2003 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to [email protected]. 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. */ /* Written by Ulrich Drepper <[email protected]>, 1995. */ #ifdef HAVE_CONFIG_H # include <config.h> #endif #include <sys/types.h> #if STDC_HEADERS || defined _LIBC # include <stdlib.h> # include <string.h> #else # ifndef HAVE_MEMCPY # define memcpy(d, s, n) bcopy ((s), (d), (n)) # endif #endif #include "md5.h" #include "unlocked-io.h" #ifdef _LIBC # include <endian.h> # if __BYTE_ORDER == __BIG_ENDIAN # define WORDS_BIGENDIAN 1 # endif /* We need to keep the namespace clean so define the MD5 function protected using leading __ . */ # define md5_init_ctx __md5_init_ctx # define md5_process_block __md5_process_block # define md5_process_bytes __md5_process_bytes
1258:/* #undef STDC_HEADERS */
567:#define HAVE_MEMCPY 1
[empty output]
compile-bench> cd coreutils-5.0 && make make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT md5.o -MD -MP -MF ".deps/md5.Tpo" \
-c -o md5.o `test -f 'md5.c' || echo './'`md5.c; \
then mv ".deps/md5.Tpo" ".deps/md5.Po"; \
else rm -f ".deps/md5.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT memcasecmp.o -MD -MP -MF ".deps/memcasecmp.Tpo" \
-c -o memcasecmp.o `test -f 'memcasecmp.c' || echo './'`memcasecmp.c; \
then mv ".deps/memcasecmp.Tpo" ".deps/memcasecmp.Po"; \
else rm -f ".deps/memcasecmp.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT memcoll.o -MD -MP -MF ".deps/memcoll.Tpo" \
-c -o memcoll.o `test -f 'memcoll.c' || echo './'`memcoll.c; \
then mv ".deps/memcoll.Tpo" ".deps/memcoll.Po"; \
else rm -f ".deps/memcoll.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT modechange.o -MD -MP -MF ".deps/modechange.Tpo" \
-c -o modechange.o `test -f 'modechange.c' || echo './'`modechange.c; \
then mv ".deps/modechange.Tpo" ".deps/modechange.Po"; \
else rm -f ".deps/modechange.Tpo"; exit 1; \
fi
modechange.c:38:7: warning: conflicting types for built-in function 'malloc'; expected 'void *(long unsigned int)' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
38 | char *malloc ();
| ^~~~~~
modechange.c:34:1: note: 'malloc' is declared in header '<stdlib.h>'
33 | #include "xstrtol.h"
+++ |+#include <stdlib.h>
34 |
modechange.c: In function 'mode_free':
modechange.c:478:7: error: implicit declaration of function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
478 | free (changes);
| ^~~~
modechange.c:478:7: note: include '<stdlib.h>' or provide a declaration of 'free'
modechange.c:478:7: warning: incompatible implicit declaration of built-in function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
modechange.c:478:7: note: include '<stdlib.h>' or provide a declaration of 'free'
make[3]: *** [Makefile:590: modechange.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
↓ 48 lines
make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT md5.o -MD -MP -MF ".deps/md5.Tpo" \
-c -o md5.o `test -f 'md5.c' || echo './'`md5.c; \
then mv ".deps/md5.Tpo" ".deps/md5.Po"; \
else rm -f ".deps/md5.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT memcasecmp.o -MD -MP -MF ".deps/memcasecmp.Tpo" \
-c -o memcasecmp.o `test -f 'memcasecmp.c' || echo './'`memcasecmp.c; \
then mv ".deps/memcasecmp.Tpo" ".deps/memcasecmp.Po"; \
else rm -f ".deps/memcasecmp.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT memcoll.o -MD -MP -MF ".deps/memcoll.Tpo" \
-c -o memcoll.o `test -f 'memcoll.c' || echo './'`memcoll.c; \
then mv ".deps/memcoll.Tpo" ".deps/memcoll.Po"; \
else rm -f ".deps/memcoll.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT modechange.o -MD -MP -MF ".deps/modechange.Tpo" \
-c -o modechange.o `test -f 'modechange.c' || echo './'`modechange.c; \
then mv ".deps/modechange.Tpo" ".deps/modechange.Po"; \
else rm -f ".deps/modechange.Tpo"; exit 1; \
fi
modechange.c:38:7: warning: conflicting types for built-in function 'malloc'; expected 'void *(long unsigned int)' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
38 | char *malloc ();
| ^~~~~~
modechange.c:34:1: note: 'malloc' is declared in header '<stdlib.h>'
33 | #include "xstrtol.h"
+++ |+#include <stdlib.h>
34 |
modechange.c: In function 'mode_free':
modechange.c:478:7: error: implicit declaration of function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
478 | free (changes);
| ^~~~
modechange.c:478:7: note: include '<stdlib.h>' or provide a declaration of 'free'
modechange.c:478:7: warning: incompatible implicit declaration of built-in function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
modechange.c:478:7: note: include '<stdlib.h>' or provide a declaration of 'free'
make[3]: *** [Makefile:590: modechange.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
compile-bench> cd coreutils-5.0 && head -50 lib/modechange.c /* modechange.c -- file mode manipulation
Copyright (C) 1989, 1990, 1997, 1998, 1999, 2001 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. */
/* Written by David MacKenzie <[email protected]> */
/* The ASCII mode string is compiled into a linked list of `struct
modechange', which can then be applied to each file to be changed.
We do this instead of re-parsing the ASCII string for each file
because the compiled form requires less computation to use; when
changing the mode of many files, this probably results in a
performance gain. */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include "modechange.h"
#include <sys/stat.h>
#include "xstrtol.h"
#if STDC_HEADERS
# include <stdlib.h>
#else
char *malloc ();
#endif
#ifndef NULL
# define NULL 0
#endif
#if STAT_MACROS_BROKEN
# undef S_ISDIR
#endif
#if !defined(S_ISDIR) && defined(S_IFDIR)
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
↓ 51 lines
/* modechange.c -- file mode manipulation Copyright (C) 1989, 1990, 1997, 1998, 1999, 2001 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. */ /* Written by David MacKenzie <[email protected]> */ /* The ASCII mode string is compiled into a linked list of `struct modechange', which can then be applied to each file to be changed. We do this instead of re-parsing the ASCII string for each file because the compiled form requires less computation to use; when changing the mode of many files, this probably results in a performance gain. */ #if HAVE_CONFIG_H # include <config.h> #endif #include "modechange.h" #include <sys/stat.h> #include "xstrtol.h" #if STDC_HEADERS # include <stdlib.h> #else char *malloc (); #endif #ifndef NULL # define NULL 0 #endif #if STAT_MACROS_BROKEN # undef S_ISDIR #endif #if !defined(S_ISDIR) && defined(S_IFDIR) # define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
[empty output]
compile-bench> cd coreutils-5.0 && make make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT modechange.o -MD -MP -MF ".deps/modechange.Tpo" \
-c -o modechange.o `test -f 'modechange.c' || echo './'`modechange.c; \
then mv ".deps/modechange.Tpo" ".deps/modechange.Po"; \
else rm -f ".deps/modechange.Tpo"; exit 1; \
fi
modechange.c:39:7: error: conflicting types for 'malloc'; have 'char *()'
39 | char *malloc ();
| ^~~~~~
In file included from /usr/include/fortify/stdlib.h:23,
from modechange.c:34:
/usr/include/stdlib.h:40:7: note: previous declaration of 'malloc' with type 'void *(long unsigned int)'
40 | void *malloc (size_t);
| ^~~~~~
make[3]: *** [Makefile:590: modechange.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
↓ 27 lines
make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT modechange.o -MD -MP -MF ".deps/modechange.Tpo" \
-c -o modechange.o `test -f 'modechange.c' || echo './'`modechange.c; \
then mv ".deps/modechange.Tpo" ".deps/modechange.Po"; \
else rm -f ".deps/modechange.Tpo"; exit 1; \
fi
modechange.c:39:7: error: conflicting types for 'malloc'; have 'char *()'
39 | char *malloc ();
| ^~~~~~
In file included from /usr/include/fortify/stdlib.h:23,
from modechange.c:34:
/usr/include/stdlib.h:40:7: note: previous declaration of 'malloc' with type 'void *(long unsigned int)'
40 | void *malloc (size_t);
| ^~~~~~
make[3]: *** [Makefile:590: modechange.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
[empty output]
compile-bench> cd coreutils-5.0 && make make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT modechange.o -MD -MP -MF ".deps/modechange.Tpo" \
-c -o modechange.o `test -f 'modechange.c' || echo './'`modechange.c; \
then mv ".deps/modechange.Tpo" ".deps/modechange.Po"; \
else rm -f ".deps/modechange.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT offtostr.o -MD -MP -MF ".deps/offtostr.Tpo" \
-c -o offtostr.o `test -f 'offtostr.c' || echo './'`offtostr.c; \
then mv ".deps/offtostr.Tpo" ".deps/offtostr.Po"; \
else rm -f ".deps/offtostr.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT path-concat.o -MD -MP -MF ".deps/path-concat.Tpo" \
-c -o path-concat.o `test -f 'path-concat.c' || echo './'`path-concat.c; \
then mv ".deps/path-concat.Tpo" ".deps/path-concat.Po"; \
else rm -f ".deps/path-concat.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT physmem.o -MD -MP -MF ".deps/physmem.Tpo" \
-c -o physmem.o `test -f 'physmem.c' || echo './'`physmem.c; \
then mv ".deps/physmem.Tpo" ".deps/physmem.Po"; \
else rm -f ".deps/physmem.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT quote.o -MD -MP -MF ".deps/quote.Tpo" \
-c -o quote.o `test -f 'quote.c' || echo './'`quote.c; \
then mv ".deps/quote.Tpo" ".deps/quote.Po"; \
else rm -f ".deps/quote.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT quotearg.o -MD -MP -MF ".deps/quotearg.Tpo" \
-c -o quotearg.o `test -f 'quotearg.c' || echo './'`quotearg.c; \
then mv ".deps/quotearg.Tpo" ".deps/quotearg.Po"; \
else rm -f ".deps/quotearg.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT readtokens.o -MD -MP -MF ".deps/readtokens.Tpo" \
-c -o readtokens.o `test -f 'readtokens.c' || echo './'`readtokens.c; \
then mv ".deps/readtokens.Tpo" ".deps/readtokens.Po"; \
else rm -f ".deps/readtokens.Tpo"; exit 1; \
fi
readtokens.c: In function 'readtoken':
readtokens.c:92:5: error: implicit declaration of function 'abort' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
92 | abort ();
| ^~~~~
readtokens.c:54:1: note: include '<stdlib.h>' or provide a declaration of 'abort'
53 | #include "xalloc.h"
+++ |+#include <stdlib.h>
54 |
readtokens.c:92:5: warning: incompatible implicit declaration of built-in function 'abort' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
92 | abort ();
| ^~~~~
readtokens.c:92:5: note: include '<stdlib.h>' or provide a declaration of 'abort'
readtokens.c: In function 'readtokens':
readtokens.c:216:3: error: implicit declaration of function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
216 | free (token->buffer);
| ^~~~
readtokens.c:216:3: note: include '<stdlib.h>' or provide a declaration of 'free'
readtokens.c:216:3: warning: incompatible implicit declaration of built-in function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
readtokens.c:216:3: note: include '<stdlib.h>' or provide a declaration of 'free'
make[3]: *** [Makefile:590: readtokens.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
↓ 68 lines
make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT modechange.o -MD -MP -MF ".deps/modechange.Tpo" \
-c -o modechange.o `test -f 'modechange.c' || echo './'`modechange.c; \
then mv ".deps/modechange.Tpo" ".deps/modechange.Po"; \
else rm -f ".deps/modechange.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT offtostr.o -MD -MP -MF ".deps/offtostr.Tpo" \
-c -o offtostr.o `test -f 'offtostr.c' || echo './'`offtostr.c; \
then mv ".deps/offtostr.Tpo" ".deps/offtostr.Po"; \
else rm -f ".deps/offtostr.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT path-concat.o -MD -MP -MF ".deps/path-concat.Tpo" \
-c -o path-concat.o `test -f 'path-concat.c' || echo './'`path-concat.c; \
then mv ".deps/path-concat.Tpo" ".deps/path-concat.Po"; \
else rm -f ".deps/path-concat.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT physmem.o -MD -MP -MF ".deps/physmem.Tpo" \
-c -o physmem.o `test -f 'physmem.c' || echo './'`physmem.c; \
then mv ".deps/physmem.Tpo" ".deps/physmem.Po"; \
else rm -f ".deps/physmem.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT quote.o -MD -MP -MF ".deps/quote.Tpo" \
-c -o quote.o `test -f 'quote.c' || echo './'`quote.c; \
then mv ".deps/quote.Tpo" ".deps/quote.Po"; \
else rm -f ".deps/quote.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT quotearg.o -MD -MP -MF ".deps/quotearg.Tpo" \
-c -o quotearg.o `test -f 'quotearg.c' || echo './'`quotearg.c; \
then mv ".deps/quotearg.Tpo" ".deps/quotearg.Po"; \
else rm -f ".deps/quotearg.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT readtokens.o -MD -MP -MF ".deps/readtokens.Tpo" \
-c -o readtokens.o `test -f 'readtokens.c' || echo './'`readtokens.c; \
then mv ".deps/readtokens.Tpo" ".deps/readtokens.Po"; \
else rm -f ".deps/readtokens.Tpo"; exit 1; \
fi
readtokens.c: In function 'readtoken':
readtokens.c:92:5: error: implicit declaration of function 'abort' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
92 | abort ();
| ^~~~~
readtokens.c:54:1: note: include '<stdlib.h>' or provide a declaration of 'abort'
53 | #include "xalloc.h"
+++ |+#include <stdlib.h>
54 |
readtokens.c:92:5: warning: incompatible implicit declaration of built-in function 'abort' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
92 | abort ();
| ^~~~~
readtokens.c:92:5: note: include '<stdlib.h>' or provide a declaration of 'abort'
readtokens.c: In function 'readtokens':
readtokens.c:216:3: error: implicit declaration of function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
216 | free (token->buffer);
| ^~~~
readtokens.c:216:3: note: include '<stdlib.h>' or provide a declaration of 'free'
readtokens.c:216:3: warning: incompatible implicit declaration of built-in function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
readtokens.c:216:3: note: include '<stdlib.h>' or provide a declaration of 'free'
make[3]: *** [Makefile:590: readtokens.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
compile-bench> cd coreutils-5.0 && head -60 lib/readtokens.c /* readtokens.c -- Functions for reading tokens from an input stream.
Copyright (C) 1990-1991, 1999, 2001, 2003 Jim Meyering.
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.
Written by Jim Meyering. */
/* This almost supercedes xreadline stuff -- using delim="\n"
gives the same functionality, except that these functions
would never return empty lines.
To Do:
- To allow '\0' as a delimiter, I will have to change
interfaces to permit specification of delimiter-string
length.
*/
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdio.h>
#ifdef STDC_HEADERS
# include <stdlib.h>
#endif
#if defined (STDC_HEADERS) || defined(HAVE_STRING_H)
# include <string.h>
/* An ANSI string.h and pre-ANSI memory.h might conflict. */
# if !defined (STDC_HEADERS) && defined (HAVE_MEMORY_H)
# include <memory.h>
# endif /* not STDC_HEADERS and HAVE_MEMORY_H */
#else /* not STDC_HEADERS and not HAVE_STRING_H */
# include <strings.h>
/* memory.h and strings.h conflict on some systems. */
#endif /* not STDC_HEADERS and not HAVE_STRING_H */
#include "readtokens.h"
#include "unlocked-io.h"
#include "xalloc.h"
#define STREQ(a,b) ((a) == (b) || ((a) && (b) && *(a) == *(b) \
&& strcmp(a, b) == 0))
/* Initialize a tokenbuffer. */
void
↓ 61 lines
/* readtokens.c -- Functions for reading tokens from an input stream.
Copyright (C) 1990-1991, 1999, 2001, 2003 Jim Meyering.
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.
Written by Jim Meyering. */
/* This almost supercedes xreadline stuff -- using delim="\n"
gives the same functionality, except that these functions
would never return empty lines.
To Do:
- To allow '\0' as a delimiter, I will have to change
interfaces to permit specification of delimiter-string
length.
*/
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdio.h>
#ifdef STDC_HEADERS
# include <stdlib.h>
#endif
#if defined (STDC_HEADERS) || defined(HAVE_STRING_H)
# include <string.h>
/* An ANSI string.h and pre-ANSI memory.h might conflict. */
# if !defined (STDC_HEADERS) && defined (HAVE_MEMORY_H)
# include <memory.h>
# endif /* not STDC_HEADERS and HAVE_MEMORY_H */
#else /* not STDC_HEADERS and not HAVE_STRING_H */
# include <strings.h>
/* memory.h and strings.h conflict on some systems. */
#endif /* not STDC_HEADERS and not HAVE_STRING_H */
#include "readtokens.h"
#include "unlocked-io.h"
#include "xalloc.h"
#define STREQ(a,b) ((a) == (b) || ((a) && (b) && *(a) == *(b) \
&& strcmp(a, b) == 0))
/* Initialize a tokenbuffer. */
void
[empty output]
compile-bench> cd coreutils-5.0 && make make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT readtokens.o -MD -MP -MF ".deps/readtokens.Tpo" \
-c -o readtokens.o `test -f 'readtokens.c' || echo './'`readtokens.c; \
then mv ".deps/readtokens.Tpo" ".deps/readtokens.Po"; \
else rm -f ".deps/readtokens.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT safe-read.o -MD -MP -MF ".deps/safe-read.Tpo" \
-c -o safe-read.o `test -f 'safe-read.c' || echo './'`safe-read.c; \
then mv ".deps/safe-read.Tpo" ".deps/safe-read.Po"; \
else rm -f ".deps/safe-read.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT safe-write.o -MD -MP -MF ".deps/safe-write.Tpo" \
-c -o safe-write.o `test -f 'safe-write.c' || echo './'`safe-write.c; \
then mv ".deps/safe-write.Tpo" ".deps/safe-write.Po"; \
else rm -f ".deps/safe-write.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT same.o -MD -MP -MF ".deps/same.Tpo" \
-c -o same.o `test -f 'same.c' || echo './'`same.c; \
then mv ".deps/same.Tpo" ".deps/same.Po"; \
else rm -f ".deps/same.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT save-cwd.o -MD -MP -MF ".deps/save-cwd.Tpo" \
-c -o save-cwd.o `test -f 'save-cwd.c' || echo './'`save-cwd.c; \
then mv ".deps/save-cwd.Tpo" ".deps/save-cwd.Po"; \
else rm -f ".deps/save-cwd.Tpo"; exit 1; \
fi
save-cwd.c: In function 'free_cwd':
save-cwd.c:145:5: error: implicit declaration of function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
145 | free (cwd->name);
| ^~~~
save-cwd.c:52:1: note: include '<stdlib.h>' or provide a declaration of 'free'
51 | #include "xgetcwd.h"
+++ |+#include <stdlib.h>
52 |
save-cwd.c:145:5: warning: incompatible implicit declaration of built-in function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
145 | free (cwd->name);
| ^~~~
save-cwd.c:145:5: note: include '<stdlib.h>' or provide a declaration of 'free'
make[3]: *** [Makefile:590: save-cwd.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
↓ 51 lines
make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT readtokens.o -MD -MP -MF ".deps/readtokens.Tpo" \
-c -o readtokens.o `test -f 'readtokens.c' || echo './'`readtokens.c; \
then mv ".deps/readtokens.Tpo" ".deps/readtokens.Po"; \
else rm -f ".deps/readtokens.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT safe-read.o -MD -MP -MF ".deps/safe-read.Tpo" \
-c -o safe-read.o `test -f 'safe-read.c' || echo './'`safe-read.c; \
then mv ".deps/safe-read.Tpo" ".deps/safe-read.Po"; \
else rm -f ".deps/safe-read.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT safe-write.o -MD -MP -MF ".deps/safe-write.Tpo" \
-c -o safe-write.o `test -f 'safe-write.c' || echo './'`safe-write.c; \
then mv ".deps/safe-write.Tpo" ".deps/safe-write.Po"; \
else rm -f ".deps/safe-write.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT same.o -MD -MP -MF ".deps/same.Tpo" \
-c -o same.o `test -f 'same.c' || echo './'`same.c; \
then mv ".deps/same.Tpo" ".deps/same.Po"; \
else rm -f ".deps/same.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT save-cwd.o -MD -MP -MF ".deps/save-cwd.Tpo" \
-c -o save-cwd.o `test -f 'save-cwd.c' || echo './'`save-cwd.c; \
then mv ".deps/save-cwd.Tpo" ".deps/save-cwd.Po"; \
else rm -f ".deps/save-cwd.Tpo"; exit 1; \
fi
save-cwd.c: In function 'free_cwd':
save-cwd.c:145:5: error: implicit declaration of function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
145 | free (cwd->name);
| ^~~~
save-cwd.c:52:1: note: include '<stdlib.h>' or provide a declaration of 'free'
51 | #include "xgetcwd.h"
+++ |+#include <stdlib.h>
52 |
save-cwd.c:145:5: warning: incompatible implicit declaration of built-in function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
145 | free (cwd->name);
| ^~~~
save-cwd.c:145:5: note: include '<stdlib.h>' or provide a declaration of 'free'
make[3]: *** [Makefile:590: save-cwd.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
Show reasoning
I see another compilation error with save-cwd.c due to missing stdlib.h include. Instead of fixing each file individually, let me try a more systematic approach. Since these issues stem from STDC_HEADERS not being defined properly, let me try to see if there's a pattern I can fix more efficiently.
Let me check what files are causing issues and try to fix them more systematically.
[empty output]
compile-bench> cd coreutils-5.0 && make make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT save-cwd.o -MD -MP -MF ".deps/save-cwd.Tpo" \
-c -o save-cwd.o `test -f 'save-cwd.c' || echo './'`save-cwd.c; \
then mv ".deps/save-cwd.Tpo" ".deps/save-cwd.Po"; \
else rm -f ".deps/save-cwd.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT savedir.o -MD -MP -MF ".deps/savedir.Tpo" \
-c -o savedir.o `test -f 'savedir.c' || echo './'`savedir.c; \
then mv ".deps/savedir.Tpo" ".deps/savedir.Po"; \
else rm -f ".deps/savedir.Tpo"; exit 1; \
fi
savedir.c: In function 'savedir':
savedir.c:99:31: error: implicit declaration of function 'strlen' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
99 | size_t entry_size = strlen (entry) + 1;
| ^~~~~~
savedir.c:65:1: note: include '<string.h>' or provide a declaration of 'strlen'
64 | #include "xalloc.h"
+++ |+#include <string.h>
65 |
savedir.c:99:31: warning: incompatible implicit declaration of built-in function 'strlen' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
99 | size_t entry_size = strlen (entry) + 1;
| ^~~~~~
savedir.c:99:31: note: include '<string.h>' or provide a declaration of 'strlen'
savedir.c:114:11: error: implicit declaration of function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
114 | memcpy (name_space + used, entry, entry_size);
| ^~~~~~
savedir.c:114:11: note: include '<string.h>' or provide a declaration of 'memcpy'
savedir.c:114:11: warning: incompatible implicit declaration of built-in function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
savedir.c:114:11: note: include '<string.h>' or provide a declaration of 'memcpy'
savedir.c:124:7: error: implicit declaration of function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
124 | free (name_space);
| ^~~~
savedir.c:65:1: note: include '<stdlib.h>' or provide a declaration of 'free'
64 | #include "xalloc.h"
+++ |+#include <stdlib.h>
65 |
savedir.c:124:7: warning: incompatible implicit declaration of built-in function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
124 | free (name_space);
| ^~~~
savedir.c:124:7: note: include '<stdlib.h>' or provide a declaration of 'free'
make[3]: *** [Makefile:590: savedir.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
↓ 53 lines
make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT save-cwd.o -MD -MP -MF ".deps/save-cwd.Tpo" \
-c -o save-cwd.o `test -f 'save-cwd.c' || echo './'`save-cwd.c; \
then mv ".deps/save-cwd.Tpo" ".deps/save-cwd.Po"; \
else rm -f ".deps/save-cwd.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT savedir.o -MD -MP -MF ".deps/savedir.Tpo" \
-c -o savedir.o `test -f 'savedir.c' || echo './'`savedir.c; \
then mv ".deps/savedir.Tpo" ".deps/savedir.Po"; \
else rm -f ".deps/savedir.Tpo"; exit 1; \
fi
savedir.c: In function 'savedir':
savedir.c:99:31: error: implicit declaration of function 'strlen' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
99 | size_t entry_size = strlen (entry) + 1;
| ^~~~~~
savedir.c:65:1: note: include '<string.h>' or provide a declaration of 'strlen'
64 | #include "xalloc.h"
+++ |+#include <string.h>
65 |
savedir.c:99:31: warning: incompatible implicit declaration of built-in function 'strlen' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
99 | size_t entry_size = strlen (entry) + 1;
| ^~~~~~
savedir.c:99:31: note: include '<string.h>' or provide a declaration of 'strlen'
savedir.c:114:11: error: implicit declaration of function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
114 | memcpy (name_space + used, entry, entry_size);
| ^~~~~~
savedir.c:114:11: note: include '<string.h>' or provide a declaration of 'memcpy'
savedir.c:114:11: warning: incompatible implicit declaration of built-in function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
savedir.c:114:11: note: include '<string.h>' or provide a declaration of 'memcpy'
savedir.c:124:7: error: implicit declaration of function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
124 | free (name_space);
| ^~~~
savedir.c:65:1: note: include '<stdlib.h>' or provide a declaration of 'free'
64 | #include "xalloc.h"
+++ |+#include <stdlib.h>
65 |
savedir.c:124:7: warning: incompatible implicit declaration of built-in function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
124 | free (name_space);
| ^~~~
savedir.c:124:7: note: include '<stdlib.h>' or provide a declaration of 'free'
make[3]: *** [Makefile:590: savedir.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
[empty output]
compile-bench> cd coreutils-5.0 && make make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT savedir.o -MD -MP -MF ".deps/savedir.Tpo" \
-c -o savedir.o `test -f 'savedir.c' || echo './'`savedir.c; \
then mv ".deps/savedir.Tpo" ".deps/savedir.Po"; \
else rm -f ".deps/savedir.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT settime.o -MD -MP -MF ".deps/settime.Tpo" \
-c -o settime.o `test -f 'settime.c' || echo './'`settime.c; \
then mv ".deps/settime.Tpo" ".deps/settime.Po"; \
else rm -f ".deps/settime.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT sha.o -MD -MP -MF ".deps/sha.Tpo" \
-c -o sha.o `test -f 'sha.c' || echo './'`sha.c; \
then mv ".deps/sha.Tpo" ".deps/sha.Po"; \
else rm -f ".deps/sha.Tpo"; exit 1; \
fi
sha.c: In function 'sha_finish_ctx':
sha.c:109:3: error: implicit declaration of function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
109 | memcpy (&ctx->buffer[bytes], fillbuf, pad);
| ^~~~~~
sha.c:28:1: note: include '<string.h>' or provide a declaration of 'memcpy'
27 | #include "unlocked-io.h"
+++ |+#include <string.h>
28 |
sha.c:109:3: warning: incompatible implicit declaration of built-in function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
109 | memcpy (&ctx->buffer[bytes], fillbuf, pad);
| ^~~~~~
sha.c:109:3: note: include '<string.h>' or provide a declaration of 'memcpy'
sha.c: In function 'sha_process_bytes':
sha.c:217:7: warning: incompatible implicit declaration of built-in function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
217 | memcpy (&ctx->buffer[left_over], buffer, add);
| ^~~~~~
sha.c:217:7: note: include '<string.h>' or provide a declaration of 'memcpy'
sha.c:248:32: warning: incompatible implicit declaration of built-in function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
248 | sha_process_block (memcpy (ctx->buffer, buffer, 64), 64, ctx);
| ^~~~~~
sha.c:248:32: note: include '<string.h>' or provide a declaration of 'memcpy'
sha.c:266:7: warning: incompatible implicit declaration of built-in function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
266 | memcpy (&ctx->buffer[left_over], buffer, len);
| ^~~~~~
sha.c:266:7: note: include '<string.h>' or provide a declaration of 'memcpy'
make[3]: *** [Makefile:590: sha.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
↓ 54 lines
make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT savedir.o -MD -MP -MF ".deps/savedir.Tpo" \
-c -o savedir.o `test -f 'savedir.c' || echo './'`savedir.c; \
then mv ".deps/savedir.Tpo" ".deps/savedir.Po"; \
else rm -f ".deps/savedir.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT settime.o -MD -MP -MF ".deps/settime.Tpo" \
-c -o settime.o `test -f 'settime.c' || echo './'`settime.c; \
then mv ".deps/settime.Tpo" ".deps/settime.Po"; \
else rm -f ".deps/settime.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT sha.o -MD -MP -MF ".deps/sha.Tpo" \
-c -o sha.o `test -f 'sha.c' || echo './'`sha.c; \
then mv ".deps/sha.Tpo" ".deps/sha.Po"; \
else rm -f ".deps/sha.Tpo"; exit 1; \
fi
sha.c: In function 'sha_finish_ctx':
sha.c:109:3: error: implicit declaration of function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
109 | memcpy (&ctx->buffer[bytes], fillbuf, pad);
| ^~~~~~
sha.c:28:1: note: include '<string.h>' or provide a declaration of 'memcpy'
27 | #include "unlocked-io.h"
+++ |+#include <string.h>
28 |
sha.c:109:3: warning: incompatible implicit declaration of built-in function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
109 | memcpy (&ctx->buffer[bytes], fillbuf, pad);
| ^~~~~~
sha.c:109:3: note: include '<string.h>' or provide a declaration of 'memcpy'
sha.c: In function 'sha_process_bytes':
sha.c:217:7: warning: incompatible implicit declaration of built-in function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
217 | memcpy (&ctx->buffer[left_over], buffer, add);
| ^~~~~~
sha.c:217:7: note: include '<string.h>' or provide a declaration of 'memcpy'
sha.c:248:32: warning: incompatible implicit declaration of built-in function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
248 | sha_process_block (memcpy (ctx->buffer, buffer, 64), 64, ctx);
| ^~~~~~
sha.c:248:32: note: include '<string.h>' or provide a declaration of 'memcpy'
sha.c:266:7: warning: incompatible implicit declaration of built-in function 'memcpy' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
266 | memcpy (&ctx->buffer[left_over], buffer, len);
| ^~~~~~
sha.c:266:7: note: include '<string.h>' or provide a declaration of 'memcpy'
make[3]: *** [Makefile:590: sha.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
Show reasoning
I'm running into the same pattern again - missing includes for standard library functions. The SHA code is missing string.h for memcpy. Let me fix this quickly and see if we can get through the compilation.
[empty output]
Show reasoning
This pattern of missing headers is going to continue for many files. I should try to run make again and continue to fix the compilation errors one by one, or I could try a different approach.
Looking at the pattern, it seems like the configure script didn't properly detect the system headers because STDC_HEADERS is undefined. This means the conditional includes aren't working properly.
Instead of fixing each file individually, I could try to set CPPFLAGS to force the system to recognize standard headers, or I could try to see if there's a more systematic issue.
Let me try adding the include directives more systematically by modifying the compilation flags.
compile-bench> cd coreutils-5.0 && make make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT sha.o -MD -MP -MF ".deps/sha.Tpo" \
-c -o sha.o `test -f 'sha.c' || echo './'`sha.c; \
then mv ".deps/sha.Tpo" ".deps/sha.Po"; \
else rm -f ".deps/sha.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT stripslash.o -MD -MP -MF ".deps/stripslash.Tpo" \
-c -o stripslash.o `test -f 'stripslash.c' || echo './'`stripslash.c; \
then mv ".deps/stripslash.Tpo" ".deps/stripslash.Po"; \
else rm -f ".deps/stripslash.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT umaxtostr.o -MD -MP -MF ".deps/umaxtostr.Tpo" \
-c -o umaxtostr.o `test -f 'umaxtostr.c' || echo './'`umaxtostr.c; \
then mv ".deps/umaxtostr.Tpo" ".deps/umaxtostr.Po"; \
else rm -f ".deps/umaxtostr.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT unicodeio.o -MD -MP -MF ".deps/unicodeio.Tpo" \
-c -o unicodeio.o `test -f 'unicodeio.c' || echo './'`unicodeio.c; \
then mv ".deps/unicodeio.Tpo" ".deps/unicodeio.Po"; \
else rm -f ".deps/unicodeio.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT userspec.o -MD -MP -MF ".deps/userspec.Tpo" \
-c -o userspec.o `test -f 'userspec.c' || echo './'`userspec.c; \
then mv ".deps/userspec.Tpo" ".deps/userspec.Po"; \
else rm -f ".deps/userspec.Tpo"; exit 1; \
fi
userspec.c: In function 'parse_user_spec':
userspec.c:332:19: error: implicit declaration of function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
332 | free (*username_arg);
| ^~~~
userspec.c:72:1: note: include '<stdlib.h>' or provide a declaration of 'free'
71 | #include "gettext.h"
+++ |+#include <stdlib.h>
72 | #define _(msgid) gettext (msgid)
userspec.c:332:19: warning: incompatible implicit declaration of built-in function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
332 | free (*username_arg);
| ^~~~
userspec.c:332:19: note: include '<stdlib.h>' or provide a declaration of 'free'
make[3]: *** [Makefile:590: userspec.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
↓ 51 lines
make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT sha.o -MD -MP -MF ".deps/sha.Tpo" \
-c -o sha.o `test -f 'sha.c' || echo './'`sha.c; \
then mv ".deps/sha.Tpo" ".deps/sha.Po"; \
else rm -f ".deps/sha.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT stripslash.o -MD -MP -MF ".deps/stripslash.Tpo" \
-c -o stripslash.o `test -f 'stripslash.c' || echo './'`stripslash.c; \
then mv ".deps/stripslash.Tpo" ".deps/stripslash.Po"; \
else rm -f ".deps/stripslash.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT umaxtostr.o -MD -MP -MF ".deps/umaxtostr.Tpo" \
-c -o umaxtostr.o `test -f 'umaxtostr.c' || echo './'`umaxtostr.c; \
then mv ".deps/umaxtostr.Tpo" ".deps/umaxtostr.Po"; \
else rm -f ".deps/umaxtostr.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT unicodeio.o -MD -MP -MF ".deps/unicodeio.Tpo" \
-c -o unicodeio.o `test -f 'unicodeio.c' || echo './'`unicodeio.c; \
then mv ".deps/unicodeio.Tpo" ".deps/unicodeio.Po"; \
else rm -f ".deps/unicodeio.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT userspec.o -MD -MP -MF ".deps/userspec.Tpo" \
-c -o userspec.o `test -f 'userspec.c' || echo './'`userspec.c; \
then mv ".deps/userspec.Tpo" ".deps/userspec.Po"; \
else rm -f ".deps/userspec.Tpo"; exit 1; \
fi
userspec.c: In function 'parse_user_spec':
userspec.c:332:19: error: implicit declaration of function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
332 | free (*username_arg);
| ^~~~
userspec.c:72:1: note: include '<stdlib.h>' or provide a declaration of 'free'
71 | #include "gettext.h"
+++ |+#include <stdlib.h>
72 | #define _(msgid) gettext (msgid)
userspec.c:332:19: warning: incompatible implicit declaration of built-in function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
332 | free (*username_arg);
| ^~~~
userspec.c:332:19: note: include '<stdlib.h>' or provide a declaration of 'free'
make[3]: *** [Makefile:590: userspec.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
Show reasoning
I see that this pattern is continuing - there are many files in the lib directory that are missing proper includes for standard headers like
Let me look at what's happening with STDC_HEADERS in config.h. Earlier I saw that STDC_HEADERS is undefined. This means the conditional compilation logic in many files is not including the standard headers properly.
Instead of fixing each file individually, let me try to force STDC_HEADERS to be defined, which should make all the conditional includes work properly.
[empty output]
1258:/* #define STDC_HEADERS */
[empty output]
[empty output]
compile-bench> cd coreutils-5.0 && make clean Making clean in tests
make[1]: Entering directory '/home/peter/coreutils-5.0/tests'
Making clean in wc
make[2]: Entering directory '/home/peter/coreutils-5.0/tests/wc'
test -z "a0.O a0.E a1.O a1.E a2.O a2.E a3.O a3.E a4.O a4.E a5.O a5.E a6.O a6.E a7.O a7.E a8.O a8.E a9.O a9.E b0.O b0.E b1.O b1.E c0.O c0.E c1.O c1.E c2.O c2.E" || rm -f a0.O a0.E a1.O a1.E a2.O a2.E a3.O a3.E a4.O a4.E a5.O a5.E a6.O a6.E a7.O a7.E a8.O a8.E a9.O a9.E b0.O b0.E b1.O b1.E c0.O c0.E c1.O c1.E c2.O c2.E
make[2]: Leaving directory '/home/peter/coreutils-5.0/tests/wc'
Making clean in uniq
make[2]: Entering directory '/home/peter/coreutils-5.0/tests/uniq'
test -z "1.O 1.E 2.O 2.E 3.O 3.E 4.O 4.E 5.O 5.E 6.O 6.E 7.O 7.E 8.O 8.E 9.O 9.E 10.O 10.E 11.O 11.E 12.O 12.E 13.O 13.E 20.O 20.E 21.O 21.E 22.O 22.E 23.O 23.E obs30.O obs30.E 31.O 31.E 32.O 32.E 33.O 33.E 34.O 34.E 35.O 35.E obs40.O obs40.E obs41.O obs41.E 42.O 42.E 43.O 43.E obs44.O obs44.E obs45.O obs45.E 50.O 50.E 51.O 51.E 52.O 52.E 53.O 53.E 54.O 54.E 55.O 55.E 56.O 56.E 57.O 57.E 60.O 60.E 61.O 61.E 62.O 62.E 63.O 63.E 64.O 64.E 65.O 65.E 90.O 90.E 91.O 91.E 92.O 92.E 93.O 93.E 94.O 94.E 101.O 101.E 102.O 102.E 110.O 110.E 111.O 111.E 112.O 112.E 113.O 113.E 114.O 114.E 115.O 115.E 116.O 116.E 117.O 117.E 118.O 118.E 119.O 119.E" || rm -f 1.O 1.E 2.O 2.E 3.O 3.E 4.O 4.E 5.O 5.E 6.O 6.E 7.O 7.E 8.O 8.E 9.O 9.E 10.O 10.E 11.O 11.E 12.O 12.E 13.O 13.E 20.O 20.E 21.O 21.E 22.O 22.E 23.O 23.E obs30.O obs30.E 31.O 31.E 32.O 32.E 33.O 33.E 34.O 34.E 35.O 35.E obs40.O obs40.E obs41.O obs41.E 42.O 42.E 43.O 43.E obs44.O obs44.E obs45.O obs45.E 50.O 50.E 51.O 51.E 52.O 52.E 53.O 53.E 54.O 54.E 55.O 55.E 56.O 56.E 57.O 57.E 60.O 60.E 61.O 61.E 62.O 62.E 63.O 63.E 64.O 64.E 65.O 65.E 90.O 90.E 91.O 91.E 92.O 92.E 93.O 93.E 94.O 94.E 101.O 101.E 102.O 102.E 110.O 110.E 111.O 111.E 112.O 112.E 113.O 113.E 114.O 114.E 115.O 115.E 116.O 116.E 117.O 117.E 118.O 118.E 119.O 119.E
make[2]: Leaving directory '/home/peter/coreutils-5.0/tests/uniq'
Making clean in unexpand
make[2]: Entering directory '/home/peter/coreutils-5.0/tests/unexpand'
make[2]: Nothing to be done for 'clean'.
make[2]: Leaving directory '/home/peter/coreutils-5.0/tests/unexpand'
Making clean in tsort
make[2]: Entering directory '/home/peter/coreutils-5.0/tests/tsort'
make[2]: Nothing to be done for 'clean'.
make[2]: Leaving directory '/home/peter/coreutils-5.0/tests/tsort'
Making clean in tr
make[2]: Entering directory '/home/peter/coreutils-5.0/tests/tr'
test -z "1.O 1.E 2.O 2.E 3.O 3.E 4.O 4.E 5.O 5.E 6.O 6.E 7.O 7.E 8.O 8.E 9.O 9.E a.O a.E b.O b.E c.O c.E d.O d.E e.O e.E f.O f.E g.O g.E h.O h.E i.O i.E j.O j.E k.O k.E l.O l.E m.O m.E n.O n.E o.O o.E p.O p.E q.O q.E r.O r.E s.O s.E t.O t.E u.O u.E v.O v.E w.O w.E x.O x.E y.O y.E z.O z.E range-a-a.O range-a-a.E null.O null.E upcase.O upcase.E dncase.O dncase.E rep-cclass.O rep-cclass.E rep-1.O rep-1.E rep-2.O rep-2.E rep-3.O rep-3.E o-rep-1.O o-rep-1.E o-rep-2.O o-rep-2.E esc.O esc.E ross-0
[command output truncated]
coreutils.1po coreutils.2po *.new.po
rm -fr *.o
make[1]: Leaving directory '/home/peter/coreutils-5.0/po'
Making clean in m4
make[1]: Entering directory '/home/peter/coreutils-5.0/m4'
make[1]: Nothing to be done for 'clean'.
make[1]: Leaving directory '/home/peter/coreutils-5.0/m4'
Making clean in man
make[1]: Entering directory '/home/peter/coreutils-5.0/man'
make[1]: Nothing to be done for 'clean'.
make[1]: Leaving directory '/home/peter/coreutils-5.0/man'
Making clean in doc
make[1]: Entering directory '/home/peter/coreutils-5.0/doc'
rm -f coreutils.aux coreutils.cp coreutils.cps coreutils.fl coreutils.fn \
coreutils.ky coreutils.log coreutils.op coreutils.pg \
coreutils.tmp coreutils.toc coreutils.tp coreutils.tps \
coreutils.vr coreutils.dvi coreutils.pdf coreutils.ps
rm -f vti.tmp
make[1]: Leaving directory '/home/peter/coreutils-5.0/doc'
Making clean in src
make[1]: Entering directory '/home/peter/coreutils-5.0/src'
test -z "chgrp chown chmod cp dd dircolors du ginstall link ln dir vdir ls mkdir mkfifo mknod mv readlink rm rmdir shred stat sync touch unlink cat cksum comm csplit cut expand fmt fold head join md5sum nl od paste pr ptx sha1sum sort split sum tac tail tr tsort unexpand uniq wc basename date dirname echo env expr factor false hostname id kill logname pathchk printenv printf pwd seq sleep tee test true tty whoami yes uname chroot hostid nice pinky users who " || rm -f chgrp chown chmod cp dd dircolors du ginstall link ln dir vdir ls mkdir mkfifo mknod mv readlink rm rmdir shred stat sync touch unlink cat cksum comm csplit cut expand fmt fold head join md5sum nl od paste pr ptx sha1sum sort split sum tac tail tr tsort unexpand uniq wc basename date dirname echo env expr factor false hostname id kill logname pathchk printenv printf pwd seq sleep tee test true tty whoami yes uname chroot hostid nice pinky users who > /dev/null 2>&1 || /bin/rm -f chgrp chown chmod cp dd dircolors du ginstall link ln dir vdir ls mkdir mkfifo mknod mv readlink rm rmdir shred stat sync touch unlink cat cksum comm csplit cut expand fmt fold head join md5sum nl od paste pr ptx sha1sum sort split sum tac tail tr tsort unexpand uniq wc basename date dirname echo env expr factor false hostname id kill logname pathchk printenv printf pwd seq sleep tee test true tty whoami yes uname chroot hostid nice pinky users who
test -z "groups nohup su" || rm -f groups nohup su
rm -f *.o core *.core
make[1]: Leaving directory '/home/peter/coreutils-5.0/src'
Making clean in lib
make[1]: Entering directory '/home/peter/coreutils-5.0/lib'
test -z "charset.alias ref-add.sed ref-del.sed" || rm -f charset.alias ref-add.sed ref-del.sed
test -z "libfetish.a" || rm -f libfetish.a
rm -f *.o core *.core
make[1]: Leaving directory '/home/peter/coreutils-5.0/lib'
Making clean in .
make[1]: Entering directory '/home/peter/coreutils-5.0'
make[1]: Nothing to be done for 'clean-am'.
make[1]: Leaving directory '/home/peter/coreutils-5.0'
↓ 58 lines
Making clean in tests make[1]: Entering directory '/home/peter/coreutils-5.0/tests' Making clean in wc make[2]: Entering directory '/home/peter/coreutils-5.0/tests/wc' test -z "a0.O a0.E a1.O a1.E a2.O a2.E a3.O a3.E a4.O a4.E a5.O a5.E a6.O a6.E a7.O a7.E a8.O a8.E a9.O a9.E b0.O b0.E b1.O b1.E c0.O c0.E c1.O c1.E c2.O c2.E" || rm -f a0.O a0.E a1.O a1.E a2.O a2.E a3.O a3.E a4.O a4.E a5.O a5.E a6.O a6.E a7.O a7.E a8.O a8.E a9.O a9.E b0.O b0.E b1.O b1.E c0.O c0.E c1.O c1.E c2.O c2.E make[2]: Leaving directory '/home/peter/coreutils-5.0/tests/wc' Making clean in uniq make[2]: Entering directory '/home/peter/coreutils-5.0/tests/uniq' test -z "1.O 1.E 2.O 2.E 3.O 3.E 4.O 4.E 5.O 5.E 6.O 6.E 7.O 7.E 8.O 8.E 9.O 9.E 10.O 10.E 11.O 11.E 12.O 12.E 13.O 13.E 20.O 20.E 21.O 21.E 22.O 22.E 23.O 23.E obs30.O obs30.E 31.O 31.E 32.O 32.E 33.O 33.E 34.O 34.E 35.O 35.E obs40.O obs40.E obs41.O obs41.E 42.O 42.E 43.O 43.E obs44.O obs44.E obs45.O obs45.E 50.O 50.E 51.O 51.E 52.O 52.E 53.O 53.E 54.O 54.E 55.O 55.E 56.O 56.E 57.O 57.E 60.O 60.E 61.O 61.E 62.O 62.E 63.O 63.E 64.O 64.E 65.O 65.E 90.O 90.E 91.O 91.E 92.O 92.E 93.O 93.E 94.O 94.E 101.O 101.E 102.O 102.E 110.O 110.E 111.O 111.E 112.O 112.E 113.O 113.E 114.O 114.E 115.O 115.E 116.O 116.E 117.O 117.E 118.O 118.E 119.O 119.E" || rm -f 1.O 1.E 2.O 2.E 3.O 3.E 4.O 4.E 5.O 5.E 6.O 6.E 7.O 7.E 8.O 8.E 9.O 9.E 10.O 10.E 11.O 11.E 12.O 12.E 13.O 13.E 20.O 20.E 21.O 21.E 22.O 22.E 23.O 23.E obs30.O obs30.E 31.O 31.E 32.O 32.E 33.O 33.E 34.O 34.E 35.O 35.E obs40.O obs40.E obs41.O obs41.E 42.O 42.E 43.O 43.E obs44.O obs44.E obs45.O obs45.E 50.O 50.E 51.O 51.E 52.O 52.E 53.O 53.E 54.O 54.E 55.O 55.E 56.O 56.E 57.O 57.E 60.O 60.E 61.O 61.E 62.O 62.E 63.O 63.E 64.O 64.E 65.O 65.E 90.O 90.E 91.O 91.E 92.O 92.E 93.O 93.E 94.O 94.E 101.O 101.E 102.O 102.E 110.O 110.E 111.O 111.E 112.O 112.E 113.O 113.E 114.O 114.E 115.O 115.E 116.O 116.E 117.O 117.E 118.O 118.E 119.O 119.E make[2]: Leaving directory '/home/peter/coreutils-5.0/tests/uniq' Making clean in unexpand make[2]: Entering directory '/home/peter/coreutils-5.0/tests/unexpand' make[2]: Nothing to be done for 'clean'. make[2]: Leaving directory '/home/peter/coreutils-5.0/tests/unexpand' Making clean in tsort make[2]: Entering directory '/home/peter/coreutils-5.0/tests/tsort' make[2]: Nothing to be done for 'clean'. make[2]: Leaving directory '/home/peter/coreutils-5.0/tests/tsort' Making clean in tr make[2]: Entering directory '/home/peter/coreutils-5.0/tests/tr' test -z "1.O 1.E 2.O 2.E 3.O 3.E 4.O 4.E 5.O 5.E 6.O 6.E 7.O 7.E 8.O 8.E 9.O 9.E a.O a.E b.O b.E c.O c.E d.O d.E e.O e.E f.O f.E g.O g.E h.O h.E i.O i.E j.O j.E k.O k.E l.O l.E m.O m.E n.O n.E o.O o.E p.O p.E q.O q.E r.O r.E s.O s.E t.O t.E u.O u.E v.O v.E w.O w.E x.O x.E y.O y.E z.O z.E range-a-a.O range-a-a.E null.O null.E upcase.O upcase.E dncase.O dncase.E rep-cclass.O rep-cclass.E rep-1.O rep-1.E rep-2.O rep-2.E rep-3.O rep-3.E o-rep-1.O o-rep-1.E o-rep-2.O o-rep-2.E esc.O esc.E ross-0 [command output truncated] coreutils.1po coreutils.2po *.new.po rm -fr *.o make[1]: Leaving directory '/home/peter/coreutils-5.0/po' Making clean in m4 make[1]: Entering directory '/home/peter/coreutils-5.0/m4' make[1]: Nothing to be done for 'clean'. make[1]: Leaving directory '/home/peter/coreutils-5.0/m4' Making clean in man make[1]: Entering directory '/home/peter/coreutils-5.0/man' make[1]: Nothing to be done for 'clean'. make[1]: Leaving directory '/home/peter/coreutils-5.0/man' Making clean in doc make[1]: Entering directory '/home/peter/coreutils-5.0/doc' rm -f coreutils.aux coreutils.cp coreutils.cps coreutils.fl coreutils.fn \ coreutils.ky coreutils.log coreutils.op coreutils.pg \ coreutils.tmp coreutils.toc coreutils.tp coreutils.tps \ coreutils.vr coreutils.dvi coreutils.pdf coreutils.ps rm -f vti.tmp make[1]: Leaving directory '/home/peter/coreutils-5.0/doc' Making clean in src make[1]: Entering directory '/home/peter/coreutils-5.0/src' test -z "chgrp chown chmod cp dd dircolors du ginstall link ln dir vdir ls mkdir mkfifo mknod mv readlink rm rmdir shred stat sync touch unlink cat cksum comm csplit cut expand fmt fold head join md5sum nl od paste pr ptx sha1sum sort split sum tac tail tr tsort unexpand uniq wc basename date dirname echo env expr factor false hostname id kill logname pathchk printenv printf pwd seq sleep tee test true tty whoami yes uname chroot hostid nice pinky users who " || rm -f chgrp chown chmod cp dd dircolors du ginstall link ln dir vdir ls mkdir mkfifo mknod mv readlink rm rmdir shred stat sync touch unlink cat cksum comm csplit cut expand fmt fold head join md5sum nl od paste pr ptx sha1sum sort split sum tac tail tr tsort unexpand uniq wc basename date dirname echo env expr factor false hostname id kill logname pathchk printenv printf pwd seq sleep tee test true tty whoami yes uname chroot hostid nice pinky users who > /dev/null 2>&1 || /bin/rm -f chgrp chown chmod cp dd dircolors du ginstall link ln dir vdir ls mkdir mkfifo mknod mv readlink rm rmdir shred stat sync touch unlink cat cksum comm csplit cut expand fmt fold head join md5sum nl od paste pr ptx sha1sum sort split sum tac tail tr tsort unexpand uniq wc basename date dirname echo env expr factor false hostname id kill logname pathchk printenv printf pwd seq sleep tee test true tty whoami yes uname chroot hostid nice pinky users who test -z "groups nohup su" || rm -f groups nohup su rm -f *.o core *.core make[1]: Leaving directory '/home/peter/coreutils-5.0/src' Making clean in lib make[1]: Entering directory '/home/peter/coreutils-5.0/lib' test -z "charset.alias ref-add.sed ref-del.sed" || rm -f charset.alias ref-add.sed ref-del.sed test -z "libfetish.a" || rm -f libfetish.a rm -f *.o core *.core make[1]: Leaving directory '/home/peter/coreutils-5.0/lib' Making clean in . make[1]: Entering directory '/home/peter/coreutils-5.0' make[1]: Nothing to be done for 'clean-am'. make[1]: Leaving directory '/home/peter/coreutils-5.0'
compile-bench> cd coreutils-5.0 && make make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT acl.o -MD -MP -MF ".deps/acl.Tpo" \
-c -o acl.o `test -f 'acl.c' || echo './'`acl.c; \
then mv ".deps/acl.Tpo" ".deps/acl.Po"; \
else rm -f ".deps/acl.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT getdate.o -MD -MP -MF ".deps/getdate.Tpo" \
-c -o getdate.o `test -f 'getdate.c' || echo './'`getdate.c; \
then mv ".deps/getdate.Tpo" ".deps/getdate.Po"; \
else rm -f ".deps/getdate.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT posixtm.o -MD -MP -MF ".deps/posixtm.Tpo" \
-c -o posixtm.o `test -f 'posixtm.c' || echo './'`posixtm.c; \
then mv ".deps/posixtm.Tpo" ".deps/posixtm.Po"; \
else rm -f ".deps/posixtm.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT posixver.o -MD -MP -MF ".deps/posixver.Tpo" \
-c -o posixver.o `test -f 'posixver.c' || echo './'`posixver.c; \
then mv ".deps/posixver.Tpo" ".deps/posixver.Po"; \
else rm -f ".deps/posixver.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT strftime.o -MD -MP -MF ".deps/strftime.Tpo" \
-c -o strftime.o `test -f 'strftime.c' || echo './'`strftime.c; \
then mv ".deps/strftime.Tpo" ".deps/strftime.Po"; \
else rm -f ".deps/strftime.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT getopt.o -MD -MP -MF ".deps/getopt.Tpo" \
-c -o getopt.o `test -f 'getopt.c' || echo './'`getopt.c; \
then mv ".deps/getopt.Tpo" ".deps/getopt.Po"; \
else rm -f ".deps/getopt.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT getopt1.o -MD -MP -MF ".deps/getopt1.Tpo" \
-c -o getopt1.o `test -f 'getopt1.c' || echo './'`getopt1.c; \
then mv ".deps/getopt1.Tpo" ".deps/getopt1.Po"; \
else rm -f ".deps/getopt1.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT hash.o -MD -MP -MF ".deps/hash.Tpo" \
-c -o hash.o `test -f 'hash.c' || echo './'`hash.c; \
then mv ".deps/hash.Tpo" ".deps/hash.Po"; \
else rm -f ".deps/hash.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT hash-pjw.o -MD -MP -MF ".deps/hash-pjw.Tpo" \
-c -o hash-pjw.o `test -f 'hash-pjw.c' || echo './'`hash-pjw.c; \
then mv ".deps/hash-pjw.Tpo" ".deps/hash-pjw.Po"; \
else rm -f ".deps/hash-pjw.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I..
[command output truncated]
ettime.Tpo" \
-c -o settime.o `test -f 'settime.c' || echo './'`settime.c; \
then mv ".deps/settime.Tpo" ".deps/settime.Po"; \
else rm -f ".deps/settime.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT sha.o -MD -MP -MF ".deps/sha.Tpo" \
-c -o sha.o `test -f 'sha.c' || echo './'`sha.c; \
then mv ".deps/sha.Tpo" ".deps/sha.Po"; \
else rm -f ".deps/sha.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT stripslash.o -MD -MP -MF ".deps/stripslash.Tpo" \
-c -o stripslash.o `test -f 'stripslash.c' || echo './'`stripslash.c; \
then mv ".deps/stripslash.Tpo" ".deps/stripslash.Po"; \
else rm -f ".deps/stripslash.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT umaxtostr.o -MD -MP -MF ".deps/umaxtostr.Tpo" \
-c -o umaxtostr.o `test -f 'umaxtostr.c' || echo './'`umaxtostr.c; \
then mv ".deps/umaxtostr.Tpo" ".deps/umaxtostr.Po"; \
else rm -f ".deps/umaxtostr.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT unicodeio.o -MD -MP -MF ".deps/unicodeio.Tpo" \
-c -o unicodeio.o `test -f 'unicodeio.c' || echo './'`unicodeio.c; \
then mv ".deps/unicodeio.Tpo" ".deps/unicodeio.Po"; \
else rm -f ".deps/unicodeio.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT userspec.o -MD -MP -MF ".deps/userspec.Tpo" \
-c -o userspec.o `test -f 'userspec.c' || echo './'`userspec.c; \
then mv ".deps/userspec.Tpo" ".deps/userspec.Po"; \
else rm -f ".deps/userspec.Tpo"; exit 1; \
fi
userspec.c: In function 'parse_user_spec':
userspec.c:332:19: error: implicit declaration of function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
332 | free (*username_arg);
| ^~~~
userspec.c:72:1: note: include '<stdlib.h>' or provide a declaration of 'free'
71 | #include "gettext.h"
+++ |+#include <stdlib.h>
72 | #define _(msgid) gettext (msgid)
userspec.c:332:19: warning: incompatible implicit declaration of built-in function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
332 | free (*username_arg);
| ^~~~
userspec.c:332:19: note: include '<stdlib.h>' or provide a declaration of 'free'
make[3]: *** [Makefile:590: userspec.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
↓ 103 lines
make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT acl.o -MD -MP -MF ".deps/acl.Tpo" \
-c -o acl.o `test -f 'acl.c' || echo './'`acl.c; \
then mv ".deps/acl.Tpo" ".deps/acl.Po"; \
else rm -f ".deps/acl.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT getdate.o -MD -MP -MF ".deps/getdate.Tpo" \
-c -o getdate.o `test -f 'getdate.c' || echo './'`getdate.c; \
then mv ".deps/getdate.Tpo" ".deps/getdate.Po"; \
else rm -f ".deps/getdate.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT posixtm.o -MD -MP -MF ".deps/posixtm.Tpo" \
-c -o posixtm.o `test -f 'posixtm.c' || echo './'`posixtm.c; \
then mv ".deps/posixtm.Tpo" ".deps/posixtm.Po"; \
else rm -f ".deps/posixtm.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT posixver.o -MD -MP -MF ".deps/posixver.Tpo" \
-c -o posixver.o `test -f 'posixver.c' || echo './'`posixver.c; \
then mv ".deps/posixver.Tpo" ".deps/posixver.Po"; \
else rm -f ".deps/posixver.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT strftime.o -MD -MP -MF ".deps/strftime.Tpo" \
-c -o strftime.o `test -f 'strftime.c' || echo './'`strftime.c; \
then mv ".deps/strftime.Tpo" ".deps/strftime.Po"; \
else rm -f ".deps/strftime.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT getopt.o -MD -MP -MF ".deps/getopt.Tpo" \
-c -o getopt.o `test -f 'getopt.c' || echo './'`getopt.c; \
then mv ".deps/getopt.Tpo" ".deps/getopt.Po"; \
else rm -f ".deps/getopt.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT getopt1.o -MD -MP -MF ".deps/getopt1.Tpo" \
-c -o getopt1.o `test -f 'getopt1.c' || echo './'`getopt1.c; \
then mv ".deps/getopt1.Tpo" ".deps/getopt1.Po"; \
else rm -f ".deps/getopt1.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT hash.o -MD -MP -MF ".deps/hash.Tpo" \
-c -o hash.o `test -f 'hash.c' || echo './'`hash.c; \
then mv ".deps/hash.Tpo" ".deps/hash.Po"; \
else rm -f ".deps/hash.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT hash-pjw.o -MD -MP -MF ".deps/hash-pjw.Tpo" \
-c -o hash-pjw.o `test -f 'hash-pjw.c' || echo './'`hash-pjw.c; \
then mv ".deps/hash-pjw.Tpo" ".deps/hash-pjw.Po"; \
else rm -f ".deps/hash-pjw.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I..
[command output truncated]
ettime.Tpo" \
-c -o settime.o `test -f 'settime.c' || echo './'`settime.c; \
then mv ".deps/settime.Tpo" ".deps/settime.Po"; \
else rm -f ".deps/settime.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT sha.o -MD -MP -MF ".deps/sha.Tpo" \
-c -o sha.o `test -f 'sha.c' || echo './'`sha.c; \
then mv ".deps/sha.Tpo" ".deps/sha.Po"; \
else rm -f ".deps/sha.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT stripslash.o -MD -MP -MF ".deps/stripslash.Tpo" \
-c -o stripslash.o `test -f 'stripslash.c' || echo './'`stripslash.c; \
then mv ".deps/stripslash.Tpo" ".deps/stripslash.Po"; \
else rm -f ".deps/stripslash.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT umaxtostr.o -MD -MP -MF ".deps/umaxtostr.Tpo" \
-c -o umaxtostr.o `test -f 'umaxtostr.c' || echo './'`umaxtostr.c; \
then mv ".deps/umaxtostr.Tpo" ".deps/umaxtostr.Po"; \
else rm -f ".deps/umaxtostr.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT unicodeio.o -MD -MP -MF ".deps/unicodeio.Tpo" \
-c -o unicodeio.o `test -f 'unicodeio.c' || echo './'`unicodeio.c; \
then mv ".deps/unicodeio.Tpo" ".deps/unicodeio.Po"; \
else rm -f ".deps/unicodeio.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT userspec.o -MD -MP -MF ".deps/userspec.Tpo" \
-c -o userspec.o `test -f 'userspec.c' || echo './'`userspec.c; \
then mv ".deps/userspec.Tpo" ".deps/userspec.Po"; \
else rm -f ".deps/userspec.Tpo"; exit 1; \
fi
userspec.c: In function 'parse_user_spec':
userspec.c:332:19: error: implicit declaration of function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
332 | free (*username_arg);
| ^~~~
userspec.c:72:1: note: include '<stdlib.h>' or provide a declaration of 'free'
71 | #include "gettext.h"
+++ |+#include <stdlib.h>
72 | #define _(msgid) gettext (msgid)
userspec.c:332:19: warning: incompatible implicit declaration of built-in function 'free' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
332 | free (*username_arg);
| ^~~~
userspec.c:332:19: note: include '<stdlib.h>' or provide a declaration of 'free'
make[3]: *** [Makefile:590: userspec.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
Show reasoning
This is getting frustrating. Despite setting STDC_HEADERS to 1, the compilation is still failing with the same missing header issues. Let me try a different approach. Since enabling STDC_HEADERS isn't working, let me try to manually add the missing includes to the specific files that are failing.
Let me add stdlib.h to userspec.c:
[empty output]
compile-bench> cd coreutils-5.0 && make make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT userspec.o -MD -MP -MF ".deps/userspec.Tpo" \
-c -o userspec.o `test -f 'userspec.c' || echo './'`userspec.c; \
then mv ".deps/userspec.Tpo" ".deps/userspec.Po"; \
else rm -f ".deps/userspec.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT version-etc.o -MD -MP -MF ".deps/version-etc.Tpo" \
-c -o version-etc.o `test -f 'version-etc.c' || echo './'`version-etc.c; \
then mv ".deps/version-etc.Tpo" ".deps/version-etc.Po"; \
else rm -f ".deps/version-etc.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT xgetcwd.o -MD -MP -MF ".deps/xgetcwd.Tpo" \
-c -o xgetcwd.o `test -f 'xgetcwd.c' || echo './'`xgetcwd.c; \
then mv ".deps/xgetcwd.Tpo" ".deps/xgetcwd.Po"; \
else rm -f ".deps/xgetcwd.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT xgethostname.o -MD -MP -MF ".deps/xgethostname.Tpo" \
-c -o xgethostname.o `test -f 'xgethostname.c' || echo './'`xgethostname.c; \
then mv ".deps/xgethostname.Tpo" ".deps/xgethostname.Po"; \
else rm -f ".deps/xgethostname.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT xmalloc.o -MD -MP -MF ".deps/xmalloc.Tpo" \
-c -o xmalloc.o `test -f 'xmalloc.c' || echo './'`xmalloc.c; \
then mv ".deps/xmalloc.Tpo" ".deps/xmalloc.Po"; \
else rm -f ".deps/xmalloc.Tpo"; exit 1; \
fi
xmalloc.c: In function 'xalloc_die':
xmalloc.c:74:3: error: implicit declaration of function 'exit' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
74 | exit (EXIT_FAILURE);
| ^~~~
xmalloc.c:39:1: note: include '<stdlib.h>' or provide a declaration of 'exit'
38 | #include "xalloc.h"
+++ |+#include <stdlib.h>
39 |
xmalloc.c:74:3: warning: incompatible implicit declaration of built-in function 'exit' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
74 | exit (EXIT_FAILURE);
| ^~~~
xmalloc.c:74:3: note: include '<stdlib.h>' or provide a declaration of 'exit'
make[3]: *** [Makefile:590: xmalloc.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
↓ 51 lines
make all-recursive
make[1]: Entering directory '/home/peter/coreutils-5.0'
Making all in lib
make[2]: Entering directory '/home/peter/coreutils-5.0/lib'
make all-am
make[3]: Entering directory '/home/peter/coreutils-5.0/lib'
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT userspec.o -MD -MP -MF ".deps/userspec.Tpo" \
-c -o userspec.o `test -f 'userspec.c' || echo './'`userspec.c; \
then mv ".deps/userspec.Tpo" ".deps/userspec.Po"; \
else rm -f ".deps/userspec.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT version-etc.o -MD -MP -MF ".deps/version-etc.Tpo" \
-c -o version-etc.o `test -f 'version-etc.c' || echo './'`version-etc.c; \
then mv ".deps/version-etc.Tpo" ".deps/version-etc.Po"; \
else rm -f ".deps/version-etc.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT xgetcwd.o -MD -MP -MF ".deps/xgetcwd.Tpo" \
-c -o xgetcwd.o `test -f 'xgetcwd.c' || echo './'`xgetcwd.c; \
then mv ".deps/xgetcwd.Tpo" ".deps/xgetcwd.Po"; \
else rm -f ".deps/xgetcwd.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT xgethostname.o -MD -MP -MF ".deps/xgethostname.Tpo" \
-c -o xgethostname.o `test -f 'xgethostname.c' || echo './'`xgethostname.c; \
then mv ".deps/xgethostname.Tpo" ".deps/xgethostname.Po"; \
else rm -f ".deps/xgethostname.Tpo"; exit 1; \
fi
if gcc -DLIBDIR=\"/home/peter/result/lib\" -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I. -g -O2 -MT xmalloc.o -MD -MP -MF ".deps/xmalloc.Tpo" \
-c -o xmalloc.o `test -f 'xmalloc.c' || echo './'`xmalloc.c; \
then mv ".deps/xmalloc.Tpo" ".deps/xmalloc.Po"; \
else rm -f ".deps/xmalloc.Tpo"; exit 1; \
fi
xmalloc.c: In function 'xalloc_die':
xmalloc.c:74:3: error: implicit declaration of function 'exit' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaration]8;;]
74 | exit (EXIT_FAILURE);
| ^~~~
xmalloc.c:39:1: note: include '<stdlib.h>' or provide a declaration of 'exit'
38 | #include "xalloc.h"
+++ |+#include <stdlib.h>
39 |
xmalloc.c:74:3: warning: incompatible implicit declaration of built-in function 'exit' [ttps://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatch]8;;]
74 | exit (EXIT_FAILURE);
| ^~~~
xmalloc.c:74:3: note: include '<stdlib.h>' or provide a declaration of 'exit'
make[3]: *** [Makefile:590: xmalloc.o] Error 1
make[3]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[2]: *** [Makefile:414: all] Error 2
make[2]: Leaving directory '/home/peter/coreutils-5.0/lib'
make[1]: *** [Makefile:244: all-recursive] Error 1
make[1]: Leaving directory '/home/peter/coreutils-5.0'
make: *** [Makefile:199: all] Error 2
Show reasoning
task failed: sha1sum binary does not exist