<pre style='margin:0'>
Perry E. Metzger (pmetzger) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/780393238ec4a8b9fd9a2e1cac273da012dd1616">https://github.com/macports/macports-ports/commit/780393238ec4a8b9fd9a2e1cac273da012dd1616</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 780393238ec iv: new port in devel
</span>780393238ec is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 780393238ec4a8b9fd9a2e1cac273da012dd1616
</span>Author: Sergey Fedorov <vital.had@gmail.com>
AuthorDate: Sun Feb 4 04:49:22 2024 +0800

<span style='display:block; white-space:pre;color:#404040;'>    iv: new port in devel
</span>---
 devel/iv/Portfile                            |  97 ++++++++++++++
 devel/iv/files/patch-do-not-fetch-tools.diff |   8 ++
 devel/iv/files/patch-gc-arm64.diff           | 193 +++++++++++++++++++++++++++
 devel/iv/files/patch-lv5.diff                |  21 +++
 devel/iv/files/patch-static-liblv5.diff      |  26 ++++
 5 files changed, 345 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/iv/Portfile b/devel/iv/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..f40c7a113dd
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/iv/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,97 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           cmake 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           compiler_blacklist_versions 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        Constellation iv 64c3a9c7c517063f29d90d449180ea8f6f4d946f
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             2015.03.24
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories          devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             BSD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         {@barracuda156 gmail.com:vital.had} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         ${name} is ECMA262 5.1 lexer and parser and engine project
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    {*}${description} written in C++/JS.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  8a5446eedf849aede8c7610fcdb39922f30805f6 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  f001266dd3a365e7ac3e7eb12fb77629177f58707d7e7e7a94a9de76d9c80b8c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    9268616
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.tarball_from archive
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          patch-lv5.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-do-not-fetch-tools.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# FIXME: building on aarch64 is fixed now, but binary still complains on launch:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/Constellation/iv/issues/107
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Also, ideally we would want to build against our boehmgc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# but as of now it fails with undefined symbols:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# GC_throw_bad_alloc() etc.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/Constellation/iv/pull/109
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append   patch-gc-arm64.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/Constellation/iv/pull/110
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append   patch-static-liblv5.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reinplace "s|__PREFIX__|${prefix}|" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${worksrcpath}/iv/lv5/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reinplace "s|__ARCH__|${configure.build_arch}|" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${worksrcpath}/iv/lv5/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.platform} eq "darwin" && ${os.major} < 14} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:git
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    git.cmd         ${prefix}/bin/git
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.cxx_standard 2011
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.blacklist-append {clang}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DJIT=OFF \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DLTO=ON
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.platform} eq "darwin" && ${os.major} > 21} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.cppflags-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -D_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/Constellation/iv/issues/104
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${configure.build_arch} in [list arm i386 ppc]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DM32=ON
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[string match *gcc* ${configure.compiler}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.ldflags-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -latomic
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platform powerpc {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-replace \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DLTO=ON -DLTO=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+universal_variant   no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    copy ${cmake.build_dir}/iv/lv5/lv5 ${destroot}${prefix}/bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    foreach f {iv/lv5/liblv5.a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                iv/lv5/third_party/gc/libgc-lib.a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                iv/lv5/third_party/gc/libgcmt-dll.dylib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                iv/lv5/third_party/gc/libgcmt-lib.a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                iv/lv5/third_party/netlib_dtoa/libnetlib_dtoa.a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                iv/lv5/third_party/v8_dtoa/libv8_dtoa.a} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        copy ${cmake.build_dir}/${f} ${destroot}${prefix}/lib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# FIXME: there is a failure in the second batch of tests on PowerPC:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/Constellation/iv/issues/106
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Note: use gdb-apple to debug, since native gdb is useless here due to:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://gcc-help.gcc.gnu.narkive.com/sI2gcsUK/what-does-dwarf-error-cannot-find-type-of-die-mean
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.run            yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.cmd            ${cmake.build_dir}/iv/lv5/third_party/gc/tests/gctest \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    && ${cmake.build_dir}/iv/test/iv_unit_tests \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    && ${cmake.build_dir}/iv/lv5/test/lv5_unit_tests
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.target
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/iv/files/patch-do-not-fetch-tools.diff b/devel/iv/files/patch-do-not-fetch-tools.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..4ead5e88c89
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/iv/files/patch-do-not-fetch-tools.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- CMakeLists.txt 2015-03-24 13:21:53.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ CMakeLists.txt 2023-12-21 17:19:07.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -167,4 +167,4 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ add_subdirectory(third_party/google-test)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ add_subdirectory(third_party/google-benchmark)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ add_subdirectory(iv)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-add_subdirectory(tools)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# add_subdirectory(tools)
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/iv/files/patch-gc-arm64.diff b/devel/iv/files/patch-gc-arm64.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..401129224cb
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/iv/files/patch-gc-arm64.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,193 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 2ffcdddf4a98c2d61a83e14d96a909ae99264fc9 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 4 Feb 2024 01:58:18 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] gc: backport basic arm64 support for Darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://github.com/ivmai/bdwgc/commit/d5d091accae6046d2a5dadb283e110b31f4684bd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://github.com/ivmai/bdwgc/commit/0a8d46700a9d633ab8167c7781f314742630d186
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://github.com/ivmai/bdwgc/commit/02954567894bc270ffe7cb075448b56a706c9381
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+See: https://github.com/Constellation/iv/issues/107
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+darwin_stop_world.c: arm64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ iv/lv5/third_party/gc/darwin_stop_world.c     | 48 ++++++++++++++++++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .../third_party/gc/include/private/gc_priv.h  | 20 ++++----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .../third_party/gc/include/private/gcconfig.h | 29 ++++++++++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ iv/lv5/third_party/gc/os_dep.c                |  5 ++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 4 files changed, 91 insertions(+), 11 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git iv/lv5/third_party/gc/darwin_stop_world.c iv/lv5/third_party/gc/darwin_stop_world.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 14aa1d36..551eb898 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- iv/lv5/third_party/gc/darwin_stop_world.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ iv/lv5/third_party/gc/darwin_stop_world.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -53,13 +53,19 @@ GC_INNER ptr_t GC_FindTopOfStack(unsigned long stack_start)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   StackFrame *frame;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# ifdef POWERPC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# if defined(POWERPC) || defined(AARCH64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (stack_start == 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#   ifdef POWERPC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #     if CPP_WORDSZ == 32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         __asm__ __volatile__ ("lwz %0,0(r1)" : "=r" (frame));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #     else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         __asm__ __volatile__ ("ld %0,0(r1)" : "=r" (frame));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #     endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#   elif defined(AARCH64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        volatile ptr_t sp_reg;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        __asm__ __volatile__ ("mov %0, x29\n" : "=r" (sp_reg));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        frame = (StackFrame *)sp_reg;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#   endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     } else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     GC_ASSERT(stack_start != 0); /* not implemented */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -248,6 +254,46 @@ STATIC ptr_t GC_stack_range_for(ptr_t *phi, thread_act_t thread, GC_thread p,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       /* GC_push_one(state.__pc); */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       GC_push_one(state.__cpsr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#   elif defined(AARCH64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      lo = (void *)state.__sp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#     ifndef DARWIN_DONT_PARSE_STACK
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        *phi = GC_FindTopOfStack(state.__sp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#     endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[0]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[1]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[2]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[3]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[4]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[5]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[6]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[7]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[8]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[9]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[10]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[11]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[12]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[13]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[14]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[15]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[16]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[17]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[18]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[19]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[20]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[21]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[22]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[23]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[24]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[25]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[26]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[27]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__x[28]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__fp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      GC_push_one(state.__lr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      /* GC_push_one(state.__sp); */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      /* GC_push_one(state.__pc); */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      /* GC_push_one(state.__cpsr); */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #   else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #     error FIXME for non-x86 || ppc || arm architectures
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #   endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git iv/lv5/third_party/gc/include/private/gc_priv.h iv/lv5/third_party/gc/include/private/gc_priv.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0ad92fc4..56fa0b71 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- iv/lv5/third_party/gc/include/private/gc_priv.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ iv/lv5/third_party/gc/include/private/gc_priv.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -587,16 +587,18 @@ GC_EXTERN GC_warn_proc GC_current_warn_proc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #     define GC_MACH_THREAD_STATE       x86_THREAD_STATE64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #     define GC_MACH_THREAD_STATE_COUNT x86_THREAD_STATE64_COUNT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #   endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#   if defined(ARM32)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#     define GC_THREAD_STATE_T                  arm_thread_state_t
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#     ifdef ARM_MACHINE_THREAD_STATE_COUNT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#       define GC_MACH_THREAD_STATE             ARM_MACHINE_THREAD_STATE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#       define GC_MACH_THREAD_STATE_COUNT       ARM_MACHINE_THREAD_STATE_COUNT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#     endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#   else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#     error define GC_THREAD_STATE_T
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# elif defined(ARM32)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#   define GC_THREAD_STATE_T            arm_thread_state_t
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#   ifdef ARM_MACHINE_THREAD_STATE_COUNT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#     define GC_MACH_THREAD_STATE       ARM_MACHINE_THREAD_STATE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#     define GC_MACH_THREAD_STATE_COUNT ARM_MACHINE_THREAD_STATE_COUNT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #   endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# elif defined(AARCH64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#   define GC_THREAD_STATE_T            arm_thread_state64_t
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#   define GC_MACH_THREAD_STATE         ARM_THREAD_STATE64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#   define GC_MACH_THREAD_STATE_COUNT   ARM_THREAD_STATE64_COUNT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#   error define GC_THREAD_STATE_T
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # ifndef GC_MACH_THREAD_STATE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #   define GC_MACH_THREAD_STATE         MACHINE_THREAD_STATE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git iv/lv5/third_party/gc/include/private/gcconfig.h iv/lv5/third_party/gc/include/private/gcconfig.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c753cc2b..0df3551d 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- iv/lv5/third_party/gc/include/private/gcconfig.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ iv/lv5/third_party/gc/include/private/gcconfig.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -97,7 +97,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # if defined(__aarch64__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #    define AARCH64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#    if !defined(LINUX)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#    if !defined(LINUX) && !defined(DARWIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #      define NOSYS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #      define mach_type_known
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #    endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -368,6 +368,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #    define ARM32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #    define mach_type_known
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #    define DARWIN_DONT_PARSE_STACK
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#   elif defined(__aarch64__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#    define AARCH64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#    define mach_type_known
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#    define DARWIN_DONT_PARSE_STACK
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #   endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # if defined(__rtems__) && (defined(i386) || defined(__i386__))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1998,6 +2002,29 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       extern char _end[];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #     define DATAEND ((ptr_t)(&_end))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #   endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#   ifdef DARWIN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      /* iOS */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#     define OS_TYPE "DARWIN"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#     ifndef GC_DONT_REGISTER_MAIN_STATIC_DATA
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#       define DYNAMIC_LOADING
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#     endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#     define DATASTART ((ptr_t) get_etext())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#     define DATAEND   ((ptr_t) get_end())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#     define STACKBOTTOM ((ptr_t) 0x16fdfffff)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#     ifndef USE_MMAP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#       define USE_MMAP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#     endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#     define USE_MMAP_ANON
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#     define MPROTECT_VDB
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#     include <unistd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#     define GETPAGESIZE() getpagesize()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      /* FIXME: There seems to be some issues with trylock hanging on   */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      /* darwin. This should be looked into some more.                  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#     define NO_PTHREAD_TRYLOCK
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#     ifndef NO_DYLD_BIND_FULLY_IMAGE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#       define NO_DYLD_BIND_FULLY_IMAGE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#     endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#   endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #   ifdef NOSYS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       /* __data_start is usually defined in the target linker script.   */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       extern int __data_start[];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git iv/lv5/third_party/gc/os_dep.c iv/lv5/third_party/gc/os_dep.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 08c501df..2a124781 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- iv/lv5/third_party/gc/os_dep.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ iv/lv5/third_party/gc/os_dep.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -4274,6 +4274,11 @@ STATIC kern_return_t GC_forward_exception(mach_port_t thread, mach_port_t task,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # define DARWIN_EXC_STATE_COUNT   ARM_EXCEPTION_STATE_COUNT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # define DARWIN_EXC_STATE_T       arm_exception_state_t
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # define DARWIN_EXC_STATE_DAR     THREAD_FLD(far)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(AARCH64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# define DARWIN_EXC_STATE         ARM_EXCEPTION_STATE64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# define DARWIN_EXC_STATE_COUNT   ARM_EXCEPTION_STATE64_COUNT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# define DARWIN_EXC_STATE_T       arm_exception_state64_t
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# define DARWIN_EXC_STATE_DAR     THREAD_FLD(far)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(POWERPC)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # if CPP_WORDSZ == 32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #   define DARWIN_EXC_STATE       PPC_EXCEPTION_STATE
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/iv/files/patch-lv5.diff b/devel/iv/files/patch-lv5.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..0286ec9da54
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/iv/files/patch-lv5.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,21 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- iv/lv5/CMakeLists.txt  2015-03-24 13:21:53.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ iv/lv5/CMakeLists.txt  2023-12-21 16:07:11.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3,7 +3,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # prelude
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ include(MergeStaticLibraries)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-set(CMAKE_OSX_ARCHITECTURES "x86_64")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++set(CMAKE_OSX_ARCHITECTURES "__ARCH__")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ function(build_gc)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     add_subdirectory(third_party/gc)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -26,8 +26,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     third_party/v8_dtoa
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     third_party/gc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-link_directories_if_exists(/usr/local/lib)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-link_directories_if_exists(/opt/local/lib)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++link_directories_if_exists(__PREFIX__/lib)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ add_definitions("-DGC_NOT_DLL")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/iv/files/patch-static-liblv5.diff b/devel/iv/files/patch-static-liblv5.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..652355e9037
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/iv/files/patch-static-liblv5.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,26 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 9cd99f330a94e4cd68eeee53525f13d9b7b9648a Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 4 Feb 2024 03:17:36 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 2/2] Fix static liblv5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ iv/lv5/CMakeLists.txt | 4 ++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 2 insertions(+), 2 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git iv/lv5/CMakeLists.txt iv/lv5/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index e4ba404b..3c0b3e4f 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- iv/lv5/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ iv/lv5/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -72,10 +72,10 @@ add_library(liblv5 STATIC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     radio/core.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set_target_properties(liblv5 PROPERTIES PREFIX "")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-mz_merge_static_libraries(liblv5 ALL gc-lib v8_dtoa netlib_dtoa)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# mz_merge_static_libraries(liblv5 ALL gc-lib v8_dtoa netlib_dtoa)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ add_dependencies(liblv5 gc-lib v8_dtoa netlib_dtoa)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-set(LV5_LIBRARIES liblv5 ${IV_LIBRARIES})
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++set(LV5_LIBRARIES liblv5 gc-lib v8_dtoa netlib_dtoa ${IV_LIBRARIES})
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # lv5 shell
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span></pre><pre style='margin:0'>

</pre>