On Linux, versioned ELF symbols are stored in the static symtab with an (@)@VERSION suffix. We store such symbols with the suffix and thus fail to find them when looking up the real name. This causes failures such as the one described here: http://www.sourceware.org/ml/gdb/2006-08/msg00244.html In the general case, GDB doesn't use the dynamic symtab because it contains usually only a subset of the static table information. The attached patch make GDB store dynamic versioned symbols. Maybe this is harvests too much symbols, and we should limit it to the dynamic symbols of the main executable. It's easy enough to do, we just need to pass the 'mainline' flag to elf_symfile_read from elf_symtab_read. I've no idea if this could break something on non-Linux platforms, I've just tested on x86-linux. I'm also attaching a little testsuite patch that fails for me on current GDB and works with the patch. Opinions? 2006-08-31 Frederic Riss * elfread.c (elf_symtab_read): Read versioned symbols from the dynamic symtab. 2006-08-31 Frederic Riss * gdb.cp/userdef.exp: Test use of std::cout.