compile failure of glibc-2.3.2 due to static libgcc

kutek@cybercomm.net kutek@cybercomm.net
Sat Apr 26 17:27:00 GMT 2003



 i have been unable to compile glibc 2.3.2 on two different systems where
 the same error is manifested. attached is the file (libc.so.lds) where the
 error occurs, which is the following:

 /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/../../../../i686-pc-linux-gnu/bin/
ld: /home/times/gg/glibc/libc.so.lds:114:parse error

 another system gives the same error but since it is a different machine the
 line number  of the error is different. if you need to see that file i can
 provide it...but since that system is a 386/40 it will take about 4 days
 (bwhahaha) to compile and generate the error, so it is not included here.

 utilities needed for the compile are all up to date. the compile failed
 with both gcc 3.2.2 and 3.2.3.

 i had compiled my gcc with --disable-shared, and thus libgcc is static. 
 glibc will not compile with this compiler configuration, manifesting the
 error as described above. on a hunch, i recompiled gcc to generate the
 dynamic libgcc and glibc  compiled successfully with the new compiler.

 However, I prefer that libgcc be static for reasons concerning the presence
of multiple gcc versions on my systems and the vagaries of using the
different versions so that they access their own libgcc version.

surely there is a way around this? Aside from this situation the static gcc
seems to function fine. Thanks for any assistance


fractoid


