[Bug bootstrap/38743] New: gcc 4.4.0 20090106 - The configure for $BUILD/amd64/libgcc checks if 64 bit code can exec on 32 bit platform

rob1weld at aol dot com gcc-bugzilla@gcc.gnu.org
Tue Jan 6 14:35:00 GMT 2009


I'm building gcc 4.4.0 20090106 on OpenSolaris (32 bit boot mode). 

The file trunk/libgcc/configure checks if 64 bit code can executed on a
32 bit platform when configuring for the i386-pc-solaris2.11/amd64/libgcc 
directory (and making profiledbootstrap).


# ../gcc_trunk/configure --enable-languages=ada,c,c++,fortran,java,objc,obj-c++
--enable-shared --disable-static --enable-decimal-float --enable-nls
--without-system-libunwind --with-gnu-as --with-as=/usr/local/bin/as
--with-gnu-ld --with-ld=/usr/local/bin/ld : (reconfigured)
../gcc_trunk/configure --enable-languages=ada,c,c++,fortran,java,objc,obj-c++
--enable-shared --disable-static --enable-decimal-float --enable-fixed-point
--with-long-double-128 --enable-nls --with-included-gettext
--enable-gather-detailed-mem-stats --with-stabs --enable-debug
-enable-largefile --enable-symvers --without-system-zlib --enable-gtk-cairo
--enable-qt-peer --enable-xmlj --enable-gconf-peer --enable-gjdoc
--enable-java-awt=gtk,xlib,qt,x --enable-gc-debug --enable-libgcj-multifile
--enable-libgcj-debug --enable-objc-gc --enable-libstdcxx-debug
--enable-__cxa_atexit --enable-stage1-checking --enable-checking=release
--without-system-libunwind --with-gnu-as --with-as=/usr/local/bin/as
--with-gnu-ld --with-ld=/usr/local/bin/ld


# gmake profiledbootstrap
...
checking for i386-pc-solaris2.11-nm... /usr/share/src/gcc_build/./gcc/nm
checking for i386-pc-solaris2.11-ranlib...
/usr/local/i386-pc-solaris2.11/bin/ranlib
checking for i386-pc-solaris2.11-strip...
/usr/local/i386-pc-solaris2.11/bin/strip
checking whether ln -s works... yes
checking for i386-pc-solaris2.11-gcc... /usr/share/src/gcc_build/./gcc/xgcc
-B/usr/share/src/gcc_build/./gcc/ -B/usr/local/i386-pc-solaris2.11/bin/
-B/usr/local/i386-pc-solaris2.11/lib/ -isystem
/usr/local/i386-pc-solaris2.11/include -isystem
/usr/local/i386-pc-solaris2.11/sys-include  -m64
checking for C compiler default output file name... a.out
checking whether the C compiler works... configure: error: in
`/usr/share/src/gcc_build/i386-pc-solaris2.11/amd64/libgcc':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details.
gmake[3]: *** [Makefile] Error 1
gmake[3]: Leaving directory
`/usr/share/src/gcc_build/i386-pc-solaris2.11/libgcc'
gmake[2]: *** [all-stage1-target-libgcc] Error 2
gmake[2]: Leaving directory `/usr/share/src/gcc_build'
gmake[1]: *** [stage1-bubble] Error 2
gmake[1]: Leaving directory `/usr/share/src/gcc_build'
gmake: *** [profiledbootstrap] Error 2



I examined config.log and decided to manually compile a file, then tested it.


# /usr/share/src/gcc_build/./gcc/xgcc -B/usr/share/src/gcc_build/./gcc/
-B/usr/local/i386-pc-solaris2.11/bin/ -B/usr/local/i386-pc-solaris2.11/lib/
-isystem /usr/local/i386-pc-solaris2.11/include -isystem
/usr/local/i386-pc-solaris2.11/sys-include  -m64 -g -O2 
/usr/share/src/gcc_build/test_gcc_1.c

# ./a.out 
bash: ./a.out: cannot execute binary file

# file ./a.out 
./a.out:        ELF 64-bit LSB executable AMD64 Version 1, dynamically linked,
not stripped


Ouch, we booted into 32-bit mode and we try to run a 64-bit executable:

# isainfo -k
i386


To push past this point I simply edited trunk/libgcc/configure and commented
out the exit when the test failed (since I do not need execs in that dir):

echo "$as_me: error: in \`$ac_pwd':" >&2;}
{ { echo "$as_me:$LINENO: error: cannot run C compiled programs.
If you meant to cross compile, use \`--host'.
See \`config.log' for more details." >&5
echo "$as_me: error: cannot run C compiled programs.
If you meant to cross compile, use \`--host'.
See \`config.log' for more details." >&2;}
#   { (exit 1); exit 1; }; }; }                # Line 2535
    }; }
    fi
  fi
fi
echo "$as_me:$LINENO: result: yes" >&5


The build continued past where it was (to hang elsewhere) after the repair.

Rob


-- 
           Summary: gcc 4.4.0 20090106 - The configure for
                    $BUILD/amd64/libgcc checks if 64 bit code can exec on 32
                    bit platform
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: bootstrap
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: rob1weld at aol dot com
 GCC build triplet: i386-pc-solaris2.11
  GCC host triplet: i386-pc-solaris2.11
GCC target triplet: i386-pc-solaris2.11


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38743



More information about the Gcc-bugs mailing list