Reviewers: Michael Starzinger,
Message:
Fix the build on that most popular of platforms, OpenBSD.
Summary:
OpenBSD doesn't have <ucontext.h>. ucontext_t lives in <signal.h>
and is a typedef for struct sigcontext. There is no uc_mcontext.
src/sampler.cc | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
Description:
openbsd: fix platform build
Please review this at https://codereview.chromium.org/21705003/
Affected files:
M src/sampler.cc
Index: src/sampler.cc
diff --git a/src/sampler.cc b/src/sampler.cc
index
d72ed1acdb832e224c490b736954bf6d908ebb88..6e451f0bdeab3bb5cbed51e113a8b9ff72784464
100644
--- a/src/sampler.cc
+++ b/src/sampler.cc
@@ -38,7 +38,10 @@
#include <signal.h>
#include <sys/time.h>
#include <sys/syscall.h>
-#if !defined(__ANDROID__) || defined(__BIONIC_HAVE_UCONTEXT_T)
+// OpenBSD doesn't have <ucontext.h>. ucontext_t lives in <signal.h>
+// and is a typedef for struct sigcontext. There is no uc_mcontext.
+#if (!defined(__ANDROID__) || defined(__BIONIC_HAVE_UCONTEXT_T)) \
+ && !defined(__OpenBSD__)
#include <ucontext.h>
#endif
#include <unistd.h>
@@ -330,7 +333,9 @@ void SignalHandler::HandleProfilerSignal(int signal,
siginfo_t* info,
#else
// Extracting the sample from the context is extremely machine dependent.
ucontext_t* ucontext = reinterpret_cast<ucontext_t*>(context);
+#if !defined(__OpenBSD__)
mcontext_t& mcontext = ucontext->uc_mcontext;
+#endif
#if defined(__linux__) || defined(__ANDROID__)
#if V8_HOST_ARCH_IA32
state.pc = reinterpret_cast<Address>(mcontext.gregs[REG_EIP]);
@@ -384,7 +389,6 @@ void SignalHandler::HandleProfilerSignal(int signal,
siginfo_t* info,
state.fp = reinterpret_cast<Address>(mcontext.__gregs[_REG_RBP]);
#endif // V8_HOST_ARCH_*
#elif defined(__OpenBSD__)
- USE(mcontext);
#if V8_HOST_ARCH_IA32
state.pc = reinterpret_cast<Address>(ucontext->sc_eip);
state.sp = reinterpret_cast<Address>(ucontext->sc_esp);
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.