<div dir="ltr"><div class="markdown-here-wrapper" style><p style="margin:1.2em 0px!important">Matthew,</p>
<p style="margin:1.2em 0px!important">Your patch looks good to me.  I would like Greg and/or Ed to have a look at it too.  If they don’t object, I can submit it.</p>
<p style="margin:1.2em 0px!important">I ran tests on Linux and MacOSX with the patch applied (with a slight indentation fix to the patch to fix some kind of strange spacing in my Chrome browser with this line:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;display:inline;background-color:rgb(248,248,248);white-space:pre;overflow:auto;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important;display:block;padding:0.5em;color:rgb(51,51,51);background:rgb(248,248,255)">arch_spec.GetTriple().setVendorName(Host::GetVendorString().GetCString());
</code></pre><p style="margin:1.2em 0px!important">The tests came back clean.</p>
<div title="MDH:TWF0dGhldyw8ZGl2Pjxicj48L2Rpdj48ZGl2PllvdXIgcGF0Y2ggbG9va3MgZ29vZCB0byBtZS4g
Jm5ic3A7SSB3b3VsZCBsaWtlIEdyZWcgYW5kL29yIEVkIHRvIGhhdmUgYSBsb29rIGF0IGl0IHRv
by4gJm5ic3A7SWYgdGhleSBkb24ndCBvYmplY3QsIEkgY2FuIHN1Ym1pdCBpdC48L2Rpdj48ZGl2
Pjxicj48L2Rpdj48ZGl2PkkgcmFuIHRlc3RzIG9uIExpbnV4IGFuZCBNYWNPU1ggd2l0aCB0aGUg
cGF0Y2ggYXBwbGllZCAod2l0aCBhIHNsaWdodCBpbmRlbnRhdGlvbiBmaXggdG8gdGhlIHBhdGNo
IHRvIGZpeCBzb21lIGtpbmQgb2Ygc3RyYW5nZSBzcGFjaW5nIGluIG15IENocm9tZSBicm93c2Vy
IHdpdGggdGhpcyBsaW5lOjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBhcmlh
bCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxM3B4OyI+PGJyPjwvc3Bhbj48L2Rpdj48ZGl2Pjxz
cGFuIHN0eWxlPSJmb250LWZhbWlseTogYXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTNw
eDsiPmBgYDwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogYXJpYWws
IHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTNweDsiPmFyY2hfc3BlYy5HZXRUcmlwbGUoKS48L3Nw
YW4+PHUgc3R5bGU9ImZvbnQtZmFtaWx5OiBhcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx
M3B4OyI+PC91PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogYXJpYWwsIHNhbnMtc2VyaWY7IGZv
bnQtc2l6ZTogMTNweDsiPnNldFZlbmRvPC9zcGFuPjx3YnIgc3R5bGU9ImZvbnQtZmFtaWx5OiBh
cmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxM3B4OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFt
aWx5OiBhcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxM3B4OyI+ck5hbWUoSG9zdDo6PC9z
cGFuPjx1IHN0eWxlPSJmb250LWZhbWlseTogYXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTog
MTNweDsiPjwvdT48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IGFyaWFsLCBzYW5zLXNlcmlmOyBm
b250LXNpemU6IDEzcHg7Ij5HZXRWZW5kb3JTdHJpbmcoKS48L3NwYW4+PHdiciBzdHlsZT0iZm9u
dC1mYW1pbHk6IGFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEzcHg7Ij48c3BhbiBzdHls
ZT0iZm9udC1mYW1pbHk6IGFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEzcHg7Ij5HZXRD
U3RyaW5nKCk8L3NwYW4+PHUgc3R5bGU9ImZvbnQtZmFtaWx5OiBhcmlhbCwgc2Fucy1zZXJpZjsg
Zm9udC1zaXplOiAxM3B4OyI+PC91PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogYXJpYWwsIHNh
bnMtc2VyaWY7IGZvbnQtc2l6ZTogMTNweDsiPik7PC9zcGFuPjxiciBzdHlsZT0iZm9udC1mYW1p
bHk6IGFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEzcHg7Ij48L2Rpdj48ZGl2PmBgYDwv
ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+VGhlIHRlc3RzIGNhbWUgYmFjayBjbGVhbi48L2Rpdj4=" style="height:0;font-size:0em;padding:0;margin:0">​</div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Jul 10, 2014 at 8:10 AM, Todd Fiala <span dir="ltr"><<a href="mailto:tfiala@google.com" target="_blank">tfiala@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class=""><div>> <span style="font-size:13px;font-family:arial,sans-serif">Please note that I copied a lot of the PlatformLinux code into PlatformKalimba<br>
</span><br></div></div><div>Oh shucks, I have a boatload of changes going into PlatformLinux to support remote debugging!  I've been stuck the last week dealing with testing, Windows-related builds/issues, and other minutiae but I am looking to getting back to this.  You can keep your eyes on the changes I check in for PlatofrmLinux to support llgs.  I'll be refactoring a bunch of code in PlatformDarwin into PlatformPOSIX, and changing a few more details in PlatformLinux.</div>
<div class="">
<div><br></div><div>> <span style="font-size:13px;font-family:arial,sans-serif">When I invoke "target create kalimba.elf" I actually see ObjectFileELF::</span><u style="font-size:13px;font-family:arial,sans-serif"></u><span style="font-size:13px;font-family:arial,sans-serif">GetSectionHeade</span><span style="font-size:13px;font-family:arial,sans-serif">rInfo called *several times* whilst the target is created:</span></div>

<div><br></div></div><div>Yeah I have a note to go back to figure out why that's the case.  When I added the note support, I saw it getting called several times when it seems like it should have been once.  The ObjectFileELF was getting created and destroyed multiple times, which I think was unintended.  I'll look closer into why that's happening.  Thanks for reminding me.</div>
<div class="">
<div><br></div><div>> <span style="font-family:arial,sans-serif;font-size:13px">It would be great if we could prevent the arch_spec being modified again, after the headers are parsed. Either with my patch or something similar. Anyway, I'm off now, so I'll catch up sometime tomorrow.</span></div>

<br style="font-family:arial,sans-serif;font-size:13px"></div><div>Okay, hopefully by then it will all be better :-)</div><div><br></div><div>Thanks,</div><div>Todd</div></div><div class="gmail_extra"><div><div class="h5">
<br><br><div class="gmail_quote">
On Thu, Jul 10, 2014 at 7:07 AM, Matthew Gardiner <span dir="ltr"><<a href="mailto:mg11@csr.com" target="_blank">mg11@csr.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div>Todd Fiala wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I'll have a look later this morning. That code indeed is intended to only be run before they section header parsing. It may have evolved poorly since that was my initial attempt when I thought all of files had the header ABI set correctly.<br>


<br>
It is still useful as a fallback if the notes are not present.<br>
<br>
I hadn't yet seen a calling sequence where that static method was called after parsing the section headers but clearly it sounds like you are hitting it.<br>
</blockquote>
<br></div>
Hi Todd,<br>
<br>
Yup, It would be cool if you could take a look.<br>
<br>
When I invoke "target create kalimba.elf" I actually see ObjectFileELF::<u></u>GetSectionHeaderInfo called *several times* whilst the target is created:<br>
<br>
The first time...<br>
<br>
#0 ObjectFileELF::<u></u>GetSectionHeaderInfo (section_headers=std::vector of length 0, capacity 0, object_data=...,<br>
#1 ObjectFileELF::<u></u>GetModuleSpecifications<br>
#2  lldb_private::ObjectFile::<u></u>GetModuleSpecifications (overloaded function)<br>
#3  lldb_private::ObjectFile::<u></u>GetModuleSpecifications<br>
#4  lldb_private::TargetList::<u></u>CreateTarget<br>
<br>
It is subsequently called again like this:<br>
<br>
#0  ObjectFileELF::<u></u>GetSectionHeaderInfo (section_headers=std::vector of length 18,<br>
#1  ObjectFileELF::<u></u>ParseSectionHeaders (<br>
#2  ObjectFileELF::GetArchitecture (<br>
#3  lldb_private::Module::<u></u>GetObjectFile (<br>
#4  lldb_private::ModuleList::<u></u>GetSharedModule (<br>
#5  lldb_private::PlatformKalimba:<u></u>:ResolveExecutable (<br>
#6  lldb_private::TargetList::<u></u>CreateTarget (<br>
<br>
As you can see GSHI gets called again with a non-empty section list when the platform tries to resolve the executable.<br>
<br>
<br>
Please note that I copied a lot of the PlatformLinux code into PlatformKalimba. So the behaviour I see is not specific to my kalimba implementation: loading a linux ELF built for x86_64 execution does the same thing:<br>


<br>
do:<br>
<br>
(lldb) target create ~/src/../simple/i64-hello.elf<br>
<br>
with a breakpoint here in ObjectFileELF::GSHI:<br>
<br>
    if (!section_headers.empty())<br>
-->   return section_headers.size();<br>
<br>
you'll see this call stack at some stage:<br>
#0  ObjectFileELF::<u></u>GetSectionHeaderInfo (section_headers=std::vector of length 35<br>
#1  ObjectFileELF::<u></u>ParseSectionHeaders (<br>
#2  ObjectFileELF::GetArchitecture (<br>
#3  lldb_private::Module::<u></u>GetObjectFile (<br>
#4  lldb_private::ModuleList::<u></u>GetSharedModule (<br>
#5  lldb_private::PlatformLinux::<u></u>ResolveExecutable (<br>
#6  lldb_private::TargetList::<u></u>CreateTarget (<br>
<br>
It would be great if we could prevent the arch_spec being modified again, after the headers are parsed. Either with my patch or something similar. Anyway, I'm off now, so I'll catch up sometime tomorrow.<br>
<br>
thanks<br>
Matt<div><div><br>
<br>
<br>
Member of the CSR plc group of companies. CSR plc registered in England and Wales, registered number 4187346, registered office Churchill House, Cambridge Business Park, Cowley Road, Cambridge, CB4 0WZ, United Kingdom<br>


More information can be found at <a href="http://www.csr.com" target="_blank">www.csr.com</a>. Keep up to date with CSR on our technical blog, <a href="http://www.csr.com/blog" target="_blank">www.csr.com/blog</a>, CSR people blog, <a href="http://www.csr.com/people" target="_blank">www.csr.com/people</a>, YouTube, <a href="http://www.youtube.com/user/CSRplc" target="_blank">www.youtube.com/user/CSRplc</a>, Facebook, <a href="http://www.facebook.com/pages/CSR/191038434253534" target="_blank">www.facebook.com/pages/CSR/<u></u>191038434253534</a>, or follow us on Twitter at <a href="http://www.twitter.com/CSR_plc" target="_blank">www.twitter.com/CSR_plc</a>.<br>


New for 2014, you can now access the wide range of products powered by aptX at <a href="http://www.aptx.com" target="_blank">www.aptx.com</a>.<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div></div></div><div class="">-- <br><div dir="ltr"><table cellspacing="0" cellpadding="0" style="color:rgb(136,136,136);font-family:'Times New Roman'">
<tbody><tr style="color:rgb(85,85,85);font-family:sans-serif;font-size:small">
<td nowrap style="border-top-style:solid;border-top-color:rgb(213,15,37);border-top-width:2px">Todd Fiala |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(51,105,232);border-top-width:2px"> Software Engineer |</td>

<td nowrap style="border-top-style:solid;border-top-color:rgb(0,153,57);border-top-width:2px"> <a href="mailto:tfiala@google.com" style="color:rgb(17,85,204)" target="_blank"><span style="background-color:rgb(255,255,204);color:rgb(34,34,34);background-repeat:initial initial">tfiala@google.com</span></a> |</td>

<td nowrap style="border-top-style:solid;border-top-color:rgb(238,178,17);border-top-width:2px"><font color="#1155cc"> <a>650-943-3180</a></font></td></tr></tbody></table><br></div>
</div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><table cellspacing="0" cellpadding="0" style="color:rgb(136,136,136);font-family:'Times New Roman'"><tbody><tr style="color:rgb(85,85,85);font-family:sans-serif;font-size:small">
<td nowrap style="border-top-style:solid;border-top-color:rgb(213,15,37);border-top-width:2px">Todd Fiala |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(51,105,232);border-top-width:2px"> Software Engineer |</td>
<td nowrap style="border-top-style:solid;border-top-color:rgb(0,153,57);border-top-width:2px"> <a href="mailto:tfiala@google.com" style="color:rgb(17,85,204)" target="_blank"><span style="background-color:rgb(255,255,204);color:rgb(34,34,34);background-repeat:initial initial">tfiala@google.com</span></a> |</td>
<td nowrap style="border-top-style:solid;border-top-color:rgb(238,178,17);border-top-width:2px"><font color="#1155cc"> <a>650-943-3180</a></font></td></tr></tbody></table><br></div>
</div>