This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [testsuite patch] for: [PATCH] [PR corefiles/17808] i386: Fix internal error when prstatus in core file is too big
- From: Andreas Arnez <arnez at linux dot vnet dot ibm dot com>
- To: Mark Kettenis <mark dot kettenis at xs4all dot nl>
- Cc: palves at redhat dot com, jan dot kratochvil at redhat dot com, gdb-patches at sourceware dot org
- Date: Mon, 12 Jan 2015 15:30:44 +0100
- Subject: Re: [testsuite patch] for: [PATCH] [PR corefiles/17808] i386: Fix internal error when prstatus in core file is too big
- Authentication-results: sourceware.org; auth=none
- References: <874ms18cyz dot fsf at br87z6lw dot de dot ibm dot com> <20150108164327 dot GA29029 at host2 dot jankratochvil dot net> <87zj9s70bh dot fsf at br87z6lw dot de dot ibm dot com> <54B00160 dot 5000309 at redhat dot com> <201501091659 dot t09GxO1q016197 at glazunov dot sibelius dot xs4all dot nl> <54B00D92 dot 4050409 at redhat dot com> <201501091935 dot t09JZA6f017629 at glazunov dot sibelius dot xs4all dot nl> <54B035D8 dot 6010003 at redhat dot com> <201501092030 dot t09KUAd8016363 at glazunov dot sibelius dot xs4all dot nl>
On Fri, Jan 09 2015, Mark Kettenis wrote:
>> Date: Fri, 09 Jan 2015 20:11:04 +0000
>> From: Pedro Alves <palves@redhat.com>
>>
>> ...
>> I think we're saying the same thing, but what I'm calling "expected",
>> you're calling "maximum". As in, consider the case where GDB
>> about a regset section that is supposed to have size A. GDB is taught
>> about this, with "minimum" == A, and "expected/maximum" == A. Later at
>> some point, a new variant of the machine appears with more registers, and
>> the regset is extended, to size B. A GDB that only knows about A encounters
>> a core dump with B, and thus issues a warning (which suggests that either
>> more info is available that gdb doesn't grok, or the core is broken), but still
>> presents the A registers to the user. Later, someone teaches GDB about B
>> registers, and at that point, "minimum" stays A, but "expected/maximum" is
>> set to B. At some point, if the regset is extended further to C, a GDB
>> that knows about A and B warns when it sees C. And on and on. I think
>> we've already seen something like that with the x86 xsave regset?
>
> Yes, the x86 "FPU" register set certainly is an example I had in mind.
> It all started when SSE was introduced.
Right, the floating point register set has grown over time. The good
thing is that x86 Linux platforms represent the different FPU regset
versions with different target descriptions. (As determined from a core
file with the core_read_description gdbarch method.) In this way the
regset size passed to the iterator callback could match the "expected"
size, not just the minimum. However, the size is currently not
calculated at all for ".reg-xstate". I think this should be fixed,
probably by using X86_XSTATE_SIZE.