//===-- RegisterUtilities.cpp -----------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "Plugins/Process/elf-core/RegisterUtilities.h" #include "llvm/ADT/STLExtras.h" using namespace lldb_private; static llvm::Optional getNoteType(const llvm::Triple &Triple, llvm::ArrayRef RegsetDescs) { for (const auto &Entry : RegsetDescs) { if (Entry.OS != Triple.getOS()) continue; if (Entry.Arch != llvm::Triple::UnknownArch && Entry.Arch != Triple.getArch()) continue; return Entry.Note; } return llvm::None; } DataExtractor lldb_private::getRegset(llvm::ArrayRef Notes, const llvm::Triple &Triple, llvm::ArrayRef RegsetDescs) { auto TypeOr = getNoteType(Triple, RegsetDescs); if (!TypeOr) return DataExtractor(); uint32_t Type = *TypeOr; auto Iter = llvm::find_if( Notes, [Type](const CoreNote &Note) { return Note.info.n_type == Type; }); return Iter == Notes.end() ? DataExtractor() : Iter->data; }