ObjectContainerUniversalMachO.h revision 3508c387c3f0c9ecc439d98048fd7694d41bab1b
124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- ObjectContainerUniversalMachO.h -------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef liblldb_ObjectContainerUniversalMachO_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define liblldb_ObjectContainerUniversalMachO_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Symbol/ObjectContainer.h" 145f54ac373b119a4c6693e4875c48aa761fba0c86Greg Clayton#include "lldb/Host/FileSpec.h" 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 161674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton#include "llvm/Support/MachO.h" 171674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass ObjectContainerUniversalMachO : 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner public lldb_private::ObjectContainer 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Static Functions 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static void 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Initialize(); 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static void 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Terminate(); 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static const char * 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetPluginNameStatic(); 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static const char * 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetPluginDescriptionStatic(); 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static lldb_private::ObjectContainer * 383508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton CreateInstance (const lldb::ModuleSP &module_sp, 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::DataBufferSP& dataSP, 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const lldb_private::FileSpec *file, 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::addr_t offset, 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::addr_t length); 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static bool 45db2dc2b824b61ef7578dc8cdad7b338aa82b1f17Greg Clayton MagicBytesMatch (const lldb_private::DataExtractor &data); 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Member Functions 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 503508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton ObjectContainerUniversalMachO (const lldb::ModuleSP &module_sp, 5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::DataBufferSP& dataSP, 5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const lldb_private::FileSpec *file, 5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::addr_t offset, 5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::addr_t length); 5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual 5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~ObjectContainerUniversalMachO(); 5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual bool 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ParseHeader (); 6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual void 6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Dump (lldb_private::Stream *s) const; 6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual size_t 6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetNumArchitectures () const; 6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual bool 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetArchitectureAtIndex (uint32_t cpu_idx, lldb_private::ArchSpec& arch) const; 7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 71e40b6424d9e49306392bec4b44060da36414c382Greg Clayton virtual lldb::ObjectFileSP 7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetObjectFile (const lldb_private::FileSpec *file); 7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // PluginInterface protocol 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual const char * 7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetPluginName(); 7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual const char * 8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetShortPluginName(); 8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual uint32_t 8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetPluginVersion(); 8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected: 871674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton llvm::MachO::fat_header m_header; 881674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton std::vector<llvm::MachO::fat_arch> m_fat_archs; 8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // liblldb_ObjectContainerUniversalMachO_h_ 92