Properly read i386 coredump.
2010-04-21 H.J. Lu <hongjiu.lu@intel.com> PR corefiles/11523 * amd64-linux-tdep.c (amd64_linux_core_read_description): Check XCR0 first. * i386-linux-tdep.c (i386_linux_core_read_xcr0): Return 0 if there is no .reg-xstate section. (i386_linux_core_read_description): Check XCR0 first.
This commit is contained in:
parent
a9789a6b9d
commit
f335d1b395
3 changed files with 35 additions and 26 deletions
|
@ -1,3 +1,13 @@
|
||||||
|
2010-04-21 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
PR corefiles/11523
|
||||||
|
* amd64-linux-tdep.c (amd64_linux_core_read_description): Check
|
||||||
|
XCR0 first.
|
||||||
|
|
||||||
|
* i386-linux-tdep.c (i386_linux_core_read_xcr0): Return 0 if
|
||||||
|
there is no .reg-xstate section.
|
||||||
|
(i386_linux_core_read_description): Check XCR0 first.
|
||||||
|
|
||||||
2010-04-21 Mike Frysinger <vapier@gentoo.org>
|
2010-04-21 Mike Frysinger <vapier@gentoo.org>
|
||||||
|
|
||||||
* gdb/sparc-tdep.c (sparc32_store_return_value): Add gdb_assert ()
|
* gdb/sparc-tdep.c (sparc32_store_return_value): Add gdb_assert ()
|
||||||
|
|
|
@ -1269,19 +1269,16 @@ amd64_linux_core_read_description (struct gdbarch *gdbarch,
|
||||||
struct target_ops *target,
|
struct target_ops *target,
|
||||||
bfd *abfd)
|
bfd *abfd)
|
||||||
{
|
{
|
||||||
asection *section = bfd_get_section_by_name (abfd, ".reg2");
|
|
||||||
uint64_t xcr0;
|
|
||||||
|
|
||||||
if (section == NULL)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
/* Linux/x86-64. */
|
/* Linux/x86-64. */
|
||||||
xcr0 = i386_linux_core_read_xcr0 (gdbarch, target, abfd);
|
uint64_t xcr0 = i386_linux_core_read_xcr0 (gdbarch, target, abfd);
|
||||||
if ((xcr0 & I386_XSTATE_AVX_MASK) == I386_XSTATE_AVX_MASK)
|
switch ((xcr0 & I386_XSTATE_AVX_MASK))
|
||||||
|
{
|
||||||
|
case I386_XSTATE_AVX_MASK:
|
||||||
return tdesc_amd64_avx_linux;
|
return tdesc_amd64_avx_linux;
|
||||||
else
|
default:
|
||||||
return tdesc_amd64_linux;
|
return tdesc_amd64_linux;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
amd64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
amd64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
||||||
|
|
|
@ -611,7 +611,7 @@ i386_linux_core_read_xcr0 (struct gdbarch *gdbarch,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
xcr0 = I386_XSTATE_SSE_MASK;
|
xcr0 = 0;
|
||||||
|
|
||||||
return xcr0;
|
return xcr0;
|
||||||
}
|
}
|
||||||
|
@ -623,22 +623,24 @@ i386_linux_core_read_description (struct gdbarch *gdbarch,
|
||||||
struct target_ops *target,
|
struct target_ops *target,
|
||||||
bfd *abfd)
|
bfd *abfd)
|
||||||
{
|
{
|
||||||
asection *section = bfd_get_section_by_name (abfd, ".reg2");
|
|
||||||
uint64_t xcr0;
|
|
||||||
|
|
||||||
if (section == NULL)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
section = bfd_get_section_by_name (abfd, ".reg-xfp");
|
|
||||||
if (section == NULL)
|
|
||||||
return tdesc_i386_mmx_linux;
|
|
||||||
|
|
||||||
/* Linux/i386. */
|
/* Linux/i386. */
|
||||||
xcr0 = i386_linux_core_read_xcr0 (gdbarch, target, abfd);
|
uint64_t xcr0 = i386_linux_core_read_xcr0 (gdbarch, target, abfd);
|
||||||
if ((xcr0 & I386_XSTATE_AVX_MASK) == I386_XSTATE_AVX_MASK)
|
switch ((xcr0 & I386_XSTATE_AVX_MASK))
|
||||||
|
{
|
||||||
|
case I386_XSTATE_AVX_MASK:
|
||||||
return tdesc_i386_avx_linux;
|
return tdesc_i386_avx_linux;
|
||||||
else
|
case I386_XSTATE_SSE_MASK:
|
||||||
return tdesc_i386_linux;
|
return tdesc_i386_linux;
|
||||||
|
case I386_XSTATE_X87_MASK:
|
||||||
|
return tdesc_i386_mmx_linux;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bfd_get_section_by_name (abfd, ".reg-xfp") != NULL)
|
||||||
|
return tdesc_i386_linux;
|
||||||
|
else
|
||||||
|
return tdesc_i386_mmx_linux;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue