mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-01 06:14:47 +08:00
Properly demangle a global constructor symbol.
2010-11-16 H.J. Lu <hongjiu.lu@intel.com> PR other/42670 PR binutils/11137 * cp-demangle.c (d_make_demangle_mangled_name): New. (d_demangle_callback): Use it on DCT_GLOBAL_XTORS. * testsuite/demangle-expected: Updated.
This commit is contained in:
@ -1,3 +1,12 @@
|
|||||||
|
2010-11-16 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
PR other/42670
|
||||||
|
PR binutils/11137
|
||||||
|
* cp-demangle.c (d_make_demangle_mangled_name): New.
|
||||||
|
(d_demangle_callback): Use it on DCT_GLOBAL_XTORS.
|
||||||
|
|
||||||
|
* testsuite/demangle-expected: Updated.
|
||||||
|
|
||||||
2010-11-14 Kai Tietz <kai.tietz@onevision.com>
|
2010-11-14 Kai Tietz <kai.tietz@onevision.com>
|
||||||
|
|
||||||
* simple-object-coff.c (simple_object_coff_read_strtab): Fix reading
|
* simple-object-coff.c (simple_object_coff_read_strtab): Fix reading
|
||||||
|
@ -321,6 +321,9 @@ d_make_comp (struct d_info *, enum demangle_component_type,
|
|||||||
static struct demangle_component *
|
static struct demangle_component *
|
||||||
d_make_name (struct d_info *, const char *, int);
|
d_make_name (struct d_info *, const char *, int);
|
||||||
|
|
||||||
|
static struct demangle_component *
|
||||||
|
d_make_demangle_mangled_name (struct d_info *, const char *);
|
||||||
|
|
||||||
static struct demangle_component *
|
static struct demangle_component *
|
||||||
d_make_builtin_type (struct d_info *,
|
d_make_builtin_type (struct d_info *,
|
||||||
const struct demangle_builtin_type_info *);
|
const struct demangle_builtin_type_info *);
|
||||||
@ -869,6 +872,17 @@ d_make_comp (struct d_info *di, enum demangle_component_type type,
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Add a new demangle mangled name component. */
|
||||||
|
|
||||||
|
static struct demangle_component *
|
||||||
|
d_make_demangle_mangled_name (struct d_info *di, const char *s)
|
||||||
|
{
|
||||||
|
if (d_peek_char (di) != '_' || d_peek_next_char (di) != 'Z')
|
||||||
|
return d_make_name (di, s, strlen (s));
|
||||||
|
d_advance (di, 2);
|
||||||
|
return d_encoding (di, 0);
|
||||||
|
}
|
||||||
|
|
||||||
/* Add a new name component. */
|
/* Add a new name component. */
|
||||||
|
|
||||||
static struct demangle_component *
|
static struct demangle_component *
|
||||||
@ -4823,7 +4837,7 @@ d_demangle_callback (const char *mangled, int options,
|
|||||||
(type == DCT_GLOBAL_CTORS
|
(type == DCT_GLOBAL_CTORS
|
||||||
? DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS
|
? DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS
|
||||||
: DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS),
|
: DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS),
|
||||||
d_make_name (&di, d_str (&di), strlen (d_str (&di))),
|
d_make_demangle_mangled_name (&di, d_str (&di)),
|
||||||
NULL);
|
NULL);
|
||||||
d_advance (&di, strlen (d_str (&di)));
|
d_advance (&di, strlen (d_str (&di)));
|
||||||
break;
|
break;
|
||||||
|
@ -3610,8 +3610,8 @@ std::_Alloc_traits<std::basic_string<char, std::string_char_traits<char>, libcw:
|
|||||||
#
|
#
|
||||||
--format=gnu-v3 --no-params
|
--format=gnu-v3 --no-params
|
||||||
_GLOBAL__I__Z2fnv
|
_GLOBAL__I__Z2fnv
|
||||||
global constructors keyed to _Z2fnv
|
global constructors keyed to fn()
|
||||||
global constructors keyed to _Z2fnv
|
global constructors keyed to fn()
|
||||||
#
|
#
|
||||||
--format=gnu-v3 --no-params
|
--format=gnu-v3 --no-params
|
||||||
_Z1rM1GFivEMS_KFivES_M1HFivES1_4whatIKS_E5what2IS8_ES3_
|
_Z1rM1GFivEMS_KFivES_M1HFivES1_4whatIKS_E5what2IS8_ES3_
|
||||||
|
Reference in New Issue
Block a user