Looks fine. On Apr 16, 2014, at 11:11 AM, Ed Maste <[email protected]> wrote:
> Right now elf-core supports only the generic signal set. Override > GetUnixSignals in ProcessElfCore, and return the OS-specific signal set, if > we have one. > > This requires a trivial change to move FreeBSDSignals to > Plugins/Process/Utility, not shown in this diff. The equivalent change to > support Linux signals in elf-core is straightforward, but we don't (yet) > identify Linux cores in a foolproof way. > > > http://reviews.llvm.org/D3401 > > Files: > source/Plugins/Process/elf-core/ProcessElfCore.cpp > source/Plugins/Process/elf-core/ProcessElfCore.h > > Index: source/Plugins/Process/elf-core/ProcessElfCore.cpp > =================================================================== > --- source/Plugins/Process/elf-core/ProcessElfCore.cpp > +++ source/Plugins/Process/elf-core/ProcessElfCore.cpp > @@ -25,6 +25,7 @@ > > #include "Plugins/ObjectFile/ELF/ObjectFileELF.h" > #include "Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.h" > +#include "Plugins/Process/Utility/FreeBSDSignals.h" > > // Project includes > #include "ProcessElfCore.h" > @@ -105,6 +106,8 @@ > m_core_module_sp (), > m_core_file (core_file), > m_dyld_plugin_name (), > + m_os(llvm::Triple::UnknownOS), > + m_signals_sp (), > m_thread_data_valid(false), > m_thread_data(), > m_core_aranges () > @@ -229,6 +232,15 @@ > if (arch.IsValid()) > m_target.SetArchitecture(arch); > > + switch (m_os) > + { > + case llvm::Triple::FreeBSD: > + m_signals_sp.reset(new FreeBSDSignals()); > + break; > + default: > + break; > + } > + > return error; > } > > @@ -342,6 +354,8 @@ > ProcessElfCore::Clear() > { > m_thread_list.Clear(); > + m_os = llvm::Triple::UnknownOS; > + m_signals_sp.reset(); > } > > void > @@ -486,6 +500,7 @@ > DataExtractor note_data (segment_data, note_start, note_size); > if (note.n_name == "FreeBSD") > { > + m_os = llvm::Triple::FreeBSD; > switch (note.n_type) > { > case NT_FREEBSD_PRSTATUS: > Index: source/Plugins/Process/elf-core/ProcessElfCore.h > =================================================================== > --- source/Plugins/Process/elf-core/ProcessElfCore.h > +++ source/Plugins/Process/elf-core/ProcessElfCore.h > @@ -104,6 +104,18 @@ > IsAlive (); > > //------------------------------------------------------------------ > + // Process Signals > + //------------------------------------------------------------------ > + virtual lldb_private::UnixSignals & > + GetUnixSignals() > + { > + if (m_signals_sp) > + return *m_signals_sp; > + else > + return Process::GetUnixSignals(); > + } > + > + //------------------------------------------------------------------ > // Process Memory > //------------------------------------------------------------------ > virtual size_t > @@ -142,6 +154,9 @@ > std::string m_dyld_plugin_name; > DISALLOW_COPY_AND_ASSIGN (ProcessElfCore); > > + llvm::Triple::OSType m_os; > + std::shared_ptr<lldb_private::UnixSignals> m_signals_sp; > + > // True if m_thread_contexts contains valid entries > bool m_thread_data_valid; > <D3401.1.patch>_______________________________________________ > lldb-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits _______________________________________________ lldb-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
