This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [rfc] bi-arch for x86-64 corefile.


On Tue, Oct 30, 2012 at 12:21 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Mon, Oct 29, 2012 at 9:29 PM, Yao Qi <yao@codesourcery.com> wrote:
>> [add binutils@sourceware.org back to CC]
>>
>>
>> On 10/30/2012 10:51 AM, H.J. Lu wrote:
>>>
>>>  >>> >+    int pr_fpvalid;                    /* True if math copro
>>> being used.  */
>>>  >>> >+#if __WORDSIZE == 32
>>>  >>> >+    char pad[4];
>>>  >>> >+#endif
>>>  >>> >+  };
>>>  >>
>>>  >> This is wrong. There should be no pad.  Please properly copy the
>>>  >> 64-bit elf_prstatus.
>>>  >>
>>>  >
>>>  > Without this pad, the size of 'struct elf_prstatus64' on 32-bit(332)
>>> is not equal to the size of 'struct elf_prstatus' on 64-bit(336).  IIUC,
>>> the goal of defining 'elf_prstatus64' is to emulate 64-bit
>>> 'elf_prstatus' on 32-bit machine.  The field 'pad' is for tail padding,
>>> as the size of this struct should be multiple of 8.
>>>
>>> It won't work for x32.
>>>
>>
>> H.J, I am confused here.  I assume you mean x32 as target.  Now, both
>> 'prstatus64_t' and 'prpsinfo64_t' are only used in
>> elf64-x86-64.c:elf_x86_64_write_core_note ([1] and [2] as annotated below),
>>
>> elf_x86_64_write_core_note (....)
>> {
>>   switch (note_type)
>>     case NT_PRPSINFO:
>>       if (bed->s->elfclass == ELFCLASS32)
>>         {
>>           prpsinfo32_t data;  <--- [3]
>>         }
>>       else
>>         {
>>           prpsinfo64_t data;  <---- [1]
>>         }
>>     case NT_PRSTATUS:
>>       if (bed->s->elfclass == ELFCLASS32)
>>         {
>>           if (bed->elf_machine_code == EM_X86_64)
>>             {
>>               prstatusx32_t prstat;  <--- [4]
>>             }
>>           else
>>             {
>>               prstatus32_t prstat;
>>             }
>>         }
>>       else
>>         {
>>           prstatus64_t prstat;   <--- [2]
>>         }
>>     }
>> }
>>
>> x32 will go the path [3] and [4], unreachable to [1] and [2].  so this patch
>> shouldn't affect x32 as target.
>>
>
> I am checking in this.  But sourceware.org times out for me.  Please
> give it a try.
>

I checked it in.  Please let me know if it works for you.

Thanks.


-- 
H.J.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]