<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-IN" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hi All,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I am working on adding support for MIPS coredump file in LLDB.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I tried below command:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">(lldb) target create "app_mips.elf" --core "core_mips"<o:p></o:p></p>
<p class="MsoNormal">error: Unable to find process plug-in for core file '/home/battarde/test/ core_mips’<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Currently LLDB is not able to find a Process plugin for MIPS core file. I debugged this and found that while finding the process plugin, "ProcessElfCore::CanDebug" calls "ModuleList::GetSharedModule"<o:p></o:p></p>
<p class="MsoNormal">to create a Module for corefile. But Module constructor in Module.cpp has this:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">    // First extract all module specifications from the file using the local<o:p></o:p></p>
<p class="MsoNormal">    // file path. If there are no specifications, then don't fill anything in<o:p></o:p></p>
<p class="MsoNormal">    ModuleSpecList modules_specs;<o:p></o:p></p>
<p class="MsoNormal">    if (ObjectFile::GetModuleSpecifications(module_spec.GetFileSpec(), 0, 0, modules_specs) == 0)<o:p></o:p></p>
<p class="MsoNormal">        return;<o:p></o:p></p>
<p class="MsoNormal">        <o:p></o:p></p>
<p class="MsoNormal">The issue here is that the targets like MIPS depends on elf flags to determine the actual architecture but core file doesn't contain any arch information (header.e_flags is 0) so it can't decide the arch contained in core file.<o:p></o:p></p>
<p class="MsoNormal">As no specifications are found, Module constructor takes an early exit leaving its members uninitialized.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Going further, Module also fails to get the ObjectFile representation as it doesn't contain enough information (Module::m_file, Module::m_arch) required to get ObjectFile.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">So, "ProcessElfCore::CanDebug" returns false and because of this LLDB gives error saying that it is unable to find process plug-in for core file.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I can make mipsVariantFromElfFlags() to return some default architecture (to ensure we always have valid arch when it can't be decided from elf flags) but this won't always work (core's default arch and executable_elf's arch may not "match"
 always).<o:p></o:p></p>
<p class="MsoNormal">What could be the proper fix to this issue?<o:p></o:p></p>
</div>
</body>
</html>