From b4bb8734fbbf8853ab766147c73819bd9ae8cdad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nils=20Petter=20Sk=C3=A5lerud?= Date: Wed, 14 Jan 2026 18:13:06 +0100 Subject: [PATCH] Android, FFmpeg: Explicitly set page-size for patchelf Android arm64 and x86_64 builds now require 16KB page size alignment in native binaries, this includes FFmpeg. When running patchelf on the binaries, it will implicitly re-align the affected sections to 4KB page size. This patch solves this by using the --page-size flag for patchelf, only for the builds that require it. Pick-to: 6.10 6.8 Fixes: QTBUG-142332 Change-Id: Iba88bf702fd075d2b4432d9cde94f779b14de52f Reviewed-by: Assam Boudjelthia (cherry picked from commit b9c677baadd00e7b657896bba741e22ec8f91b40) Reviewed-by: Qt Cherry-pick Bot --- .../provisioning/common/shared/fix_ffmpeg_dependencies.sh | 8 +++++++- coin/provisioning/common/unix/install-ffmpeg-android.sh | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/coin/provisioning/common/shared/fix_ffmpeg_dependencies.sh b/coin/provisioning/common/shared/fix_ffmpeg_dependencies.sh index e7c8d8dd..3701794a 100755 --- a/coin/provisioning/common/shared/fix_ffmpeg_dependencies.sh +++ b/coin/provisioning/common/shared/fix_ffmpeg_dependencies.sh @@ -7,6 +7,7 @@ set -euox pipefail lib_dir="$1/lib" additional_suffix="${2:-}" set_rpath="${3:-yes}" +page_size="${4:-}" # readelf and patchelf are prerequisite tools for this script. Check # that they are available. @@ -81,7 +82,12 @@ for lib_name in "${ffmpeg_libs[@]}"; do stub_name="${stub_name%%.*}${additional_suffix}.${stub_name#*.}" # Add additional_suffix fi - patchelf --replace-needed "${BASH_REMATCH[1]}" "${stub_name}" "$lib_path" + additional_command_args="" + if [ -n "$page_size" ]; then + additional_command_args+="--page-size ${page_size}" + fi + + patchelf ${additional_command_args} --replace-needed "${BASH_REMATCH[1]}" "${stub_name}" "$lib_path" fi done <<< "$(read_needed_deps)" diff --git a/coin/provisioning/common/unix/install-ffmpeg-android.sh b/coin/provisioning/common/unix/install-ffmpeg-android.sh index 94f6d19e..3dcf8e69 100755 --- a/coin/provisioning/common/unix/install-ffmpeg-android.sh +++ b/coin/provisioning/common/unix/install-ffmpeg-android.sh @@ -115,7 +115,13 @@ build_ffmpeg_android() { if [[ "$build_type" == "shared" ]]; then local fix_dependencies="${BASH_SOURCE%/*}/../shared/fix_ffmpeg_dependencies.sh" - sudo "${fix_dependencies}" "${target_dir}" "${libs_prefix}" "no" + + local page_size_arg="" + if [ $page_size == "use_16kb_page_size" ]; then + page_size_arg="16384" + fi + + sudo "${fix_dependencies}" "${target_dir}" "${libs_prefix}" "no" "$page_size_arg" fi }