mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-27 14:00:30 +00:00
* win32-nat.c (mappings): Remove HAVE_SSE conditional.
This commit is contained in:
parent
99f24a0cc6
commit
f4f99b11c4
@ -1,3 +1,7 @@
|
||||
2003-09-19 Christopher Faylor <cgf@redhat.com>
|
||||
|
||||
* win32-nat.c (mappings): Remove HAVE_SSE conditional.
|
||||
|
||||
2003-09-19 Jim Blandy <jimb@redhat.com>
|
||||
|
||||
* macrotab.c (macro_include): Use the correct comparison to find
|
||||
|
37
gdb/symtab.c
37
gdb/symtab.c
@ -434,6 +434,10 @@ create_demangled_names_hash (struct objfile *objfile)
|
||||
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
|
||||
language of that symbol. If the language is set to language_auto,
|
||||
it will attempt to find any demangling algorithm that works and
|
||||
@ -446,6 +450,39 @@ symbol_find_demangled_name (struct general_symbol_info *gsymbol,
|
||||
{
|
||||
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)
|
||||
gsymbol->language = language_auto;
|
||||
|
||||
|
@ -182,7 +182,6 @@ static const int mappings[] =
|
||||
context_offset (FloatSave.DataSelector),
|
||||
context_offset (FloatSave.DataOffset),
|
||||
context_offset (FloatSave.ErrorSelector)
|
||||
#ifdef HAVE_SSE_REGS
|
||||
/* XMM0-7 */ ,
|
||||
context_offset (ExtendedRegisters[10*16]),
|
||||
context_offset (ExtendedRegisters[11*16]),
|
||||
@ -194,7 +193,6 @@ static const int mappings[] =
|
||||
context_offset (ExtendedRegisters[17*16]),
|
||||
/* MXCSR */
|
||||
context_offset (ExtendedRegisters[24])
|
||||
#endif
|
||||
};
|
||||
|
||||
#undef context_offset
|
||||
|
@ -182,7 +182,6 @@ static const int mappings[] =
|
||||
context_offset (FloatSave.DataSelector),
|
||||
context_offset (FloatSave.DataOffset),
|
||||
context_offset (FloatSave.ErrorSelector)
|
||||
#ifdef HAVE_SSE_REGS
|
||||
/* XMM0-7 */ ,
|
||||
context_offset (ExtendedRegisters[10*16]),
|
||||
context_offset (ExtendedRegisters[11*16]),
|
||||
@ -194,7 +193,6 @@ static const int mappings[] =
|
||||
context_offset (ExtendedRegisters[17*16]),
|
||||
/* MXCSR */
|
||||
context_offset (ExtendedRegisters[24])
|
||||
#endif
|
||||
};
|
||||
|
||||
#undef context_offset
|
||||
|
Loading…
Reference in New Issue
Block a user