It might be that no one has implemented the deserializing of the MIPS registers yet? Best to step through the code and figure out what is going wrong.
Greg > On Mar 14, 2016, at 3:14 AM, Bhushan Attarde <bhushan.atta...@imgtec.com> > wrote: > > Hi Greg, > > I tried specifying a full triple but it's still the same issue. > > (lldb) target create --arch=mips64el-pc-linux "coredump.elf" --core > "core_mips" > error: Unable to find process plug-in for core file > '/home/battarde/test/core_mips' > > LLDB correctly recognises that "core_mips" is a core file and creates an > appropriate Process instance (i.e ProcessElfCore). > But then "ProcessElfCore::CanDebug" fails as it cannot create a complete > Module because it cannot find any architecture in that core file. > > Everything in the triple for the core file "core_mips" remains "Unknown" here > i.e UnknownArch-UnknownVendor-UnknownOS/UnknownEnvironment. > > What happens here is, "ObjectFileELF::GetModuleSpecifications" has this: > > const uint32_t sub_type = subTypeFromElfHeader(header); > spec.GetArchitecture().SetArchitecture(eArchTypeELF, > > header.e_machine, > > sub_type, > > header.e_ident[EI_OSABI]); > > subTypeFromElfHeader(header) returns ArchSpec::eMIPSSubType_unknown (as > header.e_flags is 0). > Then SetArchitecture called with cpu=llvm::ELF::EM_MIPS and > sub_type=ArchSpec::eMIPSSubType_unknown fails to find a ArchDefinitionEntry > because there ins't any ArchDefinitionEntry in g_elf_arch_entries for this > cpu/subtype combination. > This in turn leaves everything in triple as "Unknown" and the ArchSpec > created for core file remains Invalid. > > -Bhushan > > -----Original Message----- > From: Greg Clayton [mailto:gclay...@apple.com] > Sent: 11 March 2016 02:31 > To: Bhushan Attarde > Cc: lldb-dev@lists.llvm.org > Subject: Re: [lldb-dev] Not able to find process plugin for core file > > >> On Mar 10, 2016, at 4:34 AM, Bhushan Attarde via lldb-dev >> <lldb-dev@lists.llvm.org> wrote: >> >> Hi All, >> >> I am working on adding support for MIPS coredump file in LLDB. >> >> I tried below command: >> >> (lldb) target create "app_mips.elf" --core "core_mips" >> error: Unable to find process plug-in for core file '/home/battarde/test/ >> core_mips’ >> >> 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" >> to create a Module for corefile. But Module constructor in Module.cpp has >> this: >> >> // First extract all module specifications from the file using the local >> // file path. If there are no specifications, then don't fill anything in >> ModuleSpecList modules_specs; >> if (ObjectFile::GetModuleSpecifications(module_spec.GetFileSpec(), 0, 0, >> modules_specs) == 0) >> return; >> >> 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. >> As no specifications are found, Module constructor takes an early exit >> leaving its members uninitialized. >> >> 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. >> >> 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. >> >> 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). >> What could be the proper fix to this issue? > > Try specifying a full triple when creating the target: > > > (lldb) target create --arch=mips32-pc-linux "app_mips.elf" --core "core_mips" > > If any ELF file is unable to figure out its file type, it should leave things > generic so the triple for the core ELF file should be something like: > "mips-*-*". If that is true, then this should match your more specific triple > specified in the target of "mips32-pc-linux". > > Try out specifying the triple and let me know how that goes. > > Greg Clayton _______________________________________________ lldb-dev mailing list lldb-dev@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev