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