diff --git a/golang.spec b/golang.spec index 2dc1a89d53906f87c89fb1a65d41bcb99df6ff41..f51c5bc7f0561a51a42db93d809196cf25015dc1 100644 --- a/golang.spec +++ b/golang.spec @@ -1,4 +1,4 @@ -%define anolis_release .0.1 +%define anolis_release .0.2 %undefine _missing_build_ids_terminate_build %global bcond_with strict_fips @@ -30,20 +30,20 @@ # Define GOROOT macros %global goroot %{_prefix}/lib/%{name} %global gopath %{_datadir}/gocode -%global golang_arches x86_64 aarch64 ppc64le s390x +%global golang_arches x86_64 aarch64 ppc64le s390x loongarch64 %global golibdir %{_libdir}/%{name} # Golang build options. # Build golang using external/internal(close to cgo disabled) linking. -%ifarch x86_64 ppc64le %{arm} aarch64 s390x +%ifarch x86_64 ppc64le %{arm} aarch64 s390x loongarch64 %global external_linker 1 %else %global external_linker 0 %endif # Build golang with cgo enabled/disabled(later equals more or less to internal linking). -%ifarch x86_64 ppc64le %{arm} aarch64 s390x +%ifarch x86_64 ppc64le %{arm} aarch64 s390x loongarch64 %global cgo_enabled 1 %else %global cgo_enabled 0 @@ -57,7 +57,7 @@ %endif # Controls what ever we fail on failed tests -%ifarch x86_64 %{arm} ppc64le s390x +%ifarch x86_64 %{arm} ppc64le s390x loongarch64 %global fail_on_tests 1 %else %global fail_on_tests 0 @@ -91,6 +91,9 @@ %ifarch s390x %global gohostarch s390x %endif +%ifarch loongarch64 +%global gohostarch loong64 +%endif %global go_api 1.22 %global version 1.22.7 @@ -115,6 +118,10 @@ Source1: https://github.com/golang-fips/go/archive/refs/tags/go%{version}- # make possible to override default traceback level at build time by setting build tag rpm_crashtraceback Source2: fedora.go +Source3: loongarch64.tar.gz +Source4: loongarch64.patches +Source5: race_linux_loong64.syso + # The compiler is written in Go. Needs go(1.4+) compiler for build. # Actual Go based bootstrap compiler provided by above source. %if !%{golang_bootstrap} @@ -256,11 +263,21 @@ ln -s ../go-go%{version} go ./scripts/configure-crypto-tests.sh popd +## Apply loongarch64 patches +tar -xf %{SOURCE3} +for p in $(cat %{SOURCE4}); do + patch -p1 -s -i loongarch64/$p +done + +## Delete loongarch64 directory +rm -rf loongarch64 + %autopatch -p1 sed -i '1s/$/ (%{?rhel:Red Hat} %{version}-%{release})/' VERSION cp %{SOURCE2} ./src/runtime/ +cp %{SOURCE5} ./src/runtime/race %build set -xe @@ -524,6 +541,9 @@ cd .. %endif %changelog +* Tue Nov 12 2024 Meidan Li - 1.22.7-1.0.2 +- Add LoongArch64 support + * Wed Nov 06 2024 Chang Gao - 1.22.7-1.0.1 - disable DISABLE_BoringCertAlgs_TEST test diff --git a/loongarch64.patches b/loongarch64.patches new file mode 100644 index 0000000000000000000000000000000000000000..04e7eb4d7a4f4dfaac240062b63c741d31c25a1c --- /dev/null +++ b/loongarch64.patches @@ -0,0 +1,158 @@ +0001-ABI1.0-fix-runtime-defs_linux_loong64.patch +0002-ABI1.0-cmd-internal-obj-loong64-cmd-link-internal-sw.patch +0003-ABI1.0-fix-misc-cgo-test-sigaltstack-size-on-loong64.patch +0004-ABI1.0-fix-mabi-to-lp64-for-loong64.patch +0005-ABI1.0-fix-test-issue11656-for-loong64.patch +0006-ABI1.0-fixup-stack-growth-after-fork-in-runtime.sigf.patch +0007-ABI1.0-runtime-fix-the-vDSO-symbol-version-for-kerne.patch +0008-ABI1.0-fix-the-definition-of-members-in-the-PtraceRe.patch +0009-internal-abi-internal-buildcfg-always-enable-registe.patch +0010-all-delete-loong64-non-register-ABI-fallback-path.patch +0011-cmd-internal-cmd-link-unify-the-relocation-nameing-s.patch +0012-cmd-link-correct-the-dynamic-linker-path-of-linux-lo.patch +0013-cmd-internal-objabi-add-new-relocations-used-in-inte.patch +0014-cmd-link-internal-add-support-for-internal-linking-o.patch +0015-internal-platform-cmd-dist-enable-internal-linking-s.patch +0016-cmd-internal-obj-loong64-add-stmt-prologueEnd-to-DWA.patch +0017-cmd-internal-objabi-add-new-relocations-of-loong64.patch +0018-cmd-link-internal-loong64-process-new-relocations-on.patch +0019-cmd-internal-obj-loong64-remove-Class-C_LEXT-and-C_S.patch +0020-cmd-internal-obj-loong64-remove-repeated-optab-item.patch +0021-cmd-internal-obj-loong64-reclassify-three-register-o.patch +0022-cmd-internal-obj-loong64-remove-case-17-because-no-r.patch +0023-cmd-internal-obj-loong64-cmd-asm-remove-useless-inst.patch +0024-cmd-internal-obj-loong64-remove-unuseless-functions.patch +0025-cmd-internal-obj-loong64-fixed-operand-assignment-er.patch +0026-cmd-internal-obj-loong64-return-an-error-when-gettin.patch +0027-cmd-internal-obj-loong64-cmd-asm-remove-invalid-opta.patch +0028-cmd-internal-obj-loong64-optimize-instruction-implem.patch +0029-cmd-internal-obj-loong64-rename-Class-to-represent-t.patch +0030-cmd-internal-obj-loong64-adjust-the-order-of-class-n.patch +0031-cmd-internal-obj-loong64-add-new-floating-point-data.patch +0032-cmd-internal-obj-loong64-one-branch-class-is-enough.patch +0033-cmd-internal-obj-loong64-optimize-the-code-logic-of-.patch +0034-runtime-crash-stack-support-for-loong64.patch +0035-cmd-runtime-enable-race-detector-on-loong64.patch +0036-runtime-delete-on-register-ABI-fallback-path-for-rac.patch +0037-runtime-internal-atomic-add-loong64-operators-for-An.patch +0038-cmd-internal-obj-loong64-recheck-jump-offset-boundar.patch +0039-cmd-internal-obj-loong64-switch-Lookup-function-call.patch +0040-cmd-internal-obj-loong64-remove-unused-register-alia.patch +0041-cmd-cmd-vendor-pick-up-updates-for-golang.org-x-arch.patch +0042-cmd-internal-obj-loong64-move-C_NCLASS-to-be-last-cl.patch +0043-cmd-link-internal-loong64-correct-the-musl-dynamic-l.patch +0044-cmd-internal-obj-loong64-improve-the-definition-of-p.patch +0045-cmd-internal-obj-loong64-add-atomic-memory-access-in.patch +0046-cmd-compiler-internal-runtime-atomic-optimize-xchg-a.patch +0047-cmd-compiler-internal-runtime-atomic-optimize-xadd-a.patch +0048-cmd-compiler-internal-runtime-atomic-optimize-And-64.patch +0049-cmd-compile-internal-intrinsify-publicationBarrier-o.patch +0050-cmd-compiler-internal-runtime-atomic-Remove-implemen.patch +0051-cmd-compiler-set-LoweredAtomicExchange-32-64-to-asyn.patch +0052-cmd-compiler-implementation-of-optimizing-atomic.and.patch +0053-cmd-compile-internal-fix-the-dbar-mask-error-of-publ.patch +0054-cmd-link-internal-loong64-fix-internal-liner-impleme.patch +0055-cmd-compiler-internal-runtime-atomic-optimize-Store-.patch +0056-cmd-link-add-argument-for-function-isPLTCall.patch +0057-cmd-link-add-support-for-trampoline-insertation-on-l.patch +0058-cmd-compiler-internal-runtime-atomic-optimize-Load-6.patch +0059-cmd-compiler-internal-delete-duplicate-intrinsify-St.patch +0060-cmd-compiler-internal-restrict-the-register-allocati.patch +0061-cmd-internal-obj-loong64-add-CPUCFG-instructions-sup.patch +0062-internal-cpu-runtime-make-linux-loong64-HWCAP-data-a.patch +0063-cmd-compiler-runtime-internal-atomic-optimize-Cas-64.patch +0064-cmd-internal-obj-loong63-add-support-for-FRINT.D-COP.patch +0065-runtime-save-and-restore-register-fcsr0-in-async-pre.patch +0066-cmd-compile-math-make-math.Ceil-Floor-RoundToEven-Tr.patch +0067-Modify-the-register-type-of-the-second-source-operan.patch +0068-cmd-internal-obj-loong64-add-support-for-BITREVW-and.patch +0069-cmd-compile-make-math-bits.Reverse-intrinsics-on-loo.patch +0070-cmd-asm-add-support-for-loong64-CRC32-instructions.patch +0071-hash-crc32-optimize-the-loong64-crc32-implementation.patch +0072-runtime-use-ABIInternal-for-calls-to-sigtrampgo-on-l.patch +0073-cmd-internal-obj-loong64-add-FLDX-FSTX-LDX.STX-instr.patch +0074-cmd-internal-obj-loong64-add-back-instruction-WORD.patch +0075-internal-bytealg-optimize-IndexByte-and-IndexByteStr.patch +0076-internal-bytealg-optimize-memequal-and-memequal_varl.patch +0077-internal-bytealg-optimize-Index-and-IndexString-func.patch +0078-internal-bytealg-optimize-Count-and-CountString-func.patch +0079-cmd-compile-Modify-the-implementation-of-math.Ceil-F.patch +0080-cmd-internal-obj-loong64-fix-invalid-register-pair-f.patch +0081-cmd-internal-obj-loong64-add-testcase-TestPCALIGN.patch +0082-cmd-internal-obj-loong64-add-testcase-TestNoRet.patch +0083-cmd-compile-internal-ssa-support-testcases-about-deb.patch +0084-cmd-compile-internal-loopvar-support-testcases-about.patch +0085-runtime-support-debug-call-injection-and-its-test-on.patch +0086-internal-bytealg-adjust-the-format-of-assembly-files.patch +0087-cmd-internal-obj-loong64-correct-the-special-registe.patch +0088-cmd-link-internal-loong64-fix-musl-dynamic-linker-pa.patch +0089-cmd-internal-obj-loong64-add-doc.go.patch +0090-cmd-internal-obj-loong64-add-support-for-instruction.patch +0091-cmd-compile-intrinsics-for-math-bits.TrailingZeros-o.patch +0092-cmd-internal-obj-loong64-add-support-for-instruction.patch +0093-cmd-compile-intrinsics-for-math-bits.ReverseBytes-an.patch +0094-cmd-internal-obj-loong64-add-support-for-instruction.patch +0095-cmd-internal-obj-loong64-add-FCLASS.-S-D-instruction.patch +0096-cmd-internal-obj-loong64-add-support-for-instruction.patch +0097-cmd-internal-obj-loong64-add-support-for-instruction.patch +0098-cmd-internal-obj-loong64-add-support-for-instruction.patch +0099-src-math-implement-archFloor-archCeil-archTrunc-in-h.patch +0100-cmd-compile-intrinsics-for-math.min-max-and-implemen.patch +0101-runtime-optimize-the-function-memmove-on-loong64.patch +0102-runtime-optimize-the-function-memclrNoHeapPointers-o.patch +0103-src-internal-bytealg-optimize-the-function-Compare-o.patch +0104-cmd-compile-internal-ssa-Optimize-rules-Zero-and-Mov.patch +0105-crypto-sha256-implement-sha256block-in-hardware-on-l.patch +0106-crypto-sha512-implement-sha512block-in-hardware-on-l.patch +0107-crypto-md5-implement-md5block-in-hardware-on-loong64.patch +0108-cmd-internal-obj-loong64-add-new-operand-classes-for.patch +0109-crypto-internal-bigmod-provide-assembly-addMulVVW-fo.patch +0110-cmd-compiler-internal-atomic-operations-use-universa.patch +0111-cmd-compile-internal-ssa-optimize-if-control-flow-ru.patch +0112-math-big-optimize-addVV-function-for-loong64.patch +0113-math-big-optimize-addVW-function-for-loong64.patch +0114-math-big-optimize-subVV-function-for-loong64.patch +0115-math-big-optimize-subVW-function-for-loong64.patch +0116-math-big-optimize-shlVU-function-for-loong64.patch +0117-math-big-optimize-shrVU-function-for-loong64.patch +0118-math-big-optimize-mulAddVWW-function-for-loong64.patch +0119-math-big-optimize-addMulVVW-function-for-loong64.patch +0120-cmd-asm-internal-obj-loong64-add-support-for-F-N-M-A.patch +0121-cmd-compile-add-fused-multiply-add-sub-support-on-lo.patch +0122-cmd-compile-internal-ssa-optimize-store-zero-rules-o.patch +0123-cmd-compile-internal-ssa-optimize-ANDconst-rule.patch +0124-cmd-internal-obj-loong64-optimize-immediate-loading.patch +0125-cmd-compile-internal-optimize-condition-branch-imple.patch +0126-crypto-sha1-implement-sha1block-in-hardware-on-loong.patch +0127-Fix-bug-panic-big-over-2-63-1-math.Trunc-is-incorrec.patch +0128-cmd-cgo-internal-testsanitizers-skip-tsan8-on-loong6.patch +0129-cmd-link-internal-ld-add-testcase-TestLoong64Trampol.patch +0130-cmd-internal-obj-loong64-add-testcase-TestLargeCall-.patch +0131-cmd-compile-optimize-math.Float64-32-bits-and-math.F.patch +0132-cmd-compile-optimize-RotateLeft8-16-on-loong64.patch +0133-cmd-internal-obj-loong64-add-support-for-instruction.patch +0134-cmd-internal-obj-loong64-add-support-for-instruction.patch +0135-cmd-asm-adjust-the-operand-order-of-F-N-M-ADD-SUB-F-.patch +0136-cmd-objdump-add-testcase-for-loong64.patch +0137-cmd-vendor-golang.org-x-tools-latest.patch +0138-runtime-switch-cputics-and-switchTocrashStack0-on-lo.patch +0139-cmd-internal-obj-loong64-add-support-for-instruction.patch +0140-cmd-compiler-internal-runtime-atomic-optimize-Store-.patch +0141-cmd-internal-obj-loong64-add-support-for-instruction.patch +0142-cmd-internal-obj-optimize-the-function-stacksplit-on.patch +0143-cmd-internal-obj-loong64-mark-functions-with-small-s.patch +0144-cmd-compile-fold-MOV-nop-and-MOV-const-on-loong64.patch +0145-cmd-compile-add-loong64-specific-inlining-for-runtim.patch +0146-cmd-compile-add-patterns-for-bitfield-opcodes-on-loo.patch +0147-cmd-compile-fold-constant-shift-with-extension-on-lo.patch +0148-test-codegen-fix-the-matching-instructions-inside-pl.patch +0149-cmd-compile-optimize-loong64-with-register-indexed-l.patch +0150-cmd-compile-add-rules-to-optimize-go-codes-to-consta.patch +0151-cmd-compile-optimize-the-condition-for-the-rule-x-lc.patch +0152-cmd-compile-inline-constant-sized-memclrNoHeapPointe.patch +0153-cmd-internal-obj-loong64-add-V-XV-LD-V-XV-LDX-V-XV-S.patch +0154-cmd-internal-obj-loong64-add-V-XV-SEQ.-B-H-W-D-instr.patch +0155-cmd-internal-obj-loong64-add-support-of-VMOVQ-and-XV.patch +0156-cmd-internal-obj-loong64-add-V-XV-PCNT.-B-H-W-D-inst.patch +0157-cmd-compile-optimize-math-bits.OnesCount-16-32-64-im.patch +0158-runtime-improve-CALLFN-macro-for-loong64.patch diff --git a/loongarch64.tar.gz b/loongarch64.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..163a29987d74aea22e0af5706695e2d4b5f8de20 Binary files /dev/null and b/loongarch64.tar.gz differ diff --git a/race_linux_loong64.syso b/race_linux_loong64.syso new file mode 100644 index 0000000000000000000000000000000000000000..0b51b02dbfc4bc98a4688e864eb5c23500104c68 Binary files /dev/null and b/race_linux_loong64.syso differ