emscripten: various fixes (#7700)
* emscripten: update to 2.0.31 (deps) * emscripten: move depends to recommends * emscripten: move directory from lib to opt * emscripten: patch to fix x86 build error * emscripten: improve build script
This commit is contained in:
parent
69a7ab0e0c
commit
9b9b7a492a
|
@ -3,12 +3,11 @@ TERMUX_PKG_DESCRIPTION="Emscripten: An LLVM-to-WebAssembly Compiler"
|
||||||
TERMUX_PKG_LICENSE="MIT"
|
TERMUX_PKG_LICENSE="MIT"
|
||||||
TERMUX_PKG_MAINTAINER="@truboxl"
|
TERMUX_PKG_MAINTAINER="@truboxl"
|
||||||
TERMUX_PKG_VERSION=2.0.31
|
TERMUX_PKG_VERSION=2.0.31
|
||||||
TERMUX_PKG_REVISION=1
|
TERMUX_PKG_REVISION=2
|
||||||
TERMUX_PKG_SRCURL=https://github.com/emscripten-core/emscripten.git
|
TERMUX_PKG_SRCURL=https://github.com/emscripten-core/emscripten.git
|
||||||
TERMUX_PKG_GIT_BRANCH=$TERMUX_PKG_VERSION
|
TERMUX_PKG_GIT_BRANCH=$TERMUX_PKG_VERSION
|
||||||
TERMUX_PKG_DEPENDS="python, nodejs, debianutils"
|
|
||||||
TERMUX_PKG_PLATFORM_INDEPENDENT=true
|
TERMUX_PKG_PLATFORM_INDEPENDENT=true
|
||||||
TERMUX_PKG_RECOMMENDS="emscripten-llvm, emscripten-binaryen"
|
TERMUX_PKG_RECOMMENDS="emscripten-llvm, emscripten-binaryen, python, nodejs-lts | nodejs, debianutils"
|
||||||
TERMUX_PKG_BUILD_IN_SRC=true
|
TERMUX_PKG_BUILD_IN_SRC=true
|
||||||
TERMUX_PKG_HOSTBUILD=true
|
TERMUX_PKG_HOSTBUILD=true
|
||||||
TERMUX_PKG_NO_STATICSPLIT=true
|
TERMUX_PKG_NO_STATICSPLIT=true
|
||||||
|
@ -28,34 +27,35 @@ TERMUX_PKG_NO_STATICSPLIT=true
|
||||||
|
|
||||||
# https://github.com/emscripten-core/emscripten/issues/11362
|
# https://github.com/emscripten-core/emscripten/issues/11362
|
||||||
# can switch to stable LLVM to save space once above is fixed
|
# can switch to stable LLVM to save space once above is fixed
|
||||||
LLVM_COMMIT=9016b2a1cae244eb8f26826427eeb90eded0da20
|
LLVM_COMMIT=8fa2394bad433558f3083cee158043e2fb66d781
|
||||||
LLVM_TGZ_SHA256=174253005e14d2fe7ba412f71b4e13cfdcf7fdd3b471b3dc988283f9198bfc19
|
LLVM_TGZ_SHA256=5199e1e459a9b1308e145d775c540bac72d0a75b81a4558d08ffd7444412f8d1
|
||||||
|
|
||||||
# https://github.com/emscripten-core/emscripten/issues/12252
|
# https://github.com/emscripten-core/emscripten/issues/12252
|
||||||
# upstream says better bundle the right binaryen revision for now
|
# upstream says better bundle the right binaryen revision for now
|
||||||
BINARYEN_COMMIT=c2007eab91ed60ac4bc8a6a555e9dc3e76ef2242
|
BINARYEN_COMMIT=65bcde2c30e82047a892332b95b114bc86f89614
|
||||||
BINARYEN_TGZ_SHA256=f49e71078e7bdded666d81e715dd799ef6aaa65decd5bbff7f35551879d36799
|
BINARYEN_TGZ_SHA256=093bf206d34a7e239b4ae9dd9e9f393099622cebaa781d859b0f85e2305735d4
|
||||||
|
|
||||||
# https://github.com/emscripten-core/emsdk/blob/main/emsdk.py
|
# https://github.com/emscripten-core/emsdk/blob/main/emsdk.py
|
||||||
# https://chromium.googlesource.com/emscripten-releases/+/refs/heads/main/src/build.py
|
# https://chromium.googlesource.com/emscripten-releases/+/refs/heads/main/src/build.py
|
||||||
# https://github.com/llvm/llvm-project
|
# https://github.com/llvm/llvm-project
|
||||||
LLVM_BUILD_ARGS="
|
LLVM_BUILD_ARGS="
|
||||||
-DCMAKE_BUILD_TYPE=Release
|
-DCMAKE_BUILD_TYPE=MinSizeRel
|
||||||
-DCMAKE_CROSSCOMPILING=ON
|
-DCMAKE_CROSSCOMPILING=ON
|
||||||
-DCMAKE_INSTALL_PREFIX=$TERMUX_PREFIX/lib/emscripten-llvm
|
-DCMAKE_INSTALL_PREFIX=$TERMUX_PREFIX/opt/emscripten-llvm
|
||||||
|
|
||||||
-DDEFAULT_SYSROOT=$(dirname $TERMUX_PREFIX)
|
-DDEFAULT_SYSROOT=$(dirname $TERMUX_PREFIX)
|
||||||
-DGENERATOR_IS_MULTI_CONFIG=ON
|
-DGENERATOR_IS_MULTI_CONFIG=ON
|
||||||
-DLLVM_INCLUDE_EXAMPLES=OFF
|
-DLLVM_ENABLE_ASSERTIONS=ON
|
||||||
-DLLVM_INCLUDE_TESTS=OFF
|
|
||||||
-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON
|
|
||||||
-DLLVM_ENABLE_ASSERTIONS=OFF
|
|
||||||
-DLLVM_ENABLE_BINDINGS=OFF
|
-DLLVM_ENABLE_BINDINGS=OFF
|
||||||
-DLLVM_ENABLE_LIBEDIT=OFF
|
-DLLVM_ENABLE_LIBEDIT=OFF
|
||||||
-DLLVM_ENABLE_LIBPFM=OFF
|
-DLLVM_ENABLE_LIBPFM=OFF
|
||||||
-DLLVM_ENABLE_LIBXML2=OFF
|
-DLLVM_ENABLE_LIBXML2=OFF
|
||||||
-DLLVM_ENABLE_PROJECTS='clang;compiler-rt;libunwind;lld'
|
-DLLVM_ENABLE_PROJECTS=clang;compiler-rt;libunwind;lld
|
||||||
-DLLVM_ENABLE_TERMINFO=OFF
|
-DLLVM_ENABLE_TERMINFO=OFF
|
||||||
|
-DLLVM_INCLUDE_EXAMPLES=OFF
|
||||||
|
-DLLVM_INCLUDE_TESTS=OFF
|
||||||
|
-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON
|
||||||
|
-DLLVM_LINK_LLVM_DYLIB=ON
|
||||||
-DLLVM_TABLEGEN=$TERMUX_PKG_HOSTBUILD_DIR/bin/llvm-tblgen
|
-DLLVM_TABLEGEN=$TERMUX_PKG_HOSTBUILD_DIR/bin/llvm-tblgen
|
||||||
|
|
||||||
-DCLANG_ENABLE_ARCMT=OFF
|
-DCLANG_ENABLE_ARCMT=OFF
|
||||||
|
@ -75,8 +75,8 @@ LLVM_BUILD_ARGS="
|
||||||
|
|
||||||
# https://github.com/WebAssembly/binaryen/blob/main/CMakeLists.txt
|
# https://github.com/WebAssembly/binaryen/blob/main/CMakeLists.txt
|
||||||
BINARYEN_BUILD_ARGS="
|
BINARYEN_BUILD_ARGS="
|
||||||
-DCMAKE_BUILD_TYPE=Release
|
-DCMAKE_BUILD_TYPE=MinSizeRel
|
||||||
-DCMAKE_INSTALL_PREFIX=$TERMUX_PREFIX/lib/emscripten-binaryen
|
-DCMAKE_INSTALL_PREFIX=$TERMUX_PREFIX/opt/emscripten-binaryen
|
||||||
"
|
"
|
||||||
|
|
||||||
termux_step_post_get_source() {
|
termux_step_post_get_source() {
|
||||||
|
@ -90,6 +90,9 @@ termux_step_post_get_source() {
|
||||||
"$BINARYEN_TGZ_SHA256"
|
"$BINARYEN_TGZ_SHA256"
|
||||||
tar -xf "$TERMUX_PKG_CACHEDIR/llvm.tar.gz" -C "$TERMUX_PKG_CACHEDIR"
|
tar -xf "$TERMUX_PKG_CACHEDIR/llvm.tar.gz" -C "$TERMUX_PKG_CACHEDIR"
|
||||||
tar -xf "$TERMUX_PKG_CACHEDIR/binaryen.tar.gz" -C "$TERMUX_PKG_CACHEDIR"
|
tar -xf "$TERMUX_PKG_CACHEDIR/binaryen.tar.gz" -C "$TERMUX_PKG_CACHEDIR"
|
||||||
|
|
||||||
|
cd "$TERMUX_PKG_CACHEDIR/llvm-project-$LLVM_COMMIT"
|
||||||
|
git apply "$TERMUX_PKG_BUILDER_DIR/llvm-project.git-patch.txt"
|
||||||
}
|
}
|
||||||
|
|
||||||
termux_step_host_build() {
|
termux_step_host_build() {
|
||||||
|
@ -98,8 +101,8 @@ termux_step_host_build() {
|
||||||
|
|
||||||
cmake \
|
cmake \
|
||||||
-G Ninja \
|
-G Ninja \
|
||||||
-DLLVM_ENABLE_PROJECTS='clang' \
|
-S "$TERMUX_PKG_CACHEDIR/llvm-project-$LLVM_COMMIT/llvm" \
|
||||||
"$TERMUX_PKG_CACHEDIR/llvm-project-$LLVM_COMMIT/llvm"
|
-DLLVM_ENABLE_PROJECTS=clang
|
||||||
cmake \
|
cmake \
|
||||||
--build "$TERMUX_PKG_HOSTBUILD_DIR" \
|
--build "$TERMUX_PKG_HOSTBUILD_DIR" \
|
||||||
-j "$TERMUX_MAKE_PROCESSES" \
|
-j "$TERMUX_MAKE_PROCESSES" \
|
||||||
|
@ -129,9 +132,9 @@ termux_step_make() {
|
||||||
|
|
||||||
cmake \
|
cmake \
|
||||||
-G Ninja \
|
-G Ninja \
|
||||||
$LLVM_BUILD_ARGS \
|
|
||||||
-S "$TERMUX_PKG_CACHEDIR/llvm-project-$LLVM_COMMIT/llvm" \
|
-S "$TERMUX_PKG_CACHEDIR/llvm-project-$LLVM_COMMIT/llvm" \
|
||||||
-B "$TERMUX_PKG_CACHEDIR/build-llvm"
|
-B "$TERMUX_PKG_CACHEDIR/build-llvm" \
|
||||||
|
$LLVM_BUILD_ARGS
|
||||||
cmake \
|
cmake \
|
||||||
--build "$TERMUX_PKG_CACHEDIR/build-llvm" \
|
--build "$TERMUX_PKG_CACHEDIR/build-llvm" \
|
||||||
-j "$TERMUX_MAKE_PROCESSES" \
|
-j "$TERMUX_MAKE_PROCESSES" \
|
||||||
|
@ -139,9 +142,9 @@ termux_step_make() {
|
||||||
|
|
||||||
cmake \
|
cmake \
|
||||||
-G Ninja \
|
-G Ninja \
|
||||||
$BINARYEN_BUILD_ARGS \
|
|
||||||
-S "$TERMUX_PKG_CACHEDIR/binaryen-$BINARYEN_COMMIT" \
|
-S "$TERMUX_PKG_CACHEDIR/binaryen-$BINARYEN_COMMIT" \
|
||||||
-B "$TERMUX_PKG_CACHEDIR/build-binaryen"
|
-B "$TERMUX_PKG_CACHEDIR/build-binaryen" \
|
||||||
|
$BINARYEN_BUILD_ARGS
|
||||||
cmake \
|
cmake \
|
||||||
--build "$TERMUX_PKG_CACHEDIR/build-binaryen" \
|
--build "$TERMUX_PKG_CACHEDIR/build-binaryen" \
|
||||||
-j "$TERMUX_MAKE_PROCESSES" \
|
-j "$TERMUX_MAKE_PROCESSES" \
|
||||||
|
@ -150,64 +153,81 @@ termux_step_make() {
|
||||||
|
|
||||||
termux_step_make_install() {
|
termux_step_make_install() {
|
||||||
# skip using Makefile which does host npm install, tar archive and extract steps
|
# skip using Makefile which does host npm install, tar archive and extract steps
|
||||||
rm -fr "$TERMUX_PREFIX/lib/emscripten"
|
rm -fr "$TERMUX_PREFIX/opt/emscripten"
|
||||||
./tools/install.py "$TERMUX_PREFIX/lib/emscripten"
|
./tools/install.py "$TERMUX_PREFIX/opt/emscripten"
|
||||||
|
|
||||||
# first run generates .emscripten and exits immediately
|
# first run generates .emscripten and exits immediately
|
||||||
rm -f "$TERMUX_PKG_SRCDIR/.emscripten"
|
rm -f "$TERMUX_PKG_SRCDIR/.emscripten"
|
||||||
./emcc
|
./emcc
|
||||||
sed -i .emscripten -e "s|^EMSCRIPTEN_ROOT.*|EMSCRIPTEN_ROOT = '$TERMUX_PREFIX/lib/emscripten' # directory|"
|
sed -i .emscripten -e "s|^EMSCRIPTEN_ROOT.*|EMSCRIPTEN_ROOT = '$TERMUX_PREFIX/opt/emscripten' # directory|"
|
||||||
sed -i .emscripten -e "s|^LLVM_ROOT.*|LLVM_ROOT = '$TERMUX_PREFIX/lib/emscripten-llvm/bin' # directory|"
|
sed -i .emscripten -e "s|^LLVM_ROOT.*|LLVM_ROOT = '$TERMUX_PREFIX/opt/emscripten-llvm/bin' # directory|"
|
||||||
sed -i .emscripten -e "s|^BINARYEN_ROOT.*|BINARYEN_ROOT = '$TERMUX_PREFIX/lib/emscripten-binaryen' # directory|"
|
sed -i .emscripten -e "s|^BINARYEN_ROOT.*|BINARYEN_ROOT = '$TERMUX_PREFIX/opt/emscripten-binaryen' # directory|"
|
||||||
sed -i .emscripten -e "s|^NODE_JS.*|NODE_JS = '$TERMUX_PREFIX/bin/node' # executable|"
|
sed -i .emscripten -e "s|^NODE_JS.*|NODE_JS = '$TERMUX_PREFIX/bin/node' # executable|"
|
||||||
grep "$TERMUX_PREFIX" "$TERMUX_PKG_SRCDIR/.emscripten"
|
grep "$TERMUX_PREFIX" "$TERMUX_PKG_SRCDIR/.emscripten"
|
||||||
install -Dm644 "$TERMUX_PKG_SRCDIR/.emscripten" "$TERMUX_PREFIX/lib/emscripten/.emscripten"
|
install -Dm644 "$TERMUX_PKG_SRCDIR/.emscripten" "$TERMUX_PREFIX/opt/emscripten/.emscripten"
|
||||||
|
|
||||||
# https://github.com/emscripten-core/emscripten/issues/9098 (fixed in 2.0.17)
|
# https://github.com/emscripten-core/emscripten/issues/9098 (fixed in 2.0.17)
|
||||||
cat <<- EOF > "$TERMUX_PKG_TMPDIR/emscripten.sh"
|
cat <<- EOF > "$TERMUX_PKG_TMPDIR/emscripten.sh"
|
||||||
#!$TERMUX_PREFIX/bin/sh
|
#!$TERMUX_PREFIX/bin/sh
|
||||||
export PATH=\$PATH:$TERMUX_PREFIX/lib/emscripten
|
export PATH=\$PATH:$TERMUX_PREFIX/opt/emscripten
|
||||||
EOF
|
EOF
|
||||||
install -Dm644 "$TERMUX_PKG_TMPDIR/emscripten.sh" "$TERMUX_PREFIX/etc/profile.d/emscripten.sh"
|
install -Dm644 "$TERMUX_PKG_TMPDIR/emscripten.sh" "$TERMUX_PREFIX/etc/profile.d/emscripten.sh"
|
||||||
|
|
||||||
# remove unneeded files
|
# remove unneeded files
|
||||||
for tool in clang-{check,cl,cpp,extdef-mapping,format,func-mapping,import-test,offload-bundler,refactor,rename,scan-deps} \
|
for tool in clang-{check,cl,cpp,extdef-mapping,format,func-mapping,import-test,offload-bundler,refactor,rename,scan-deps} \
|
||||||
lld-link ld.lld ld64.lld llvm-lib ld64.lld.darwin{new,old}; do
|
lld-link ld.lld ld64.lld llvm-lib ld64.lld.darwin{new,old}; do
|
||||||
rm -f "$TERMUX_PREFIX/lib/emscripten-llvm/bin/$tool"
|
rm -f "$TERMUX_PREFIX/opt/emscripten-llvm/bin/$tool"
|
||||||
done
|
done
|
||||||
rm -f $TERMUX_PREFIX/lib/emscripten-llvm/lib/libclang.so*
|
rm -f $TERMUX_PREFIX/opt/emscripten-llvm/lib/libclang.so*
|
||||||
rm -fr "$TERMUX_PREFIX/lib/emscripten-llvm/share"
|
rm -fr "$TERMUX_PREFIX/opt/emscripten-llvm/share"
|
||||||
|
|
||||||
|
# termux_step_install_license also handles LICENSE file
|
||||||
|
rm -f "$TERMUX_PREFIX/opt/emscripten/LICENSE"
|
||||||
|
|
||||||
# add useful tools not installed by LLVM_INSTALL_TOOLCHAIN_ONLY=ON
|
# add useful tools not installed by LLVM_INSTALL_TOOLCHAIN_ONLY=ON
|
||||||
for tool in FileCheck llc llvm-{as,dis,link,mc,nm,objdump,readobj,size,dwarfdump,dwp} opt; do
|
for tool in FileCheck llc llvm-{as,dis,link,mc,nm,objdump,readobj,size,dwarfdump,dwp} opt; do
|
||||||
install -Dm755 "$TERMUX_PKG_CACHEDIR/build-llvm/bin/$tool" "$TERMUX_PREFIX/lib/emscripten-llvm/bin/$tool"
|
install -Dm755 "$TERMUX_PKG_CACHEDIR/build-llvm/bin/$tool" "$TERMUX_PREFIX/opt/emscripten-llvm/bin/$tool"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
termux_step_create_debscripts() {
|
termux_step_create_debscripts() {
|
||||||
cat <<- EOF > postinst
|
cat <<- EOF > postinst
|
||||||
#!$TERMUX_PREFIX/bin/sh
|
#!$TERMUX_PREFIX/bin/sh
|
||||||
echo 'Running "npm ci --no-optional --production" in $TERMUX_PREFIX/lib/emscripten ...'
|
if [ -n "\$(which npm)" ]; then
|
||||||
cd "$TERMUX_PREFIX/lib/emscripten"
|
echo 'Running "npm ci --no-optional --production" in $TERMUX_PREFIX/opt/emscripten ...'
|
||||||
|
cd "$TERMUX_PREFIX/opt/emscripten"
|
||||||
npm ci --no-optional --production
|
npm ci --no-optional --production
|
||||||
echo
|
else
|
||||||
echo 'Post-install notice:'
|
echo 'Warning: npm is not installed! Emscripten may not work properly without installing node modules!' >&2
|
||||||
echo 'If this is the first time installing Emscripten,'
|
fi
|
||||||
echo 'please start a new session to take effect.'
|
echo '
|
||||||
echo 'If you are upgrading, you may want to clear the'
|
====================
|
||||||
echo 'cache by running the command below to fix issues.'
|
Post-install notice:
|
||||||
echo '"emcc --clear-cache"'
|
If this is the first time installing Emscripten,
|
||||||
echo 'Optional: Run the command below in Emscripten'
|
please start a new session to take effect.
|
||||||
echo 'directory to install tests dependencies before'
|
If you are upgrading, you may want to clear the
|
||||||
echo 'running test suite.'
|
cache by running the command below to fix issues.
|
||||||
echo '"npm ci --no-optional"'
|
"emcc --clear-cache"
|
||||||
|
|
||||||
|
Optional: Run the command below in Emscripten
|
||||||
|
directory to install tests dependencies before
|
||||||
|
running test suite.
|
||||||
|
"npm ci --no-optional"'
|
||||||
|
if [ -d "$TERMUX_PREFIX/lib/emscripten" ]; then
|
||||||
|
echo '
|
||||||
|
Note: The old Emscripten path has been deprecated.
|
||||||
|
To delete, simply run the command below.
|
||||||
|
"rm -fr $TERMUX_PREFIX/lib/emscripten"'
|
||||||
|
fi
|
||||||
|
echo '
|
||||||
|
===================='
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat <<- EOF > postrm
|
cat <<- EOF > postrm
|
||||||
#!$TERMUX_PREFIX/bin/sh
|
#!$TERMUX_PREFIX/bin/sh
|
||||||
case "\$1" in
|
case "\$1" in
|
||||||
purge|remove)
|
purge|remove)
|
||||||
rm -fr "$TERMUX_PREFIX/lib/emscripten"
|
rm -fr "$TERMUX_PREFIX/opt/emscripten"
|
||||||
esac
|
esac
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
TERMUX_SUBPKG_DESCRIPTION="Emscripten-compatible Binaryen"
|
TERMUX_SUBPKG_DESCRIPTION="Emscripten-compatible Binaryen"
|
||||||
TERMUX_SUBPKG_PLATFORM_INDEPENDENT=false
|
TERMUX_SUBPKG_PLATFORM_INDEPENDENT=false
|
||||||
TERMUX_SUBPKG_INCLUDE="lib/emscripten-binaryen"
|
TERMUX_SUBPKG_INCLUDE="opt/emscripten-binaryen"
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
TERMUX_SUBPKG_DESCRIPTION="Emscripten-compatible LLVM"
|
TERMUX_SUBPKG_DESCRIPTION="Emscripten-compatible LLVM"
|
||||||
TERMUX_SUBPKG_PLATFORM_INDEPENDENT=false
|
TERMUX_SUBPKG_PLATFORM_INDEPENDENT=false
|
||||||
TERMUX_SUBPKG_INCLUDE="lib/emscripten-llvm"
|
TERMUX_SUBPKG_INCLUDE="opt/emscripten-llvm"
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
diff --git a/libunwind/CMakeLists.txt b/libunwind/CMakeLists.txt
|
||||||
|
index 16331d948b12..c99b3574e218 100644
|
||||||
|
--- a/libunwind/CMakeLists.txt
|
||||||
|
+++ b/libunwind/CMakeLists.txt
|
||||||
|
@@ -188,6 +188,10 @@ endif()
|
||||||
|
add_compile_flags_if_supported(-Werror=return-type)
|
||||||
|
|
||||||
|
if (LIBUNWIND_ENABLE_CET)
|
||||||
|
+ if (NOT "libunwind" IN_LIST LLVM_ENABLE_RUNTIMES
|
||||||
|
+ AND "clang" IN_LIST LLVM_ENABLE_PROJECTS)
|
||||||
|
+ include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../clang/lib/Headers")
|
||||||
|
+ endif()
|
||||||
|
add_compile_flags_if_supported(-fcf-protection=full)
|
||||||
|
add_compile_flags_if_supported(-mshstk)
|
||||||
|
if (NOT LIBUNWIND_SUPPORTS_FCF_PROTECTION_EQ_FULL_FLAG)
|
||||||
|
diff --git a/libunwind/src/assembly.h b/libunwind/src/assembly.h
|
||||||
|
index e38d32336929..aadb4bc6a083 100644
|
||||||
|
--- a/libunwind/src/assembly.h
|
||||||
|
+++ b/libunwind/src/assembly.h
|
||||||
|
@@ -15,7 +15,7 @@
|
||||||
|
#ifndef UNWIND_ASSEMBLY_H
|
||||||
|
#define UNWIND_ASSEMBLY_H
|
||||||
|
|
||||||
|
-#if (defined(__i386__) || defined(__x86_64__)) && defined(__linux__)
|
||||||
|
+#if (defined(__i386__) || defined(__x86_64__)) && defined(__linux__) && defined(_LIBUNWIND_USE_CET)
|
||||||
|
#include <cet.h>
|
||||||
|
#define _LIBUNWIND_CET_ENDBR _CET_ENDBR
|
||||||
|
#else
|
||||||
|
diff --git a/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp b/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp
|
||||||
|
index 02c11f7689fb..eb6a02ec9198 100644
|
||||||
|
--- a/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp
|
||||||
|
+++ b/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp
|
||||||
|
@@ -285,7 +285,7 @@ private:
|
||||||
|
uintptr_t SlabSize = 0;
|
||||||
|
uintptr_t CurrentSlabOffset = 0;
|
||||||
|
SectionIDMap *SecIDMap = nullptr;
|
||||||
|
-#if defined(__x86_64__) && defined(__ELF__)
|
||||||
|
+#if defined(__x86_64__) && defined(__ELF__) && !defined(__TERMUX__)
|
||||||
|
unsigned UsedTLSStorage = 0;
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
@@ -347,7 +347,7 @@ uint8_t *TrivialMemoryManager::allocateDataSection(uintptr_t Size,
|
||||||
|
|
||||||
|
// In case the execution needs TLS storage, we define a very small TLS memory
|
||||||
|
// area here that will be used in allocateTLSSection().
|
||||||
|
-#if defined(__x86_64__) && defined(__ELF__)
|
||||||
|
+#if defined(__x86_64__) && defined(__ELF__) && !defined(__TERMUX__)
|
||||||
|
extern "C" {
|
||||||
|
alignas(16) __attribute__((visibility("hidden"), tls_model("initial-exec"),
|
||||||
|
used)) thread_local char LLVMRTDyldTLSSpace[16];
|
||||||
|
@@ -358,7 +358,7 @@ TrivialMemoryManager::TLSSection
|
||||||
|
TrivialMemoryManager::allocateTLSSection(uintptr_t Size, unsigned Alignment,
|
||||||
|
unsigned SectionID,
|
||||||
|
StringRef SectionName) {
|
||||||
|
-#if defined(__x86_64__) && defined(__ELF__)
|
||||||
|
+#if defined(__x86_64__) && defined(__ELF__) && !defined(__TERMUX__)
|
||||||
|
if (Size + UsedTLSStorage > sizeof(LLVMRTDyldTLSSpace)) {
|
||||||
|
return {};
|
||||||
|
}
|
Loading…
Reference in New Issue