This is the mail archive of the gcc-patches@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]
Other format: [Raw text]

Re: C++ PATCH for c++/37376, other mangling issues


On Mon, Oct 6, 2008 at 3:25 PM, Jason Merrill <jason@redhat.com> wrote:
> This patch fixes several mangling issues: mangling of variadic templates,
> mangling of "." in expressions, mangling of typename types. It also updates
> the demangler accordingly, and adds a bunch of tests.
>
> This probably won't be the last mangling patch.
>
> Tested x86_64-pc-linux-gnu, applied to trunk.
>

This patch exposed a bug in C++ demangler:

http://www.sourceware.org/bugzilla/show_bug.cgi?id=6948

I got

Program received signal SIGSEGV, Segmentation fault.
0x00000000004eb6fa in d_print_comp (dpi=0x7fff02d0da10, dc=0x3)
    at /net/gnu-6/export/gnu/src/binutils/binutils/libiberty/cp-demangle.c:3084
warning: Source file is more recent than executable.
3084	  switch (dc->type)
Missing separate debuginfos, use: debuginfo-install glibc.x86_64 zlib.x86_64
(gdb) bt
#0  0x00000000004eb6fa in d_print_comp (dpi=0x7fff02d0da10, dc=0x3)
    at /net/gnu-6/export/gnu/src/binutils/binutils/libiberty/cp-demangle.c:3084
#1  0x00000000004ec070 in d_print_comp (dpi=0x7fff02d0da10, dc=0x7fff02d0dbd0)
    at /net/gnu-6/export/gnu/src/binutils/binutils/libiberty/cp-demangle.c:3425
#2  0x00000000004ebe0b in d_print_comp (dpi=0x7fff02d0da10, dc=0x7fff02d0dbe8)
    at /net/gnu-6/export/gnu/src/binutils/binutils/libiberty/cp-demangle.c:3327
#3  0x00000000004eb569 in cplus_demangle_print_callback (options=259,
    dc=0x7fff02d0dbe8, callback=0x4eb3db <d_growable_string_callback_adapter>,
    opaque=0x7fff02d0de20)
    at /net/gnu-6/export/gnu/src/binutils/binutils/libiberty/cp-demangle.c:3033
#4  0x00000000004ed871 in d_demangle_callback (mangled=0x2744b75 "_ZTIPDi",
    options=259, callback=0x4eb3db <d_growable_string_callback_adapter>,
    opaque=0x7fff02d0de20)
    at /net/gnu-6/export/gnu/src/binutils/binutils/libiberty/cp-demangle.c:4289
#5  0x00000000004ed8e0 in d_demangle (mangled=0x2744b75 "_ZTIPDi",
    options=259, palc=0x7fff02d0de78)
    at /net/gnu-6/export/gnu/src/binutils/binutils/libiberty/cp-demangle.c:4312
#6  0x00000000004ed945 in cplus_demangle_v3 (mangled=0x2744b75 "_ZTIPDi",
    options=259)
    at /net/gnu-6/export/gnu/src/binutils/binutils/libiberty/cp-demangle.c:4469
#7  0x00000000004e155c in cplus_demangle (mangled=0x2744b75 "_ZTIPDi",
    options=3)
    at /net/gnu-6/export/gnu/src/binutils/binutils/libiberty/cplus-dem.c:862
---Type <return> to continue, or q <return> to quit---
#8  0x0000000000414e44 in lang_vers_match (head=0x169a278, prev=0x0,
    sym=0x2744b75 "_ZTIPDi")
    at /net/gnu-6/export/gnu/src/binutils/binutils/ld/ldlang.c:6954
#9  0x000000000046cfe3 in _bfd_elf_link_assign_sym_version (h=0x2760060,
    data=0x7fff02d0e260)
    at /net/gnu-6/export/gnu/src/binutils/binutils/bfd/elflink.c:2068
#10 0x000000000043b552 in bfd_hash_traverse (table=0x16b70a0,
    func=0x46caf1 <_bfd_elf_link_assign_sym_version>, info=0x7fff02d0e260)
    at /net/gnu-6/export/gnu/src/binutils/binutils/bfd/hash.c:602
#11 0x000000000043bd49 in bfd_link_hash_traverse (table=0x16b70a0,
    func=0x46caf1 <_bfd_elf_link_assign_sym_version>, info=0x7fff02d0e260)
    at /net/gnu-6/export/gnu/src/binutils/binutils/bfd/linker.c:612
#12 0x0000000000473e7b in bfd_elf_size_dynamic_sections (output_bfd=0x16b4d10,
    soname=0x7fff02d106b1 "libstdc++.so.6", rpath=0x0, filter_shlib=0x0,
    auxiliary_filters=0x0, info=0x7858a0, sinterpptr=0x7fff02d0e328,
    verdefs=0x169a260)
    at /net/gnu-6/export/gnu/src/binutils/binutils/bfd/elflink.c:5680
#13 0x0000000000422215 in gldelf_x86_64_before_allocation ()
    at eelf_x86_64.c:1273
#14 0x000000000041c456 in ldemul_before_allocation ()
    at /net/gnu-6/export/gnu/src/binutils/binutils/ld/ldemul.c:78
#15 0x0000000000413bf6 in lang_process ()
    at /net/gnu-6/export/gnu/src/binutils/binutils/ld/ldlang.c:6156
---Type <return> to continue, or q <return> to quit---
#16 0x0000000000417830 in main (argc=104, argv=0x7fff02d0e4d8)
    at /net/gnu-6/export/gnu/src/binutils/binutils/ld/ldmain.c:520
(gdb)

while building libstdc++.la on Linux/x86-64.


-- 
H.J.


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