<div dir="ltr">The bulk of the (shared) static method impls will occasionally need to call a virtual function where the behavior differs.<div><br></div><div>Am I missing something?</div><div><br></div><div>static shared_method_probably_in_HostInfoPOSIX()</div><div>{</div><div>    LotsOfSharedCode();</div><div>    VirtualMethodA();   // differs between straight-up POSIX, Linux and Android</div><div>    LotsOfSharedCode();</div><div>    VIrtualMethodB();  // similar.</div><div>}</div><div><br></div><div>I'm not sure I'm following how that will work in a static method.  Don't we need an instance here?</div><div><br></div><div>-Todd</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 26, 2014 at 1:28 PM, Zachary Turner <span dir="ltr"><<a href="mailto:zturner@google.com" target="_blank">zturner@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">That shouldn't affect anything.  HostInfoLinux already inherits from HostInfoPosix.  Just because the methods are static doesn't prevent overriding them through inheritance.  That's the reason for the HostInfo typedef.  In the end, on Android, HostInfo will be typedefed to HostInfoAndroid.  If a method has been overridden in HostInfoAndroid, then HostInfo::Foo() will call the version in HostInfoAndroid.  If it hasn't, it will call the version in HostInfoLinux (or HostInfoPosix, or wherever it has been declared).<div><br></div><div><br></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 26, 2014 at 1:19 PM, 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">Have a look Jim :-)  I'd love to do that but right now everything appears to be static AFAICT.</div><div class="gmail_extra"><div><div><br><div class="gmail_quote">On Fri, Sep 26, 2014 at 1:18 PM,  <span dir="ltr"><<a href="mailto:jingham@apple.com" target="_blank">jingham@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Sorry, I must be missing something.  Why can't HostInfoAndroid just derive from HostInfoLinux, and only modify the methods it actually changes?<br>
<span><font color="#888888"><br>
Jim<br>
</font></span><div><div><br>
> On Sep 26, 2014, at 1:16 PM, Tong Shen <<a href="mailto:endlessroad@google.com" target="_blank">endlessroad@google.com</a>> wrote:<br>
><br>
> Actually, Todd suggested me to add Android specific files for<br>
> HostInfo, HostThread, etc.<br>
><br>
> What's the best way to avoid duplicating HostInfoLinux functions into<br>
> HostInfoAndroid?<br>
><br>
> On Fri, Sep 26, 2014 at 1:09 PM, Zachary Turner <<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>> wrote:<br>
>> const char *<br>
>> HostInfoLinux::LookupGroupName(uint32_t gid, std::string &group_name)<br>
>> {<br>
>> #if defined(__ANDROID__)<br>
>>    assert(false && "getgrgid_r() not supported on Android");<br>
>> #else<br>
>>    return HostInfoPosix::LookupGroupName(gid, group_name);<br>
>> #endif<br>
>> }<br>
>><br>
>> On Fri, Sep 26, 2014 at 1:03 PM, Tong Shen <<a href="mailto:endlessroad@google.com" target="_blank">endlessroad@google.com</a>> wrote:<br>
>>><br>
>>> HostThreadLinux can overwrite Cancel() so ifdef only happens in<br>
>>> HostThreadLinux::Cancel().<br>
>>> I've done that and will upload later.<br>
>>><br>
>>> Do you have any suggestion on HostInfoPosix, though? How can we move<br>
>>> the ifdef to HostInfoLinux without duplicating<br>
>>> HostInfoPosix::LookupGroupName() ?<br>
>>><br>
>>> On Fri, Sep 26, 2014 at 12:35 PM, Zachary Turner <<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>><br>
>>> wrote:<br>
>>>> I'm not seeing the changes to HostInfoPosix and HostThreadPosix that I<br>
>>>> suggested.  Are those still coming in a followup?<br>
>>>><br>
>>>> On Fri, Sep 26, 2014 at 11:59 AM, Tong Shen <<a href="mailto:endlessroad@google.com" target="_blank">endlessroad@google.com</a>><br>
>>>> wrote:<br>
>>>>><br>
>>>>> <a href="http://reviews.llvm.org/D5495" target="_blank">http://reviews.llvm.org/D5495</a><br>
>>>>><br>
>>>>> Files:<br>
>>>>>  include/lldb/Core/IOHandler.h<br>
>>>>>  include/lldb/Host/linux/Config.h<br>
>>>>>  source/Core/IOHandler.cpp<br>
>>>>>  source/Host/common/Host.cpp<br>
>>>>>  source/Host/common/Socket.cpp<br>
>>>>>  source/Host/linux/Host.cpp<br>
>>>>>  source/Host/posix/HostInfoPosix.cpp<br>
>>>>>  source/Host/posix/HostThreadPosix.cpp<br>
>>>>>  source/Interpreter/CommandInterpreter.cpp<br>
>>>>>  source/Plugins/Process/Linux/LinuxThread.h<br>
>>>>>  source/Plugins/Process/Linux/NativeProcessLinux.cpp<br>
>>>>>  source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.h<br>
>>>>>  source/Plugins/Process/Linux/ProcessLinux.cpp<br>
>>>>>  source/Plugins/Process/Linux/ProcessLinux.h<br>
>>>>>  source/Plugins/Process/Linux/ProcessMonitor.cpp<br>
>>>>>  source/Plugins/Process/POSIX/POSIXThread.cpp<br>
>>>>>  source/Plugins/Process/POSIX/POSIXThread.h<br>
>>>>>  source/Plugins/Process/POSIX/ProcessPOSIX.cpp<br>
>>>>><br>
>>>>><br>
>>>>> source/Plugins/Process/POSIX/RegisterContextPOSIXProcessMonitor_arm64.cpp<br>
>>>>><br>
>>>>><br>
>>>>> source/Plugins/Process/POSIX/RegisterContextPOSIXProcessMonitor_mips64.cpp<br>
>>>>><br>
>>>>> source/Plugins/Process/POSIX/RegisterContextPOSIXProcessMonitor_x86.cpp<br>
>>>>>  source/Plugins/Process/Utility/RegisterInfos_arm64.h<br>
>>>>>  source/Plugins/Process/elf-core/RegisterContextPOSIXCore_mips64.cpp<br>
>>>>>  source/Plugins/Process/elf-core/RegisterContextPOSIXCore_x86_64.cpp<br>
>>>>>  source/Plugins/Process/elf-core/ThreadElfCore.cpp<br>
>>>>>  source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp<br>
>>>>>  source/Target/ProcessLaunchInfo.cpp<br>
>>>>>  source/Target/Thread.cpp<br>
>>>>>  tools/lldb-gdbserver/lldb-gdbserver.cpp<br>
>>>><br>
>>>><br>
>>><br>
>>><br>
>>><br>
>>> --<br>
>>> Best Regards, Tong Shen<br>
>><br>
>><br>
><br>
><br>
><br>
> --<br>
> Best Regards, Tong Shen<br>
<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div></div></div><span>-- <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>
</span></div>
</blockquote></div><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>