| Server IP : 82.208.35.60 / Your IP : 216.73.216.238 Web Server : Apache/2.4.55 (FreeBSD) OpenSSL/1.1.1q-freebsd PHP/7.3.31 System : FreeBSD server7.d2m.cz 12.4-RELEASE-p9 FreeBSD 12.4-RELEASE-p9 GENERIC amd64 User : studiokobylisy_cz ( 1008) PHP Version : 7.3.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /usr/ports/devel/electron19/files/ |
Upload File : |
--- base/allocator/partition_allocator/starscan/stack/stack.cc.orig 2022-05-25 04:00:42 UTC
+++ base/allocator/partition_allocator/starscan/stack/stack.cc
@@ -17,6 +17,10 @@
#include <pthread.h>
#endif
+#if defined(OS_BSD)
+#include <pthread_np.h>
+#endif
+
#if defined(LIBC_GLIBC)
extern "C" void* __libc_stack_end;
#endif
@@ -47,6 +51,36 @@ void* GetStackTop() {
void* GetStackTop() {
return pthread_get_stackaddr_np(pthread_self());
+}
+
+#elif defined(OS_OPENBSD)
+
+void* GetStackTop() {
+ stack_t ss;
+ if (pthread_stackseg_np(pthread_self(), &ss) != 0)
+ return nullptr;
+ return reinterpret_cast<uint8_t*>(ss.ss_sp);
+}
+
+#elif defined(OS_FREEBSD)
+
+void* GetStackTop() {
+ pthread_attr_t attr;
+ int error = pthread_attr_init(&attr);
+ if (error) {
+ return nullptr;
+ }
+ error = pthread_attr_get_np(pthread_self(), &attr);
+ if (!error) {
+ void* base;
+ size_t size;
+ error = pthread_attr_getstack(&attr, &base, &size);
+ PA_CHECK(!error);
+ pthread_attr_destroy(&attr);
+ return reinterpret_cast<uint8_t*>(base) + size;
+ }
+ pthread_attr_destroy(&attr);
+ return nullptr;
}
#elif BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA)