This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: C++ PATCH for c++/37376, other mangling issues
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: "Jason Merrill" <jason at redhat dot com>
- Cc: "gcc-patches List" <gcc-patches at gcc dot gnu dot org>
- Date: Mon, 6 Oct 2008 18:27:46 -0700
- Subject: Re: C++ PATCH for c++/37376, other mangling issues
- References: <48EA9070.8060208@redhat.com>
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.