Compiling gcc-3.4.6 with gcc-4.4.1

Andrew Haley aph@redhat.com
Fri Oct 2 06:16:00 GMT 2009


bugzilla wrote:
> Hi,
> 
> I'm having trouble compiling gcc-3.4.6 with gcc-4.4.1.
> 
> It fails at:
> ---
> % ./configure --host=x86_64-pc-linux-gnu --target=x86_64-pc-linux-gnu
> --enable-languages=c,c++
> % make CC=x86_64-pc-linux-gnu-gcc-4.4.1
> [...]
> x86_64-pc-linux-gnu-gcc-4.4.1   -g -O2 -DIN_GCC   -W -Wall -Wwrite-strings
> -Wstrict-prototypes -Wmissing-prototypes -pedantic -Wno-long-long   
> -DHAVE_CONFIG_H    -I. -I. -I. -I./. -I./../include   \
> 	-DTARGET_MACHINE=\"x86_64-pc-linux-gnu\" \
> 	-c ./collect2.c -o collect2.o
> In file included from /usr/include/fcntl.h:217,
>                  from ./system.h:214,
>                  from ./collect2.c:30:
> In function 'open',
>     inlined from 'collect_execute' at ./collect2.c:1537:
> /usr/include/bits/fcntl2.h:51: erreur: call to '__open_missing_mode'
> declared with attribute error: open with O_CREAT in second argument needs 3
> arguments

It's often hard to build old versions of gcc with new ones, because
old versions were often nonstandard.  You'll have to look at the code.

In this case, the error is perfectly correct:

      redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT);

              mode specifies the permissions to use in case a new file is cre-
              ated.  This argument must be supplied when O_CREAT is  specified
              in  flags;  if  O_CREAT  is not specified, then mode is ignored.

So you'll have to add a mode, maybe 0666.

Andrew.



More information about the Gcc-help mailing list