-------------- next part --------------
/* Script for --shared -z combreloc: shared library, combine & sort relocs */
OUTPUT_FORMAT("elf32-i386", "elf32-i386",
	      "elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(_start)
SEARCH_DIR("/usr/i686-pc-linux-gnu/lib"); SEARCH_DIR("/usr/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib");
/* Do we need any of these for elf?
   __DYNAMIC = 0;    */
SECTIONS
{
  /* Read-only sections, merged into text segment: */
  . = 0 + SIZEOF_HEADERS;
  .note.ABI-tag : { *(.note.ABI-tag) }   .hash           : { *(.hash) }
  .dynsym         : { *(.dynsym) }
  .dynstr         : { *(.dynstr) }
  .gnu.version    : { *(.gnu.version) }
  .gnu.version_d  : { *(.gnu.version_d) }
  .gnu.version_r  : { *(.gnu.version_r) }
  .rel.dyn        :
    {
      *(.rel.init)
      *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
      *(.rel.fini)
      *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
      *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
      *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
      *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
      *(.rel.ctors)
      *(.rel.dtors)
      *(.rel.got)
      *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
    }
  .rela.dyn       :
    {
      *(.rela.init)
      *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
      *(.rela.fini)
      *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
      *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
      *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
      *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
      *(.rela.ctors)
      *(.rela.dtors)
      *(.rela.got)
      *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
    }
  .rel.plt        : { *(.rel.plt) }
  .rela.plt       : { *(.rela.plt) }
  .init           :
  {
    KEEP (*(.init))
  } =0x90909090
  .plt            : { *(.plt) }
  .text           :
  {
    *(.text .stub .text.* .gnu.linkonce.t.*)
    /* .gnu.warning sections are handled specially by elf32.em.  */
    *(.gnu.warning)
  } =0x90909090
  .fini           :
  {
    KEEP (*(.fini))
  } =0x90909090
  PROVIDE (__etext = .);
  PROVIDE (_etext = .);
  PROVIDE (etext = .);
  .rodata         : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
  .rodata1        : { *(.rodata1) }
  .eh_frame_hdr : { *(.eh_frame_hdr) }
  /* Adjust the address for the data segment.  We want to adjust up to
     the same address within the page on the next page up.  */
  . = DATA_SEGMENT_ALIGN(0x1000, 0x1000);
  /* Ensure the __preinit_array_start label is properly aligned.  We
     could instead move the label definition inside the section, but
     the linker would then create the section even if it turns out to
     be empty, which isn't pretty.  */
  . = ALIGN(32 / 8);
  .preinit_array     : { *(.preinit_array) }
  .init_array     : { *(.init_array) }
  .fini_array     : { *(.fini_array) }
  .data           :
  {
    *(.data .data.* .gnu.linkonce.d.*)
    SORT(CONSTRUCTORS)
  }
  .data1          : { *(.data1) }
  .tdata	  : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
  .tbss		  : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
  .eh_frame       : { KEEP (*(.eh_frame)) }
  .gcc_except_table   : { *(.gcc_except_table) }
  .dynamic        : { *(.dynamic) }
  .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          :
  {
   /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/libgcc.a(unwind-dw2-fde-glibc.o): In function `size_of_encoded_value':
/home/times/gcc/gcc/../../gcc-3.2.3/gcc/unwind-pe.h:76: undefined reference to `abort'
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/libgcc.a(unwind-dw2-fde-glibc.o): In function `read_encoded_value_with_base':
/home/times/gcc/gcc/../../gcc-3.2.3/gcc/unwind-pe.h:243: undefined reference to `abort'
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/libgcc.a(unwind-dw2-fde-glibc.o): In function `__register_frame':
/home/times/gcc/gcc/../../gcc-3.2.3/gcc/unwind-dw2-fde.c:113: undefined reference to `malloc'
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/libgcc.a(unwind-dw2-fde-glibc.o): In function `__register_frame_table':
/home/times/gcc/gcc/../../gcc-3.2.3/gcc/unwind-dw2-fde.c:151: undefined reference to `malloc'
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/libgcc.a(unwind-dw2-fde-glibc.o): In function `__deregister_frame_info_bases':
/home/times/gcc/gcc/../../gcc-3.2.3/gcc/unwind-dw2-fde.c:210: undefined reference to `abort'
/home/times/gcc/gcc/../../gcc-3.2.3/gcc/unwind-dw2-fde.c:195: undefined reference to `free'
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/libgcc.a(unwind-dw2-fde-glibc.o): In function `__deregister_frame':
/home/times/gcc/gcc/../../gcc-3.2.3/gcc/unwind-dw2-fde.c:228: undefined reference to `free'
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/libgcc.a(unwind-dw2-fde-glibc.o): In function `base_from_object':
/home/times/gcc/gcc/../../gcc-3.2.3/gcc/unwind-dw2-fde.c:253: undefined reference to `abort'
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/libgcc.a(unwind-dw2-fde-glibc.o): In function `get_cie_encoding':
/home/times/gcc/gcc/../../gcc-3.2.3/gcc/unwind-dw2-fde.c:271: undefined reference to `strlen'
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/libgcc.a(unwind-dw2-fde-glibc.o): In function `init_object':
/home/times/gcc/gcc/../../gcc-3.2.3/gcc/unwind-dw2-fde.c:582: undefined reference to `free'
/home/times/gcc/gcc/../../gcc-3.2.3/gcc/unwind-dw2-fde.c:393: undefined reference to `malloc'
/home/times/gcc/gcc/../../gcc-3.2.3/gcc/unwind-dw2-fde.c:396: undefined reference to `malloc'
/home/times/gcc/gcc/../../gcc-3.2.3/gcc/unwind-dw2-fde.c:579: undefined reference to `abort'
 KEEP (*crtbegin.o(.dtors))
    KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
    KEEP (*(SORT(.dtors.*)))
    KEEP (*(.dtors))
  }
  .jcr            : { KEEP (*(.jcr)) }
  .got            : { *(.got.plt) *(.got) }
  _edata = .;
  PROVIDE (edata = .);
  __bss_start = .;
  .bss            :
  {
   *(.dynbss) __start___libc_freeres_ptrs = .; *(__libc_freeres_ptrs) __stop___libc_freeres_ptrs = .;
   *(.bss .bss.* .gnu.linkonce.b.*)
   *(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(32 / 8);
  }
  . = ALIGN(32 / 8);
  _end = .;
  PROVIDE (end = .);
  . = DATA_SEGMENT_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 .gnu.linkonce.wi.*) }
  .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) }
}




More information about the Libc-alpha mailing list