Bug 66277 - [regression] cpp-5: fatal error: too many input files
Summary: [regression] cpp-5: fatal error: too many input files
Status: RESOLVED INVALID
Alias: None
Product: gcc
Classification: Unclassified
Component: preprocessor (show other bugs)
Version: 5.1.1
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-05-25 07:37 UTC by Paul Menzel
Modified: 2015-05-25 09:06 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Paul Menzel 2015-05-25 07:37:35 UTC
With Debian Sid/unstable, trying to build GRUB master with GCC 5.1.1 fails with the error `cpp-5: fatal error: too many input files`.

	$ cpp-5 --version
	cpp-5 (Debian 5.1.1-7) 5.1.1 20150522
	Copyright (C) 2015 Free Software Foundation, Inc.
	This is free software; see the source for copying conditions.  There is NO
	warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

	$ git clone git://git.savannah.gnu.org/grub.git
	$ cd grub
	$ git describe
	grub-2.02-beta2-420-g5e74a3e
	$ ./autogen.sh
	$ CC=gcc-5 CPP=cpp-5 ./configure --with-platform=coreboot
	$ make
	cpp-5 -DHAVE_CONFIG_H -I.  -Wall -W -DGRUB_UTIL=1 -D_FILE_OFFSET_BITS=64 -I./include -DGRUB_FILE=\"grub_script.tab.h\" -I. -I. -I. -I. -I./include -I./include -I./grub-core/lib/libgcrypt-grub/src/  -I./grub-core/lib/minilzo -I./grub-core/lib/xzembed -DMINILZO_HAVE_CONFIG_H -Wall -W -DGRUB_UTIL=1 -D_FILE_OFFSET_BITS=64 -I./include -DGRUB_FILE=\"grub_script.tab.h\" -I. -I. -I. -I. -I./include -I./include -I./grub-core/lib/libgcrypt-grub/src/  -I./grub-core/gnulib -I./grub-core/gnulib -D_FILE_OFFSET_BITS=64 \
	  -D'GRUB_MOD_INIT(x)=@MARKER@x@' grub_script.tab.h grub_script.yy.h grub-core/commands/blocklist.c grub-core/commands/macbless.c grub-core/commands/xnu_uuid.c grub-core/commands/testload.c grub-core/commands/ls.c grub-core/disk/dmraid_nvidia.c grub-core/disk/loopback.c grub-core/disk/lvm.c grub-core/disk/mdraid_linux.c grub-core/disk/mdraid_linux_be.c grub-core/disk/mdraid1x_linux.c grub-core/disk/raid5_recover.c grub-core/disk/raid6_recover.c grub-core/font/font.c grub-core/gfxmenu/font.c grub-core/normal/charset.c grub-core/video/fb/fbblit.c grub-core/video/fb/fbutil.c grub-core/video/fb/fbfill.c grub-core/video/fb/video_fb.c grub-core/video/video.c grub-core/video/capture.c grub-core/video/colors.c grub-core/unidata.c grub-core/io/bufio.c grub-core/fs/affs.c grub-core/fs/afs.c grub-core/fs/bfs.c grub-core/fs/btrfs.c grub-core/fs/cbfs.c grub-core/fs/archelp.c grub-core/fs/cpio.c grub-core/fs/cpio_be.c grub-core/fs/odc.c grub-core/fs/newc.c grub-core/fs/ext2.c grub-core/fs/fat.c grub-core/fs/exfat.c grub-core/fs/fshelp.c grub-core/fs/hfs.c grub-core/fs/hfsplus.c grub-core/fs/hfspluscomp.c grub-core/fs/iso9660.c grub-core/fs/jfs.c grub-core/fs/minix.c grub-core/fs/minix2.c grub-core/fs/minix3.c grub-core/fs/minix_be.c grub-core/fs/minix2_be.c grub-core/fs/minix3_be.c grub-core/fs/nilfs2.c grub-core/fs/ntfs.c grub-core/fs/ntfscomp.c grub-core/fs/reiserfs.c grub-core/fs/romfs.c grub-core/fs/sfs.c grub-core/fs/squash4.c grub-core/fs/tar.c grub-core/fs/udf.c grub-core/fs/ufs2.c grub-core/fs/ufs.c grub-core/fs/ufs_be.c grub-core/fs/xfs.c grub-core/fs/zfs/zfscrypt.c grub-core/fs/zfs/zfs.c grub-core/fs/zfs/zfsinfo.c grub-core/fs/zfs/zfs_lzjb.c grub-core/fs/zfs/zfs_lz4.c grub-core/fs/zfs/zfs_sha256.c grub-core/fs/zfs/zfs_fletcher.c grub-core/lib/envblk.c grub-core/lib/hexdump.c grub-core/lib/LzFind.c grub-core/lib/LzmaEnc.c grub-core/lib/crc.c grub-core/lib/adler32.c grub-core/lib/crc64.c grub-core/normal/datetime.c grub-core/normal/misc.c grub-core/partmap/acorn.c grub-core/partmap/amiga.c grub-core/partmap/apple.c grub-core/partmap/sun.c grub-core/partmap/plan.c grub-core/partmap/dvh.c grub-core/partmap/sunpc.c grub-core/partmap/bsdlabel.c grub-core/partmap/dfly.c grub-core/script/function.c grub-core/script/lexer.c grub-core/script/main.c grub-core/script/script.c grub-core/script/argv.c grub-core/io/gzio.c grub-core/io/xzio.c grub-core/io/lzopio.c grub-core/kern/ia64/dl_helper.c grub-core/kern/arm/dl_helper.c grub-core/kern/arm64/dl_helper.c grub-core/lib/minilzo/minilzo.c grub-core/lib/xzembed/xz_dec_bcj.c grub-core/lib/xzembed/xz_dec_lzma2.c grub-core/lib/xzembed/xz_dec_stream.c util/misc.c grub-core/kern/command.c grub-core/kern/device.c grub-core/kern/disk.c grub-core/lib/disk.c util/getroot.c grub-core/osdep/unix/getroot.c grub-core/osdep/getroot.c grub-core/osdep/devmapper/getroot.c grub-core/osdep/relpath.c grub-core/kern/emu/hostdisk.c grub-core/osdep/devmapper/hostdisk.c grub-core/osdep/hostdisk.c grub-core/osdep/unix/hostdisk.c grub-core/osdep/exec.c grub-core/osdep/sleep.c grub-core/osdep/password.c grub-core/kern/emu/misc.c grub-core/kern/emu/mm.c grub-core/kern/env.c grub-core/kern/err.c grub-core/kern/file.c grub-core/kern/fs.c grub-core/kern/list.c grub-core/kern/misc.c grub-core/kern/partition.c grub-core/lib/crypto.c grub-core/disk/luks.c grub-core/disk/geli.c grub-core/disk/cryptodisk.c grub-core/disk/AFSplitter.c grub-core/lib/pbkdf2.c grub-core/commands/extcmd.c grub-core/lib/arg.c grub-core/disk/ldm.c grub-core/disk/diskfilter.c grub-core/partmap/gpt.c grub-core/partmap/msdos.c grub-core/fs/proc.c > libgrub.pp || (rm -f libgrub.pp; exit 1)
	cpp-5: fatal error: too many input files
	compilation terminated.
	Makefile:12465: recipe for target 'libgrub.pp' failed
	make: *** [libgrub.pp] Error 1

