mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-02-24 19:42:32 +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>
|
2003-09-19 Jim Blandy <jimb@redhat.com>
|
||||||
|
|
||||||
* macrotab.c (macro_include): Use the correct comparison to find
|
* 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);
|
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
|
||||||
@ -446,6 +450,39 @@ 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;
|
||||||
|
|
||||||
|
@ -182,7 +182,6 @@ static const int mappings[] =
|
|||||||
context_offset (FloatSave.DataSelector),
|
context_offset (FloatSave.DataSelector),
|
||||||
context_offset (FloatSave.DataOffset),
|
context_offset (FloatSave.DataOffset),
|
||||||
context_offset (FloatSave.ErrorSelector)
|
context_offset (FloatSave.ErrorSelector)
|
||||||
#ifdef HAVE_SSE_REGS
|
|
||||||
/* XMM0-7 */ ,
|
/* XMM0-7 */ ,
|
||||||
context_offset (ExtendedRegisters[10*16]),
|
context_offset (ExtendedRegisters[10*16]),
|
||||||
context_offset (ExtendedRegisters[11*16]),
|
context_offset (ExtendedRegisters[11*16]),
|
||||||
@ -194,7 +193,6 @@ static const int mappings[] =
|
|||||||
context_offset (ExtendedRegisters[17*16]),
|
context_offset (ExtendedRegisters[17*16]),
|
||||||
/* MXCSR */
|
/* MXCSR */
|
||||||
context_offset (ExtendedRegisters[24])
|
context_offset (ExtendedRegisters[24])
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#undef context_offset
|
#undef context_offset
|
||||||
|
@ -182,7 +182,6 @@ static const int mappings[] =
|
|||||||
context_offset (FloatSave.DataSelector),
|
context_offset (FloatSave.DataSelector),
|
||||||
context_offset (FloatSave.DataOffset),
|
context_offset (FloatSave.DataOffset),
|
||||||
context_offset (FloatSave.ErrorSelector)
|
context_offset (FloatSave.ErrorSelector)
|
||||||
#ifdef HAVE_SSE_REGS
|
|
||||||
/* XMM0-7 */ ,
|
/* XMM0-7 */ ,
|
||||||
context_offset (ExtendedRegisters[10*16]),
|
context_offset (ExtendedRegisters[10*16]),
|
||||||
context_offset (ExtendedRegisters[11*16]),
|
context_offset (ExtendedRegisters[11*16]),
|
||||||
@ -194,7 +193,6 @@ static const int mappings[] =
|
|||||||
context_offset (ExtendedRegisters[17*16]),
|
context_offset (ExtendedRegisters[17*16]),
|
||||||
/* MXCSR */
|
/* MXCSR */
|
||||||
context_offset (ExtendedRegisters[24])
|
context_offset (ExtendedRegisters[24])
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#undef context_offset
|
#undef context_offset
|
||||||
|
Loading…
x
Reference in New Issue
Block a user