aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEd Maste <emaste@freebsd.org>2013-07-30 14:40:59 +0000
committerEd Maste <emaste@freebsd.org>2013-07-30 14:40:59 +0000
commit8c2dc0ed580bf17b93431f8aca0ad7a89b594066 (patch)
treeb7c191de743bd20cd82d71fa71b80874b7ccd6b8
parent5119a6475bc2e3073c4a24399035a22ab4eab810 (diff)
downloadlldb-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.cpp20
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;
}
}