This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: problems compiling gcc 2.95.[12] for sparc64-linux using --with-cpu=sparc


On Sun, Oct 31, 1999 at 09:13:52PM +0100, Martin v. Loewis wrote:
> > I'm not saying it is a problem in the PIC, nor a problem in sparc64. It is
> > a problem in how the sparc32 compiler is generated when compiling for
> > sparc64-linux (note that it is multilib, and default is sparc32, and
> > should compile the code the same as a sparc-linux compiler, but it doesn't).
> 
> Thanks for the information. There is a number of things that confuse
> me in your report; perhaps you can help resolving them.
> 
> 1. I thought sparc64 is not officially supported in GCC, is that not
>    true?

Correct, AFAIK. But this is built with sparc as the default cpu target.

> 2. You say you are using a sparc64-linux installation (which indeed
>    would multilib for m32/m64), yet in the commands you invoke, I only
>    see the "sparc-linux" architecture, on which there is no
>    multilibbing.

Again, the compiler is setup to create sparc-linux binaries by default,
I'm not sure why this autoconf test even has to pass -bsparc-linux, but
the output is the same (-m32 is default, adding -m64 would create sparc64
objects).

Here is the nm -o output:

[buildd@xia03(12:41pm)-/<1>buildd/apt-0.3.13]%nm -o
/usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a | grep bad_alloc
/usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a:new.o:0000000000000000 W _._9bad_alloc
/usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a:new.o:0000000000000000 W __tf9bad_alloc
/usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a:new.o:000000000000000c C __ti9bad_alloc
/usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a:new.o:0000000000000000 W _vt.9bad_alloc
/usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a:new.o:0000000000000034 T what__C9bad_alloc
/usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a:opnew.o:                 U _._9bad_alloc
/usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a:opnew.o:                 U __tf9bad_alloc
/usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a:opnew.o:                 U _vt.9bad_alloc
/usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a:opnewnt.o:                 U __tf9bad_alloc
/usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a:opvnew.o:                 U __tf9bad_alloc

Here is the output of a known good libgcc.a (built as a sparc-linux, also
32bit, as with the above):

nm -o /usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a | grep bad_alloc
/usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a:new.o:0000000000000000 W _._9bad_alloc
/usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a:new.o:0000000000000000 W __tf9bad_alloc
/usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a:new.o:000000000000000c C __ti9bad_alloc
/usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a:new.o:0000000000000000 W __vt_9bad_alloc
/usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a:new.o:0000000000000034 T what__C9bad_alloc
/usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a:opnew.o:                 U _._9bad_alloc
/usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a:opnew.o:                 U __tf9bad_alloc
/usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a:opnew.o:                 U __vt_9bad_alloc
/usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a:opnewnt.o:                 U __tf9bad_alloc
/usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a:opvnew.o:                 U __tf9bad_alloc

I see the difference you were refering to: s/_vt.9bad_alloc/__vt_9bad_alloc/

Could you tell me where this symbol comes from, or what defines affect
it's creation?

In addition, here is the config.log output from CXXFLAGS=-v LDFLAGS=-Wl,--verbose:

Ben
configure:1110: c++ -bsparc-linux -o conftest -v  -Wl,--verbose conftest.C  1>&5
Reading specs from /usr/lib/gcc-lib/sparc-linux/2.95.2/specs
gcc version 2.95.2 19990906 (prerelease)
 /usr/lib/gcc-lib/sparc-linux/2.95.2/cpp -lang-c++ -v -D__GNUC__=2 -D__GNUG__=2 -D__GNUC_MINOR__=95 -D__cplusplus -D__ELF__ -Dunix -D_LONGLONG -D__sparc__ -Dlinux -D__ELF__ -D__unix__ -D_LONGLONG -D__sparc__ -D__linux__ -D__unix -D__linux -Asystem(unix) -Asystem(posix) -D__EXCEPTIONS -D__SIZE_TYPE__=unsigned int -D__PTRDIFF_TYPE__=int -D__GCC_NEW_VARARGS__ -Acpu(sparc) -Amachine(sparc) conftest.C /tmp/ccPC9MJT.ii
GNU CPP version 2.95.2 19991024 (release) (sparc64 GNU/Linux with ELF)
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc-lib/sparc-linux/2.95.2/../../../../include/g++-3
 /usr/local/include
 /usr/lib/gcc-lib/sparc-linux/2.95.2/include
 /usr/include
End of search list.
The following default directories have been omitted from the search path:
 /usr/lib/gcc-lib/sparc-linux/2.95.2/../../../../sparc-linux/include
End of omitted list.
 /usr/lib/gcc-lib/sparc-linux/2.95.2/cc1plus /tmp/ccPC9MJT.ii -quiet -dumpbase conftest.cc -version -o /tmp/cc8H4qZC.s
GNU C++ version 2.95.2 19990906 (prerelease) (sparc-linux) compiled by GNU C version 2.95.2 19990906 (prerelease).
 as -V -Qy -s -Av9a -32 -o /tmp/cc7apl7m.o /tmp/cc8H4qZC.s
GNU assembler version 2.9.5 (sparc-linux) using BFD version 2.9.5.0.16
 /usr/lib/gcc-lib/sparc-linux/2.95.2/collect2 -m elf32_sparc -Y P,/usr/lib -dynamic-linker /lib/ld-linux.so.2 -o conftest /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/gcc-lib/sparc-linux/2.95.2/crtbegin.o -L/usr/lib/gcc-lib/sparc-linux/2.95.2 --verbose /tmp/cc7apl7m.o -lstdc++ -lm -lgcc -lc -lgcc /usr/lib/gcc-lib/sparc-linux/2.95.2/crtend.o /usr/lib/crtn.o
/usr/lib/gcc-lib/sparc-linux/2.95.2/libstdc++.so: undefined reference to `bad_alloc virtual table'
/usr/lib/gcc-lib/sparc-linux/2.95.2/libstdc++.so: undefined reference to `exception virtual table'
GNU ld version 2.9.5 (with BFD 2.9.5.0.16)
  Supported emulations:
   elf32_sparc
   sparclinux
   sun4
   elf64_sparc
using internal linker script:
==================================================
OUTPUT_FORMAT("elf32-sparc", "elf32-sparc",
	      "elf32-sparc")
OUTPUT_ARCH(sparc)
ENTRY(_start)
SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/sparc-linux/lib);
/* Do we need any of these for elf?
   __DYNAMIC = 0;    */
SECTIONS
{
  /* Read-only sections, merged into text segment: */
  . = 0x10000 + SIZEOF_HEADERS;
  .interp     : { *(.interp) 	}
  .hash          : { *(.hash)		}
  .dynsym        : { *(.dynsym)		}
  .dynstr        : { *(.dynstr)		}
  .gnu.version   : { *(.gnu.version)	}
  .gnu.version_d   : { *(.gnu.version_d)	}
  .gnu.version_r   : { *(.gnu.version_r)	}
  .rel.init      : { *(.rel.init)	}
  .rela.init     : { *(.rela.init)	}
  .rel.text      :
    {
      *(.rel.text)
      *(.rel.text.*)
      *(.rel.gnu.linkonce.t*)
    }
  .rela.text     :
    {
      *(.rela.text)
      *(.rela.text.*)
      *(.rela.gnu.linkonce.t*)
    }
  .rel.fini      : { *(.rel.fini)	}
  .rela.fini     : { *(.rela.fini)	}
  .rel.rodata    :
    {
      *(.rel.rodata)
      *(.rel.rodata.*)
      *(.rel.gnu.linkonce.r*)
    }
  .rela.rodata   :
    {
      *(.rela.rodata)
      *(.rela.rodata.*)
      *(.rela.gnu.linkonce.r*)
    }
  .rel.data      :
    {
      *(.rel.data)
      *(.rel.data.*)
      *(.rel.gnu.linkonce.d*)
    }
  .rela.data     :
    {
      *(.rela.data)
      *(.rela.data.*)
      *(.rela.gnu.linkonce.d*)
    }
  .rel.ctors     : { *(.rel.ctors)	}
  .rela.ctors    : { *(.rela.ctors)	}
  .rel.dtors     : { *(.rel.dtors)	}
  .rela.dtors    : { *(.rela.dtors)	}
  .rel.got       : { *(.rel.got)		}
  .rela.got      : { *(.rela.got)		}
  .rel.sdata     :
    {
      *(.rel.sdata)
      *(.rel.sdata.*)
      *(.rel.gnu.linkonce.s*)
    }
  .rela.sdata     :
    {
      *(.rela.sdata)
      *(.rela.sdata.*)
      *(.rela.gnu.linkonce.s*)
    }
  .rel.sbss      : { *(.rel.sbss)		}
  .rela.sbss     : { *(.rela.sbss)	}
  .rel.bss       : { *(.rel.bss)		}
  .rela.bss      : { *(.rela.bss)		}
  .rel.plt       : { *(.rel.plt)		}
  .rela.plt      : { *(.rela.plt)		}
  .init          : 
  { 
    KEEP (*(.init))
  } =0
  .text      :
  {
    *(.text)
    *(.text.*)
    *(.stub)
    /* .gnu.warning sections are handled specially by elf32.em.  */
    *(.gnu.warning)
    *(.gnu.linkonce.t*)
  } =0
  _etext = .;
  PROVIDE (etext = .);
  .fini      :
  {
    KEEP (*(.fini))
  } =0
  .rodata   : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r*) }
  .rodata1   : { *(.rodata1) }
  /* Adjust the address for the data segment.  We want to adjust up to
     the same address within the page on the next page up.  */
  . = ALIGN(0x10000) + (. & (0x10000 - 1));
  .data    :
  {
    *(.data)
    *(.data.*)
    *(.gnu.linkonce.d*)
    SORT(CONSTRUCTORS)
  }
  .data1   : { *(.data1) }
  .eh_frame : { *(.eh_frame) }
  .gcc_except_table : { *(.gcc_except_table) }
  .ctors   : 
  {
    /* gcc uses crtbegin.o to find the start of
       the constructors, so we make sure it is
       first.  Because this is a wildcard, it
       doesn't matter if the user does not
       actually link against crtbegin.o; the
       linker won't look for a file to match a
       wildcard.  The wildcard also means that it
       doesn't matter which directory crtbegin.o
       is in.  */
    KEEP (*crtbegin.o(.ctors))
    /* We don't want to include the .ctor section from
       from the crtend.o file until after the sorted ctors.
       The .ctor section from the crtend file contains the
       end of ctors marker and it must be last */
    KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
    KEEP (*(SORT(.ctors.*)))
    KEEP (*(.ctors))
  }
   .dtors         :
  {
    KEEP (*crtbegin.o(.dtors))
    KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
    KEEP (*(SORT(.dtors.*)))
    KEEP (*(.dtors))
  }
  .plt      : { *(.plt)	}
  .got           : { *(.got.plt) *(.got) }
  .dynamic       : { *(.dynamic) }
  /* We want the small data sections together, so single-instruction offsets
     can access them all, and initialized data all before uninitialized, so
     we can shorten the on-disk segment size.  */
  .sdata     : 
  {
    *(.sdata) 
    *(.sdata.*)
    *(.gnu.linkonce.s.*)
  }
  _edata = .;
  PROVIDE (edata = .);
  __bss_start = .;
  .sbss      :
  {
    *(.dynsbss)
    *(.sbss)
    *(.sbss.*)
    *(.scommon)
  }
  .bss       :
  {
   *(.dynbss)
   *(.bss)
   *(.bss.*)
   *(COMMON)
   /* Align here to ensure that the .bss section occupies space up to
      _end.  Align after .bss to ensure correct alignment even if the
      .bss section disappears because there are no input sections.  */
   . = ALIGN(8);
  }
  . = ALIGN(8);
  _end = .;
  PROVIDE (end = .);
  /* Stabs debugging sections.  */
  .stab 0 : { *(.stab) }
  .stabstr 0 : { *(.stabstr) }
  .stab.excl 0 : { *(.stab.excl) }
  .stab.exclstr 0 : { *(.stab.exclstr) }
  .stab.index 0 : { *(.stab.index) }
  .stab.indexstr 0 : { *(.stab.indexstr) }
  .comment 0 : { *(.comment) }
  /* DWARF debug sections.
     Symbols in the DWARF debugging sections are relative to the beginning
     of the section so we begin them at 0.  */
  /* DWARF 1 */
  .debug          0 : { *(.debug) }
  .line           0 : { *(.line) }
  /* GNU DWARF 1 extensions */
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
  .debug_sfnames  0 : { *(.debug_sfnames) }
  /* DWARF 1.1 and DWARF 2 */
  .debug_aranges  0 : { *(.debug_aranges) }
  .debug_pubnames 0 : { *(.debug_pubnames) }
  /* DWARF 2 */
  .debug_info     0 : { *(.debug_info) }
  .debug_abbrev   0 : { *(.debug_abbrev) }
  .debug_line     0 : { *(.debug_line) }
  .debug_frame    0 : { *(.debug_frame) }
  .debug_str      0 : { *(.debug_str) }
  .debug_loc      0 : { *(.debug_loc) }
  .debug_macinfo  0 : { *(.debug_macinfo) }
  /* SGI/MIPS DWARF 2 extensions */
  .debug_weaknames 0 : { *(.debug_weaknames) }
  .debug_funcnames 0 : { *(.debug_funcnames) }
  .debug_typenames 0 : { *(.debug_typenames) }
  .debug_varnames  0 : { *(.debug_varnames) }
  /* These must appear regardless of  .  */
}


==================================================
attempt to open /usr/lib/crt1.o succeeded
/usr/lib/crt1.o
attempt to open /usr/lib/crti.o succeeded
/usr/lib/crti.o
attempt to open /usr/lib/gcc-lib/sparc-linux/2.95.2/crtbegin.o succeeded
/usr/lib/gcc-lib/sparc-linux/2.95.2/crtbegin.o
attempt to open /tmp/cc7apl7m.o succeeded
/tmp/cc7apl7m.o
attempt to open /usr/lib/gcc-lib/sparc-linux/2.95.2/libstdc++.so succeeded
-lstdc++ (/usr/lib/gcc-lib/sparc-linux/2.95.2/libstdc++.so)
attempt to open /usr/lib/gcc-lib/sparc-linux/2.95.2/libm.so failed
attempt to open /usr/lib/gcc-lib/sparc-linux/2.95.2/libm.sl failed
attempt to open /usr/lib/gcc-lib/sparc-linux/2.95.2/libm.a failed
attempt to open /usr/lib/libm.so succeeded
-lm (/usr/lib/libm.so)
attempt to open /usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.so failed
attempt to open /usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.sl failed
attempt to open /usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a succeeded
attempt to open /usr/lib/gcc-lib/sparc-linux/2.95.2/libc.so failed
attempt to open /usr/lib/gcc-lib/sparc-linux/2.95.2/libc.sl failed
attempt to open /usr/lib/gcc-lib/sparc-linux/2.95.2/libc.a failed
attempt to open /usr/lib/libc.so succeeded
opened script file /usr/lib/libc.so
attempt to open /lib/libc.so.6 succeeded
/lib/libc.so.6
attempt to open /usr/lib/libc_nonshared.a succeeded
attempt to open /usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.so failed
attempt to open /usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.sl failed
attempt to open /usr/lib/gcc-lib/sparc-linux/2.95.2/libgcc.a succeeded
attempt to open /usr/lib/gcc-lib/sparc-linux/2.95.2/crtend.o succeeded
/usr/lib/gcc-lib/sparc-linux/2.95.2/crtend.o
attempt to open /usr/lib/crtn.o succeeded
/usr/lib/crtn.o
collect2: ld returned 1 exit status
configure: failed program was:

#line 1105 "configure"
#include "confdefs.h"

main(){return(0);}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]