[Lldb-commits] [PATCH] Add FreeBSD-specific signal support to elf-core
Greg Clayton
gclayton at apple.com
Wed Apr 16 18:16:58 PDT 2014
Looks fine.
On Apr 16, 2014, at 11:11 AM, Ed Maste <emaste at freebsd.org> 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
> lldb-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
More information about the lldb-commits
mailing list