diff options
author | Ed Maste <emaste@freebsd.org> | 2013-07-30 14:40:59 +0000 |
---|---|---|
committer | Ed Maste <emaste@freebsd.org> | 2013-07-30 14:40:59 +0000 |
commit | 8c2dc0ed580bf17b93431f8aca0ad7a89b594066 (patch) | |
tree | b7c191de743bd20cd82d71fa71b80874b7ccd6b8 | |
parent | 5119a6475bc2e3073c4a24399035a22ab4eab810 (diff) | |
download | lldb-8c2dc0ed580bf17b93431f8aca0ad7a89b594066.tar.gz |
Run-time reg context selection for POSIX targets
Instantiate RegisterContext... based on getOS() instead of with
compile-time #ifdef-ery.
The assert() here is unfortunate, but better than crashing with no
explanation.
This change is equivalent to r186865 for elf-core.
git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@187422 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | source/Plugins/Process/POSIX/POSIXThread.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/source/Plugins/Process/POSIX/POSIXThread.cpp b/source/Plugins/Process/POSIX/POSIXThread.cpp index 0f3e7bec2..a5cccee3b 100644 --- a/source/Plugins/Process/POSIX/POSIXThread.cpp +++ b/source/Plugins/Process/POSIX/POSIXThread.cpp @@ -145,14 +145,18 @@ POSIXThread::GetRegisterContext() break; case ArchSpec::eCore_x86_64_x86_64: -// TODO: Use target OS/architecture detection rather than ifdefs so that -// lldb built on FreeBSD can debug on Linux and vice-versa. -#ifdef __linux__ - m_reg_context_sp.reset(new RegisterContextLinux_x86_64(*this, 0)); -#endif -#ifdef __FreeBSD__ - m_reg_context_sp.reset(new RegisterContextFreeBSD_x86_64(*this, 0)); -#endif + switch (arch.GetTriple().getOS()) + { + case llvm::Triple::FreeBSD: + m_reg_context_sp.reset(new RegisterContextFreeBSD_x86_64(*this, 0)); + break; + case llvm::Triple::Linux: + m_reg_context_sp.reset(new RegisterContextLinux_x86_64(*this, 0)); + break; + default: + assert(false && "OS not supported"); + break; + } break; } } |