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 <assam.boudjelthia@qt.io>
(cherry picked from commit b9c677baad)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Nils Petter Skålerud
2026-01-14 18:13:06 +01:00
committed by Qt Cherry-pick Bot
parent a757f93331
commit b4bb8734fb
2 changed files with 14 additions and 2 deletions

View File

@@ -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)"

View File

@@ -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
}