revert accidental checkin
This commit is contained in:
parent
f4f99b11c4
commit
32470760e9
1 changed files with 0 additions and 37 deletions
37
gdb/symtab.c
37
gdb/symtab.c
|
@ -434,10 +434,6 @@ create_demangled_names_hash (struct objfile *objfile)
|
||||||
NULL, objfile->md, xmcalloc, xmfree);
|
NULL, objfile->md, xmcalloc, xmfree);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef LINKER_SYMBOLS_HAVE_WIN32_STDCALL_ARG_SIZES
|
|
||||||
#define LINKER_SYMBOLS_HAVE_WIN32_STDCALL_ARG_SIZES (0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Try to determine the demangled name for a symbol, based on the
|
/* Try to determine the demangled name for a symbol, based on the
|
||||||
language of that symbol. If the language is set to language_auto,
|
language of that symbol. If the language is set to language_auto,
|
||||||
it will attempt to find any demangling algorithm that works and
|
it will attempt to find any demangling algorithm that works and
|
||||||
|
@ -450,39 +446,6 @@ symbol_find_demangled_name (struct general_symbol_info *gsymbol,
|
||||||
{
|
{
|
||||||
char *demangled = NULL;
|
char *demangled = NULL;
|
||||||
|
|
||||||
/* On Windows, some functions use the `stdcall' calling convention,
|
|
||||||
in which the callee is expected to pop the arguments off the
|
|
||||||
stack. Normally, the caller takes care of this, because only the
|
|
||||||
caller knows how many arguments it really passed. To avoid
|
|
||||||
confusion, the linker symbols for `stdcall' functions have names
|
|
||||||
with a suffix "@N" attached to them, where "N" is the number of
|
|
||||||
bytes they'll pop. That way, if a caller thinks some `stdcall'
|
|
||||||
function `foo' expects M argument bytes, but the definition of
|
|
||||||
`foo' expects N argument bytes, N != M, then the call will be a
|
|
||||||
reference to `foo@M', but the definition will have a linker
|
|
||||||
symbol `foo@N', and you'll get a link-time `symbol not found'
|
|
||||||
error, instead of a crash at run-time.
|
|
||||||
|
|
||||||
(Note how this fails to address calls through function pointers,
|
|
||||||
since the byte count isn't part of the function pointer's type.
|
|
||||||
Go, Microsoft!)
|
|
||||||
|
|
||||||
Whatever. But our demangler doesn't like that '@N' suffix, so we
|
|
||||||
need to strip it off. */
|
|
||||||
if (LINKER_SYMBOLS_HAVE_WIN32_STDCALL_ARG_SIZES)
|
|
||||||
{
|
|
||||||
char *arg_byte_suffix = strchr (mangled, '@');
|
|
||||||
if (arg_byte_suffix)
|
|
||||||
{
|
|
||||||
int prefix_len = arg_byte_suffix - mangled;
|
|
||||||
char *mangled_sans_suffix = alloca (prefix_len + 1);
|
|
||||||
memcpy (mangled_sans_suffix, mangled, prefix_len);
|
|
||||||
mangled_sans_suffix[prefix_len] = '\0';
|
|
||||||
|
|
||||||
mangled = mangled_sans_suffix;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gsymbol->language == language_unknown)
|
if (gsymbol->language == language_unknown)
|
||||||
gsymbol->language = language_auto;
|
gsymbol->language = language_auto;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue