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

             Bug #: 50935
           Summary: All slim LTO tests FAIL on 32-bit Solaris
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: lto
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: r...@gcc.gnu.org
                CC: j...@suse.cz
              Host: *-*-solaris2*
            Target: *-*-solaris2*
             Build: *-*-solaris2.*


All slim LTO tests fail on 32-bit Solaris with gld 2.21.1 and 2.21.90:

spawn /vol/gcc/obj/regression/trunk/11-gcc-gas-gld/build/gcc/xgcc
-B/vol/gcc/obj/regression/trunk/11-gcc-gas-gld/build/gcc/
/vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.c-torture/execute/builtins/20010124-1.c
/vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.c-torture/execute/builtins/20010124-1-lib.c
/vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.c-torture/execute/builtins/lib/main.c
-w -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -lm -o
/var/gcc/regression/trunk/11-gcc-gas-gld/build/gcc/testsuite/gcc5/20010124-1.x7

/usr/lib/crt1.o: In function `_start':

fsr.s:(.text+0x7f): undefined reference to `main'

collect2: error: ld returned 1 exit status

compiler exited with status 1
output is:
/usr/lib/crt1.o: In function `_start':

fsr.s:(.text+0x7f): undefined reference to `main'

collect2: error: ld returned 1 exit status


FAIL: gcc.c-torture/execute/builtins/20010124-1.c compilation,  -O2 -flto
-fuse-linker-plugin -fno-fat-lto-objects 
UNRESOLVED: gcc.c-torture/execute/builtins/20010124-1.c execution,  -O2 -flto
-fuse-linker-plugin -fno-fat-lto-objects 

If turns out that there's a range of issues here:

* Unlike fat LTO, which needs only a gld or gold binary with linker plugin
  support, slim LTO needs corresponding binutils nm, ar, and ranlib.  For a
  64-bit default gcc, one needs 64-bit nm etc. in particular, where otherwise
  there would be no reason at all to have 64-bit commands.

* For 32-bit binutils, BFD_SUPPORTS_PLUGINS is off by default, as described
  in config/largefile.m4:

changequote(,)dnl
  sparc-*-solaris*|i[3-7]86-*-solaris*)
changequote([,])dnl
    # On native 32bit sparc and ia32 solaris, large-file and procfs support
    # are mutually exclusive; and without procfs support, the bfd/ elf module
    # cannot provide certain routines such as elfcore_write_prpsinfo
    # or elfcore_write_prstatus.  So unless the user explicitly requested
    # large-file support through the --enable-largefile switch, disable
    # large-file support in favor of procfs support.

For those reasons, it's much more work to provide a working slim LTO
environment
(and that's not only true on Solaris, but also on Linux where I often test a
recent gas/gld which is newer than what's bundled with the distribution), so
the testsuite *must* test for working slim LTO support before using 
-fno-fat-lto-objects, otherwise one gets hundreds of testsuite failures.

  Rainer

Reply via email to