diff --git a/AK/StackInfo.cpp b/AK/StackInfo.cpp index 80e1d4271cc..9b92e471d8d 100644 --- a/AK/StackInfo.cpp +++ b/AK/StackInfo.cpp @@ -14,7 +14,7 @@ # include #elif defined(AK_OS_LINUX) or defined(AK_OS_MACOS) # include -#elif defined(AK_OS_FREEBSD) +#elif defined(AK_OS_FREEBSD) or defined(AK_OS_OPENBSD) # include # include #endif @@ -67,6 +67,16 @@ StackInfo::StackInfo() m_size = eight_megabytes; } m_base = top_of_stack - m_size; +#elif defined(AK_OS_OPENBSD) + int rc; + stack_t thread_stack; + if ((rc = pthread_stackseg_np(pthread_self(), &thread_stack)) != 0) { + fprintf(stderr, "pthread_stackseg_np: %s\n", strerror(rc)); + VERIFY_NOT_REACHED(); + } + FlatPtr top_of_stack = (FlatPtr)thread_stack.ss_sp; + m_size = (size_t)thread_stack.ss_size; + m_base = top_of_stack - m_size; #else # pragma message "StackInfo not supported on this platform! Recursion checks and stack scans may not work properly" m_size = (size_t)~0;