From owner-svn-ports-all@freebsd.org Sun Nov 15 15:23:05 2020 Return-Path: Delivered-To: svn-ports-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E18662EBB43; Sun, 15 Nov 2020 15:23:05 +0000 (UTC) (envelope-from mikael@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4CYwvF65wLz4ThF; Sun, 15 Nov 2020 15:23:05 +0000 (UTC) (envelope-from mikael@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C48861E199; Sun, 15 Nov 2020 15:23:05 +0000 (UTC) (envelope-from mikael@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 0AFFN5Sj007687; Sun, 15 Nov 2020 15:23:05 GMT (envelope-from mikael@FreeBSD.org) Received: (from mikael@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 0AFFN5de007683; Sun, 15 Nov 2020 15:23:05 GMT (envelope-from mikael@FreeBSD.org) Message-Id: <202011151523.0AFFN5de007683@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mikael set sender to mikael@FreeBSD.org using -f From: Mikael Urankar Date: Sun, 15 Nov 2020 15:23:05 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r555229 - head/lang/ldc/files X-SVN-Group: ports-head X-SVN-Commit-Author: mikael X-SVN-Commit-Paths: head/lang/ldc/files X-SVN-Commit-Revision: 555229 X-SVN-Commit-Repository: ports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 Nov 2020 15:23:05 -0000 Author: mikael Date: Sun Nov 15 15:23:04 2020 New Revision: 555229 URL: https://svnweb.freebsd.org/changeset/ports/555229 Log: lang/ldc: fix build on aarch64 PR: 237427 Submitted by: Greg V Approved by: portmgr (tier-2 blanket) Added: head/lang/ldc/files/patch-ltsmaster_driver_targetmachine.cpp (contents, props changed) head/lang/ldc/files/patch-ltsmaster_runtime_druntime_src_core_sys_posix_setjmp.d (contents, props changed) head/lang/ldc/files/patch-ltsmaster_runtime_druntime_src_core_sys_posix_ucontext.d (contents, props changed) head/lang/ldc/files/patch-ltsmaster_runtime_phobos_std_internal_math_gammafunction.d (contents, props changed) Added: head/lang/ldc/files/patch-ltsmaster_driver_targetmachine.cpp ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lang/ldc/files/patch-ltsmaster_driver_targetmachine.cpp Sun Nov 15 15:23:04 2020 (r555229) @@ -0,0 +1,27 @@ +--- /usr/ports/lang/ldc/work/ldc-1.23.0/ltsmaster/driver/targetmachine.cpp ++++ /usr/ports/lang/ldc.last/work/ldc-1.23.0/ltsmaster/driver/targetmachine.cpp +@@ -587,6 +587,23 @@ + break; + } + ++ // Taken from clang's lib/Driver/ToolChains/Gnu.cpp ++ if (triple.getArch() == llvm::Triple::aarch64 || ++ triple.getArch() == llvm::Triple::aarch64_be || ++ (triple.getOS() == llvm::Triple::FreeBSD && ++ triple.getOSMajorVersion() >= 12) || ++ triple.getOS() == llvm::Triple::NaCl || ++ (triple.getVendor() == llvm::Triple::MipsTechnologies && ++ !triple.hasEnvironment()) || ++ triple.getOS() == llvm::Triple::Solaris ++#if LDC_LLVM_VER >= 400 ++ || triple.getArch() == llvm::Triple::riscv32 ++ || triple.getArch() == llvm::Triple::riscv64 ++#endif ++ ) { ++ targetOptions.UseInitArray = true; ++ } ++ + // Right now, we only support linker-level dead code elimination on Linux + // using the GNU toolchain (based on ld's --gc-sections flag). The Apple ld + // on OS X supports a similar flag (-dead_strip) that doesn't require + Added: head/lang/ldc/files/patch-ltsmaster_runtime_druntime_src_core_sys_posix_setjmp.d ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lang/ldc/files/patch-ltsmaster_runtime_druntime_src_core_sys_posix_setjmp.d Sun Nov 15 15:23:04 2020 (r555229) @@ -0,0 +1,27 @@ +--- ltsmaster/runtime/druntime/src/core/sys/posix/setjmp.d.orig 2020-11-14 19:34:19 UTC ++++ ltsmaster/runtime/druntime/src/core/sys/posix/setjmp.d +@@ -163,6 +163,12 @@ else version( FreeBSD ) + enum _JBLEN = 5; + struct _jmp_buf { c_long[_JBLEN + 1] _jb; } + } ++ else version( AArch64 ) ++ { ++ enum _JBLEN = 31; ++ // __int128_t ++ struct _jmp_buf { long[2][_JBLEN + 1] _jb; }; ++ } + else + static assert(0); + alias _jmp_buf[1] jmp_buf; +@@ -250,6 +256,11 @@ else version( FreeBSD ) + enum _JB_SIGFLAG = 5; + struct _sigjmp_buf { c_long[_JBLEN + 1] _sjb; } + } ++ else version( AArch64 ) ++ { ++ // __int128_t ++ struct _sigjmp_buf { long[2][_JBLEN + 1] _jb; }; ++ } + else + static assert(0); + alias _sigjmp_buf[1] sigjmp_buf; Added: head/lang/ldc/files/patch-ltsmaster_runtime_druntime_src_core_sys_posix_ucontext.d ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lang/ldc/files/patch-ltsmaster_runtime_druntime_src_core_sys_posix_ucontext.d Sun Nov 15 15:23:04 2020 (r555229) @@ -0,0 +1,41 @@ +--- ltsmaster/runtime/druntime/src/core/sys/posix/ucontext.d.orig 2020-11-14 19:35:48 UTC ++++ ltsmaster/runtime/druntime/src/core/sys/posix/ucontext.d +@@ -686,6 +686,38 @@ else version( FreeBSD ) + int[6] mc_spare2; + } + } ++ else version( AArch64 ) ++ { ++ alias __register_t = long; ++ ++ struct gpregs ++ { ++ __register_t[30] gp_x; ++ __register_t gp_lr; ++ __register_t gp_sp; ++ __register_t gp_elr; ++ uint gp_spsr; ++ int gp_pad; ++ } ++ ++ struct fpregs ++ { ++ ulong[2][32] fp_q; // __uint128_t ++ uint fp_sr; ++ uint fp_cr; ++ int fp_flags; ++ int fp_pad; ++ } ++ ++ struct mcontext_t ++ { ++ gpregs mc_gpregs; ++ fpregs mc_fpregs; ++ int mc_flags; ++ int mc_pad; ++ ulong[8] mc_spare; ++ } ++ } + + // + enum UCF_SWAPPED = 0x00000001; Added: head/lang/ldc/files/patch-ltsmaster_runtime_phobos_std_internal_math_gammafunction.d ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lang/ldc/files/patch-ltsmaster_runtime_phobos_std_internal_math_gammafunction.d Sun Nov 15 15:23:04 2020 (r555229) @@ -0,0 +1,22 @@ +https://github.com/ldc-developers/phobos/commit/65b103fc08c5a58f3b0c2b56ac8650ca8e678109.patch + +From 65b103fc08c5a58f3b0c2b56ac8650ca8e678109 Mon Sep 17 00:00:00 2001 +From: Iain Buclaw +Date: Sat, 23 May 2015 14:05:03 +0200 +Subject: [PATCH] Relax compile-time assertion in gammafunction to runtime + +--- ltsmaster/runtime/phobos/std/internal/math/gammafunction.d.orig 2020-11-14 19:44:53 UTC ++++ ltsmaster/runtime/phobos/std/internal/math/gammafunction.d +@@ -1653,8 +1653,10 @@ unittest { + real logmdigammaInverse(real y) + { + import std.numeric: findRoot; +- enum maxY = logmdigamma(real.min_normal); +- static assert(maxY > 0 && maxY <= real.max); ++ // FIXME: should be returned back to enum. ++ // Fix requires CTFEable `log` on non-x86 targets (check both LDC and GDC). ++ immutable maxY = logmdigamma(real.min_normal); ++ assert(maxY > 0 && maxY <= real.max); + + if (y >= maxY) + {