Hi,

the patch below adds support for OpenBSD/riscv64 to boehm-gc. All
tests pass:

make  check-TESTS
PASS: cordtest
PASS: gctest
PASS: leaktest
PASS: middletest
PASS: smashtest
PASS: hugetest
PASS: realloc_test
PASS: staticrootstest
PASS: test_atomic_ops
PASS: threadleaktest
PASS: threadkey_test
PASS: subthreadcreate_test
PASS: initsecondarythread_test
PASS: test_cpp
PASS: disclaim_test
PASS: disclaim_bench
PASS: disclaim_weakmap_test
============================================================================
Testsuite summary for gc 8.0.4
============================================================================
# TOTAL: 17
# PASS:  17
# SKIP:  0
# XFAIL: 0
# FAIL:  0
# XPASS: 0
# ERROR: 0
============================================================================

ok ?

Index: patches/patch-include_private_gcconfig_h
===================================================================
RCS file: 
/cvs/OpenBSD/ports/devel/boehm-gc/patches/patch-include_private_gcconfig_h,v
retrieving revision 1.24
diff -u -p -u -r1.24 patch-include_private_gcconfig_h
--- patches/patch-include_private_gcconfig_h    5 Feb 2021 18:37:48 -0000       
1.24
+++ patches/patch-include_private_gcconfig_h    29 Jun 2021 20:10:45 -0000
@@ -30,6 +30,15 @@ Index: include/private/gcconfig.h
  # if defined(OPENBSD) && defined(__sh__)
  #    define SH
  #    define mach_type_known
+@@ -670,7 +675,7 @@ EXTERN_C_BEGIN
+ #   endif
+ #   define mach_type_known
+ # endif
+-# if defined(__riscv) && defined(LINUX)
++# if defined(__riscv) && (defined(LINUX) || defined(OPENBSD))
+ #   define RISCV
+ #   define mach_type_known
+ # endif
 @@ -1076,7 +1081,12 @@ EXTERN_C_BEGIN
  #   endif
  #   ifdef OPENBSD
@@ -99,7 +108,33 @@ Index: include/private/gcconfig.h
  #       ifndef GC_OPENBSD_THREADS
            EXTERN_C_END
  #         include <sys/param.h>
-@@ -2906,6 +2926,8 @@ EXTERN_C_BEGIN
+@@ -2884,6 +2904,25 @@ EXTERN_C_BEGIN
+ #     define LINUX_STACKBOTTOM
+ #     define DYNAMIC_LOADING
+ #   endif
++#   ifdef OPENBSD
++#     define OS_TYPE "OPENBSD"
++#     ifndef GC_OPENBSD_THREADS
++        EXTERN_C_END
++#       include <sys/param.h>
++#       include <uvm/uvm_extern.h>
++        EXTERN_C_BEGIN
++#       ifdef USRSTACK
++#         define STACKBOTTOM ((ptr_t)USRSTACK)
++#       else
++#         define HEURISTIC2
++#       endif
++#     endif
++      extern int __data_start[];
++#     define DATASTART ((ptr_t)__data_start)
++      extern int _end[];
++#     define DATAEND ((ptr_t)(&_end))
++#     define DYNAMIC_LOADING
++#   endif
+ # endif /* RISCV */
+ 
+ #if defined(__GLIBC__) && !defined(DONT_USE_LIBC_PRIVATES)
+@@ -2906,6 +2945,8 @@ EXTERN_C_BEGIN
  #elif defined(LINUX) && defined(USE_MMAP)
      /* The kernel may do a somewhat better job merging mappings etc.    */
      /* with anonymous mappings.                                         */

-- 
Matthieu Herrb

Reply via email to