<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 27, 2013 at 10:19 AM, Greg Clayton <span dir="ltr"><<a href="mailto:gclayton@apple.com" target="_blank">gclayton@apple.com</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>Is there anyway to check the byte size of the thread context and do something intelligent so we can correctly identify the register context to be used?<br>


</div></blockquote><div><br></div><div>The current idea I have to differentiate FreeBSD/Linux core is to use ELFHeader's OS/ABI field or to useELFNote section's owner field </div><div><div>Linux core output</div>


<div>$eu-readelf -n test/core</div><div>Note segment of 1368 bytes at offset 0x3f8:<br></div><div>  Owner          Data size  Type</div><div>  CORE                 336  PRSTATUS</div><div>  CORE                 136  PRPSINFO</div>


<div>  CORE                 304  AUXV</div><div><br></div><div>FreeBSD core's output</div><div><div>$eu-readelf -h a.out.core  | grep OS</div><div>  OS/ABI:                            FreeBSD</div><div><br>
</div></div><div><div>$eu-readelf -n a.out.core</div><div>Note segment of 960 bytes at offset 0x200:<br></div><div>  Owner          Data size  Type</div><div>  FreeBSD              120  PRPSINFO</div><div>  FreeBSD              224  PRSTATUS</div>


<div>  FreeBSD              512  FPREGSET</div><div>  FreeBSD               24  GWINDOWS</div></div><div><br></div><div>But the real problem is creating another class which abstracts and handles the two or more ABI.</div>

</div><div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>
<br>
The ELF file contains a machine type which isn't much help in identifying exactly what kind of machine this was generated on. Especially for ARM we would have trouble identifying the correct register context for a armv5, armv6 or armv7 core, each which might also contain completely different floating pointer registers.<br>

</div></blockquote><div><br></div><div style>Yea - I havent looked at ARM cores. If you have ELF ARM cores please attach readelf -a output.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div>

<br>
I would like to be able to read ELF core files on MacOSX so I can help diagnose issues when people file bugs, so I would really like to get this working prior to checkin if possible. The ELF object file parser should be able to include the two register contexts and maybe look at the sizes (hopefully they aren't the same) and "do the right thing", no?</div>


</blockquote></div><div class="gmail_extra"><br></div>I will take a look again. </div><div class="gmail_extra"><br></div><div class="gmail_extra" style>Thanks</div><div class="gmail_extra" style>Samuel<br><br></div></div>