From dd225aba266ce126f82d3979dc87b77d59cac564 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20Elio=20Petten=C3=B2?= Date: Sun, 6 Dec 2015 11:04:07 +0000 Subject: [PATCH] build: disable non-PIC assembly when building for Android/x86 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This disables MMX/MMXEXT code for ffmpeg/postproc, and all assembly for mpg123 and libass, if building for Android on x86 (32-bit). It has performance implications but it avoids all TEXTRELs in the output, which makes it possible to use W^X hardening techniques. The code can probably be ported to be PIC-compatible in the future so that these can be re-enabled, but even Gentoo Linux has no better solutions for this at the moment. Signed-off-by: Diego Elio Pettenò Signed-off-by: Jean-Baptiste Kempf --- contrib/src/ass/rules.mak | 7 +++++++ contrib/src/ffmpeg/rules.mak | 6 ++++++ contrib/src/mpg123/rules.mak | 10 +++++++++- contrib/src/postproc/rules.mak | 6 ++++++ 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/contrib/src/ass/rules.mak b/contrib/src/ass/rules.mak index a9c2603b95..8793e42555 100644 --- a/contrib/src/ass/rules.mak +++ b/contrib/src/ass/rules.mak @@ -10,6 +10,9 @@ endif ifdef HAVE_ANDROID WITH_FONTCONFIG = 0 WITH_HARFBUZZ = 0 +ifeq ($(ANDROID_ABI), x86) +WITH_ASS_ASM = 0 +endif else ifdef HAVE_TIZEN WITH_FONTCONFIG = 0 @@ -59,6 +62,10 @@ else ASS_CONF += --disable-harfbuzz endif +ifeq ($(WITH_ASS_ASM), 0) +ASS_CONF += --disable-asm +endif + ifdef WITH_OPTIMIZATION ASS_CFLAGS += -O3 else diff --git a/contrib/src/ffmpeg/rules.mak b/contrib/src/ffmpeg/rules.mak index 032d66ad31..0a7ca776bf 100644 --- a/contrib/src/ffmpeg/rules.mak +++ b/contrib/src/ffmpeg/rules.mak @@ -138,6 +138,12 @@ FFMPEGCONF += --target-os=linux --enable-pic endif +ifdef HAVE_ANDROID +ifeq ($(ANDROID_ABI), x86) +FFMPEGCONF += --disable-mmx --disable-mmxext +endif +endif + # Windows ifdef HAVE_WIN32 ifndef HAVE_MINGW_W64 diff --git a/contrib/src/mpg123/rules.mak b/contrib/src/mpg123/rules.mak index 1f90f79f2e..4ff3322e92 100644 --- a/contrib/src/mpg123/rules.mak +++ b/contrib/src/mpg123/rules.mak @@ -7,6 +7,14 @@ ifeq ($(call need_pkg,"mpg123"),) PKGS_FOUND += mpg123 endif +MPG123CONF = $(HOSTCONF) + +ifdef HAVE_ANDROID +ifeq ($(ANDROID_ABI), x86) +MPG123CONF += --with-cpu=generic_fpu +endif +endif + $(TARBALLS)/mpg123-$(MPG123_VERSION).tar.bz2: $(call download,$(MPG123_URL)) @@ -22,6 +30,6 @@ endif .mpg123: mpg123 $(RECONF) - cd $< && $(HOSTVARS) ./configure $(HOSTCONF) + cd $< && $(HOSTVARS) ./configure $(MPG123CONF) cd $< && $(MAKE) install touch $@ diff --git a/contrib/src/postproc/rules.mak b/contrib/src/postproc/rules.mak index a132e57abe..125af488f3 100644 --- a/contrib/src/postproc/rules.mak +++ b/contrib/src/postproc/rules.mak @@ -73,6 +73,12 @@ ifdef HAVE_LINUX POSTPROCCONF += --target-os=linux --enable-pic endif +ifdef HAVE_ANDROID +ifeq ($(ANDROID_ABI), x86) +POSTPROCCONF += --disable-mmx --disable-mmxext +endif +endif + # Windows ifdef HAVE_WIN32 POSTPROCCONF += --target-os=mingw32 -- GitLab