removed extra/js78

This commit is contained in:
Kevin Mihelich 2023-10-16 01:26:58 +00:00
parent 60fd93e0b0
commit b49b970bc5
6 changed files with 0 additions and 5239 deletions

View file

@ -1,103 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
Date: Tue, 17 Nov 2020 22:45:47 +0100
Subject: [PATCH] Fixes for LTO+PGO support
Cherry-picked from Firefox Nightly.
---
build/moz.configure/lto-pgo.configure | 7 +++++--
config/makefiles/rust.mk | 21 +++++++++++++++++----
2 files changed, 22 insertions(+), 6 deletions(-)
diff --git a/build/moz.configure/lto-pgo.configure b/build/moz.configure/lto-pgo.configure
index 366c6691f7d1..e5342a037ee9 100644
--- a/build/moz.configure/lto-pgo.configure
+++ b/build/moz.configure/lto-pgo.configure
@@ -229,7 +229,10 @@ def lto(value, c_compiler, ld64_known_good, target, instrumented_build):
# instruction sets.
else:
num_cores = multiprocessing.cpu_count()
- cflags.append("-flto")
+ if len(value) and value[0].lower() == 'full':
+ cflags.append("-flto")
+ else:
+ cflags.append("-flto=thin")
cflags.append("-flifetime-dse=1")
ldflags.append("-flto=%s" % num_cores)
@@ -258,6 +261,6 @@ set_config('MOZ_LTO', lto.enabled)
set_define('MOZ_LTO', lto.enabled)
set_config('MOZ_LTO_CFLAGS', lto.cflags)
set_config('MOZ_LTO_LDFLAGS', lto.ldflags)
-set_config('MOZ_LTO_RUST', lto.rust_lto)
+set_config('MOZ_LTO_RUST_CROSS', lto.rust_lto)
add_old_configure_assignment('MOZ_LTO_CFLAGS', lto.cflags)
add_old_configure_assignment('MOZ_LTO_LDFLAGS', lto.ldflags)
diff --git a/config/makefiles/rust.mk b/config/makefiles/rust.mk
index f4475054f897..f19dfbc72fad 100644
--- a/config/makefiles/rust.mk
+++ b/config/makefiles/rust.mk
@@ -59,17 +59,19 @@ cargo_rustc_flags = $(CARGO_RUSTCFLAGS)
ifndef DEVELOPER_OPTIONS
ifndef MOZ_DEBUG_RUST
# Enable link-time optimization for release builds, but not when linking
-# gkrust_gtest.
+# gkrust_gtest. And not when doing cross-language LTO.
+ifndef MOZ_LTO_RUST_CROSS
ifeq (,$(findstring gkrust_gtest,$(RUST_LIBRARY_FILE)))
cargo_rustc_flags += -Clto
endif
# Versions of rust >= 1.45 need -Cembed-bitcode=yes for all crates when
# using -Clto.
ifeq (,$(filter 1.38.% 1.39.% 1.40.% 1.41.% 1.42.% 1.43.% 1.44.%,$(RUSTC_VERSION)))
RUSTFLAGS += -Cembed-bitcode=yes
endif
endif
endif
+endif
ifdef CARGO_INCREMENTAL
export CARGO_INCREMENTAL
@@ -195,10 +197,19 @@ target_rust_ltoable := force-cargo-library-build
target_rust_nonltoable := force-cargo-test-run force-cargo-library-check $(foreach b,build check,force-cargo-program-$(b))
ifdef MOZ_PGO_RUST
-rust_pgo_flags := $(if $(MOZ_PROFILE_GENERATE),-C profile-generate=$(topobjdir)) $(if $(MOZ_PROFILE_USE),-C profile-use=$(PGO_PROFILE_PATH))
+ifdef MOZ_PROFILE_GENERATE
+rust_pgo_flags := -C profile-generate=$(topobjdir)
+# The C compiler may be passed extra llvm flags for PGO that we also want to pass to rust as well.
+# In PROFILE_GEN_CFLAGS, they look like "-mllvm foo", and we want "-C llvm-args=foo", so first turn
+# "-mllvm foo" into "-mllvm:foo" so that it becomes a unique argument, that we can then filter for,
+# excluding other flags, and then turn into the right string.
+rust_pgo_flags += $(patsubst -mllvm:%,-C llvm-args=%,$(filter -mllvm:%,$(subst -mllvm ,-mllvm:,$(PROFILE_GEN_CFLAGS))))
+else # MOZ_PROFILE_USE
+rust_pgo_flags := -C profile-use=$(PGO_PROFILE_PATH)
+endif
endif
-$(target_rust_ltoable): RUSTFLAGS:=$(rustflags_override) $(rustflags_sancov) $(RUSTFLAGS) $(if $(MOZ_LTO_RUST),-Clinker-plugin-lto) $(rust_pgo_flags)
+$(target_rust_ltoable): RUSTFLAGS:=$(rustflags_override) $(rustflags_sancov) $(RUSTFLAGS) $(if $(MOZ_LTO_RUST_CROSS),-Clinker-plugin-lto) $(rust_pgo_flags)
$(target_rust_nonltoable): RUSTFLAGS:=$(rustflags_override) $(rustflags_sancov) $(RUSTFLAGS)
TARGET_RECIPES := $(target_rust_ltoable) $(target_rust_nonltoable)
@@ -312,17 +323,19 @@ $(RUST_LIBRARY_FILE): force-cargo-library-build
# When we are building in --enable-release mode; we add an additional check to confirm
# that we are not importing any networking-related functions in rust code. This reduces
# the chance of proxy bypasses originating from rust code.
-# The check only works when rust code is built with -Clto.
+# The check only works when rust code is built with -Clto but without MOZ_LTO_RUST_CROSS.
# Sanitizers and sancov also fail because compiler-rt hooks network functions.
ifndef MOZ_PROFILE_GENERATE
ifeq ($(OS_ARCH), Linux)
ifeq (,$(rustflags_sancov)$(MOZ_ASAN)$(MOZ_TSAN)$(MOZ_UBSAN))
+ifndef MOZ_LTO_RUST_CROSS
ifneq (,$(filter -Clto,$(cargo_rustc_flags)))
$(call py_action,check_binary,--target --networking $@)
endif
endif
endif
endif
+endif
force-cargo-library-check:
$(call CARGO_CHECK) --lib $(cargo_target_flag) $(rust_features_flag)

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -1,147 +0,0 @@
# Maintainer: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
# - configure with --disable-lto, --disable-rust-simd
# - patch to fix build on ARM
pkgname=js78
pkgver=78.15.0
pkgrel=4
pkgdesc="JavaScript interpreter and libraries - Version 78"
arch=(x86_64)
url="https://spidermonkey.dev/"
license=(MPL)
depends=(gcc-libs readline zlib sh)
makedepends=(zip autoconf2.13 python-setuptools python-psutil rust llvm clang lld)
checkdepends=(mercurial git)
options=(!lto debug)
_relver=${pkgver}esr
source=(https://archive.mozilla.org/pub/firefox/releases/$_relver/source/firefox-$_relver.source.tar.xz{,.asc}
0001-Fixes-for-LTO-PGO-support.patch
0002-Fixes-for-Python-3.10.patch
0003-Fixes-for-Rust-1.56.patch
arm.patch)
sha256sums=('a4438d84d95171a6d4fea9c9f02c2edbf0475a9c614d968ebe2eedc25a672151'
'SKIP'
'606ef0a2faeffd52cd3d4564146a95eef2b0e58e610d3af8d203753ed27e5a00'
'b723277864c8afad1db007963f8e1090b352ced7bb312b2e7e2f11f448e8432d'
'cb5f1a0551f55c12562c1f384e9d0a011dd13993039e65aa69b5345a5951af9f'
'bc00516032330760444939c516a60c78f868631e1b37f075f0fe71a53737b966')
validpgpkeys=('14F26682D0916CDD81E37B6D61B7B526D98F0353') # Mozilla Software Releases <release@mozilla.com>
# Make sure the duplication between bin and lib is found
COMPRESSZST+=(--long)
prepare() {
mkdir mozbuild
cd firefox-$pkgver
patch -p1 -i ../arm.patch
# Post-78 fixes to fix LTO with LLVM 11
patch -Np1 -i ../0001-Fixes-for-LTO-PGO-support.patch
# Fix build with Python 3.10
patch -Np1 -i ../0002-Fixes-for-Python-3.10.patch
# Fix build with Rust 1.56
patch -Np1 -i ../0003-Fixes-for-Rust-1.56.patch
cat >../mozconfig <<END
ac_add_options --enable-application=js
mk_add_options MOZ_OBJDIR=${PWD@Q}/obj
ac_add_options --prefix=/usr
ac_add_options --enable-release
ac_add_options --enable-hardening
ac_add_options --disable-lto
ac_add_options --enable-optimize
ac_add_options --disable-rust-simd
ac_add_options --enable-linker=lld
ac_add_options --disable-debug
ac_add_options --disable-debug-symbols
ac_add_options --disable-jemalloc
ac_add_options --disable-strip
# System libraries
ac_add_options --with-system-zlib
ac_add_options --without-system-icu
# Features
ac_add_options --enable-readline
ac_add_options --enable-shared-js
ac_add_options --enable-tests
ac_add_options --with-intl-api
END
}
build() {
cd firefox-$pkgver
export MOZ_NOSPAM=1
export MOZBUILD_STATE_PATH="$srcdir/mozbuild"
# Do 3-tier PGO
echo "Building instrumented JS..."
cat >.mozconfig ../mozconfig - <<END
ac_add_options --enable-profile-generate=cross
END
./mach build
echo "Profiling instrumented JS..."
(
local js="$PWD/obj/dist/bin/js"
export LLVM_PROFILE_FILE="$PWD/js-%p-%m.profraw"
cd js/src/octane
"$js" run.js
cd ../../../third_party/webkit/PerformanceTests/ARES-6
"$js" cli.js
cd ../SunSpider/sunspider-0.9.1
"$js" sunspider-standalone-driver.js
)
llvm-profdata merge -o merged.profdata *.profraw
stat -c "Profile data found (%s bytes)" merged.profdata
test -s merged.profdata
echo "Removing instrumented JS..."
./mach clobber
echo "Building optimized JS..."
cat >.mozconfig ../mozconfig - <<END
ac_add_options --enable-profile-use=cross
ac_add_options --with-pgo-profile-path=${PWD@Q}/merged.profdata
END
./mach build
}
check() {
local jstests_extra_args=(
--format=none
--exclude-random
--wpt=disabled
) jittest_extra_args=(
--format=none
--timeout 300
) jittest_test_args=(
basic
)
cd firefox-$pkgver/obj
make -C js/src check-jstests check-jit-test \
JSTESTS_EXTRA_ARGS="${jstests_extra_args[*]}" \
JITTEST_EXTRA_ARGS="${jittest_extra_args[*]}" \
JITTEST_TEST_ARGS="${jittest_test_args[*]}"
}
package() {
cd firefox-$pkgver/obj
make DESTDIR="$pkgdir" install
rm "$pkgdir"/usr/lib/*.ajs
find "$pkgdir"/usr/{lib/pkgconfig,include} -type f -exec chmod -c a-x {} +
}
# vim:set sw=2 et:

View file

@ -1,15 +0,0 @@
https://bugzilla.mozilla.org/show_bug.cgi?id=1526653
diff --git a/js/src/wasm/WasmSignalHandlers.cpp.orig b/js/src/wasm/WasmSignalHandlers.cpp
index 636537f..0f3461a 100644
--- a/js/src/wasm/WasmSignalHandlers.cpp.orig
+++ b/js/src/wasm/WasmSignalHandlers.cpp
@@ -244,7 +244,7 @@ using mozilla::DebugOnly;
// emulation here.
#if defined(__linux__) && defined(__arm__)
-# define WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS
+//# define WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS
#endif
#ifdef WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS