Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 256638

Summary: sys-devel/gcc-3.4.6-r2 - /usr/include/bits/fcntl2.h:51: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments
Product: Gentoo Linux Reporter: Martin von Gagern <Martin.vGagern>
Component: [OLD] Core systemAssignee: Gentoo Toolchain Maintainers <toolchain>
Status: RESOLVED FIXED    
Severity: normal CC: gentoo, n-roeser, public
Priority: High Keywords: Inclusion
Version: 2008.0   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on:    
Bug Blocks: 259417    
Attachments: Mode 0600
Mode 0600, with metdadata

Description Martin von Gagern 2009-01-28 14:47:36 UTC
I got these errors when recompiling sys-devel/gcc-3.4.6-r2 using i686-pc-linux-gnu-4.3.3:

gcc ... /gcc/collect2.c -o collect2.o
In function ‘open’,
    inlined from ‘collect_execute’ at /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/collect2.c:1543:
/usr/include/bits/fcntl2.h:51: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments
make[2]: *** [collect2.o] Error 1
make[2]: Leaving directory `/var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/build/gcc'
make[1]: *** [stage1_build] Error 2
make[1]: Leaving directory `/var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/build/gcc'
make: *** [bootstrap-lean] Error 2
 *
 * ERROR: sys-devel/gcc-3.4.6-r2 failed.
 * Call stack:
 *               ebuild.sh, line   49:  Called src_compile
 *             environment, line 4717:  Called toolchain_src_compile
 *             environment, line 5254:  Called gcc_src_compile
 *             environment, line 3044:  Called gcc_do_make
 *             environment, line 2835:  Called die
 * The specific snippet of code:
 *       emake LDFLAGS="${LDFLAGS}" STAGE1_CFLAGS="${STAGE1_CFLAGS}"
         LIBPATH="${LIBPATH}" BOOT_CFLAGS="${BOOT_CFLAGS}" ${GCC_MAKE_TARGET}
         || die "emake failed with ${GCC_MAKE_TARGET}";
 *  The die message:
 *   emake failed with bootstrap-lean

The cause is the following line in collect2.c:
      redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT);

This seems to be a bad call indeed, and I'd say gcc 4.3.3 is correct to complain here.

Upstream trunk doesn't contain that open call at all. It went away as part of a larger changeset:
http://gcc.gnu.org/viewcvs/trunk/gcc/collect2.c?r1=93827&r2=97199

Upstream gcc-3_4-branch still contains the line without any modification.

I don't know what this file is actually used for, so I don't know what mode would be appropriate. Once you have decided that, a patch should be easy.
Comment 1 Martin von Gagern 2009-01-28 19:21:18 UTC
Created attachment 180001 [details, diff]
Mode 0600

I had a closer look at this. Seems like the only call to collect_execute with non-NULL redir is via tlink_execute, passing ldout as the redir parameter. From its usage, ldout seems to be a temporary file, created via make_temp_file and deleted at exit. Thus access permissions only for the current user seem appropriate. The attached patch implements this.
Comment 2 SpanKY gentoo-dev 2009-01-29 20:42:50 UTC
patch looks fine, thanks ... i'll get it in soon if no one else does (and after proper metadata is added)

http://dev.gentoo.org/~vapier/clean-patches
Comment 3 Martin von Gagern 2009-01-29 23:27:02 UTC
Affects 3.3.6-r1 as well. Patch also applies without modification.
Comment 4 Martin von Gagern 2009-01-29 23:51:08 UTC
Created attachment 180181 [details, diff]
Mode 0600, with metdadata

(In reply to comment #2)
> http://dev.gentoo.org/~vapier/clean-patches
Comment 5 Peter Alfredsen (RETIRED) gentoo-dev 2009-02-12 22:31:05 UTC
*** Bug 258724 has been marked as a duplicate of this bug. ***
Comment 6 SpanKY gentoo-dev 2009-02-15 22:48:06 UTC
thanks, added to 3.3.6 and 3.4.6 patchsets
Comment 7 Peter Alfredsen (RETIRED) gentoo-dev 2009-02-16 21:39:57 UTC
*** Bug 259282 has been marked as a duplicate of this bug. ***
Comment 8 Adam Felson 2010-08-04 17:50:31 UTC
Still fails as of 2010/08/04.

echo "static const char *const all_files[] = {" >> tmp-gtyp.h
gf="/var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/input.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/coretypes.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/cpplib.h auto-host.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/../include/ansidecl.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/config/i386/biarch64.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/config/i386/i386.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/config/i386/unix.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/config/i386/att.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/config/dbxelf.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/config/elfos.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/config/svr4.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/config/linux.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/config/i386/x86-64.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/config/i386/linux64.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/defaults.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/../include/hashtab.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/../include/splay-tree.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/bitmap.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/coverage.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/function.h  /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/rtl.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/optabs.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/tree.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/libfuncs.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/hashtable.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/real.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/varray.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/insn-addr.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/cselib.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/basic-block.h  /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/cgraph.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/c-common.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/c-tree.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/alias.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/bitmap.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/cselib.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/cgraph.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/dbxout.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/dwarf2out.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/dwarf2asm.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/dojump.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/emit-rtl.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/except.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/explow.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/expr.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/fold-const.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/function.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/gcse.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/integrate.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/lists.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/optabs.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/profile.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/ra-build.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/regclass.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/reg-stack.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/cfglayout.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/langhooks.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/sdbout.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/stmt.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/stor-layout.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/stringpool.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/tree.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/varasm.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/config/i386/i386.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/cp/mangle.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/cp/name-lookup.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/cp/name-lookup.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/cp/cp-tree.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/cp/decl.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/cp/lex.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/cp/call.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/cp/decl.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/cp/decl2.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/cp/pt.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/cp/repo.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/cp/semantics.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/cp/tree.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/cp/parser.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/cp/method.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/c-common.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/c-common.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/c-pragma.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/f/com.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/f/com.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/f/ste.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/f/where.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/f/where.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/f/lex.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/treelang/tree1.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/treelang/treetree.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/treelang/treelang.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/c-lang.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/c-parse.in /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/c-tree.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/c-decl.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/c-common.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/c-common.h /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/c-pragma.c /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/c-objc-common.c"; \
	for f in $gf; do \
	echo "\"$f\", "; done >> tmp-gtyp.h
echo " NULL};" >> tmp-gtyp.h
echo "static const char *const lang_dir_names[] = { \"c\", " >> tmp-gtyp.h
gf="cp f treelang"; \
	for l in $gf; do \
	echo "\"$l\", "; done >> tmp-gtyp.h
echo "NULL};" >> tmp-gtyp.h
/bin/sh /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/gcc/move-if-change tmp-gtyp.h gtyp-gen.h 
make[2]: Leaving directory `/var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/build/gcc'
make[1]: *** [stage2_build] Error 2
make[1]: Leaving directory `/var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/build/gcc'
make: *** [bootstrap-lean] Error 2
 * ERROR: sys-devel/gcc-3.4.6-r2 failed:
 *   emake failed with bootstrap-lean
 * 
 * Call stack:
 *     ebuild.sh, line   54:  Called src_compile
 *   environment, line 4989:  Called toolchain_src_compile
 *   environment, line 5604:  Called gcc_src_compile
 *   environment, line 3170:  Called gcc_do_make
 *   environment, line 2957:  Called die
 * The specific snippet of code:
 *       emake LDFLAGS="${LDFLAGS}" STAGE1_CFLAGS="${STAGE1_CFLAGS}" LIBPATH="${LIBPATH}" BOOT_CFLAGS="${BOOT_CFLAGS}" ${GCC_MAKE_TARGET} || die "emake failed with ${GCC_MAKE_TARGET}";
 * 
 * If you need support, post the output of 'emerge --info =sys-devel/gcc-3.4.6-r2',
 * the complete build log and the output of 'emerge -pqv =sys-devel/gcc-3.4.6-r2'.
 * The complete build log is located at '/var/tmp/portage/sys-devel/gcc-3.4.6-r2/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/sys-devel/gcc-3.4.6-r2/temp/environment'.
 * S: '/var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/build'

>>> Failed to emerge sys-devel/gcc-3.4.6-r2, Log file:

>>>  '/var/tmp/portage/sys-devel/gcc-3.4.6-r2/temp/build.log'

 * Messages for package sys-devel/gcc-3.4.6-r2:

 * ERROR: sys-devel/gcc-3.4.6-r2 failed:
 *   emake failed with bootstrap-lean
 * 
 * Call stack:
 *     ebuild.sh, line   54:  Called src_compile
 *   environment, line 4989:  Called toolchain_src_compile
 *   environment, line 5604:  Called gcc_src_compile
 *   environment, line 3170:  Called gcc_do_make
 *   environment, line 2957:  Called die
 * The specific snippet of code:
 *       emake LDFLAGS="${LDFLAGS}" STAGE1_CFLAGS="${STAGE1_CFLAGS}" LIBPATH="${LIBPATH}" BOOT_CFLAGS="${BOOT_CFLAGS}" ${GCC_MAKE_TARGET} || die "emake failed with ${GCC_MAKE_TARGET}";
 * 
 * If you need support, post the output of 'emerge --info =sys-devel/gcc-3.4.6-r2',
 * the complete build log and the output of 'emerge -pqv =sys-devel/gcc-3.4.6-r2'.
 * The complete build log is located at '/var/tmp/portage/sys-devel/gcc-3.4.6-r2/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/sys-devel/gcc-3.4.6-r2/temp/environment'.
 * S: '/var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/build'


Attempted to compile using gcc-4.3.4
Comment 9 Martin von Gagern 2010-08-04 18:53:35 UTC
(In reply to comment #8)
> Still fails as of 2010/08/04.

Can't reproduce with my 4.4.4 here. Your build log looks like a different issue than what I originally reported, even though I don't see the actual error message there. So please file a new bug report and attach the full build log there.
Comment 10 SpanKY gentoo-dev 2010-08-04 22:33:40 UTC
yes, that isnt related to this.  file a new bug report with a full build log (as an attachment) and emerge info.