Using cpp-4.9, which is currently the default in Debian Sid/unstable, works.


Using cpp-4.9, which is currently the default in Debian Sid/unstable, works.
Comment 1 Jakub Jelinek 2015-05-25 08:21:43 UTC
Seems to be a user error.  Just read man page of cpp and gcc, the former accepts (besides options) just two arguments, infile and outfile, while grub clearly relies on $(CPP) being able to preprocess many source files at the same time.
That is gcc -E, not cpp (and if you don't override it from the command line, that is indeed what the configure will do correctly automatically).
Comment 2 Paul Menzel 2015-05-25 09:06:09 UTC
(In reply to Jakub Jelinek from comment #1)
> Seems to be a user error.  Just read man page of cpp and gcc, the former
> accepts (besides options) just two arguments, infile and outfile, while grub
> clearly relies on $(CPP) being able to preprocess many source files at the
> same time.
> That is gcc -E, not cpp (and if you don't override it from the command line,
> that is indeed what the configure will do correctly automatically).

Indeed! Thank you very much. `CC=gcc-5 ./configure` does not use `cpp-4.9` for `CPP` but `gcc-5 -E`. Quite confusing.

So it’s indeed not a bug and not a regression. I’ll remember to not set `CPP` manually in the future. Sorry for the noise.