diff options
Diffstat (limited to 'poky/meta/recipes-multimedia/pulseaudio')
3 files changed, 50 insertions, 13 deletions
diff --git a/poky/meta/recipes-multimedia/pulseaudio/pulseaudio.inc b/poky/meta/recipes-multimedia/pulseaudio/pulseaudio.inc index c7f3e6702..4e32b2708 100644 --- a/poky/meta/recipes-multimedia/pulseaudio/pulseaudio.inc +++ b/poky/meta/recipes-multimedia/pulseaudio/pulseaudio.inc @@ -63,14 +63,6 @@ DEPENDS += "speexdsp libxml-parser-perl-native libcap" inherit autotools bash-completion pkgconfig useradd gettext perlnative systemd manpages gsettings -# When compiling for Thumb or Thumb2, frame pointers _must_ be disabled since the -# Thumb frame pointer in r7 clashes with pulseaudio's use of inline asm to make syscalls -# (where r7 is used for the syscall NR). In most cases, frame pointers will be -# disabled automatically due to the optimisation level, but append an explicit -# -fomit-frame-pointer to handle cases where optimisation is set to -O0 or frame -# pointers have been enabled by -fno-omit-frame-pointer earlier in CFLAGS, etc. -CFLAGS_append_arm = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}" - # *.desktop rules wont be generated during configure and build will fail # if using --disable-nls USE_NLS = "yes" diff --git a/poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-remap_neon-use-register-r12-instead-of-r7.patch b/poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-remap_neon-use-register-r12-instead-of-r7.patch new file mode 100644 index 000000000..aaa162f9b --- /dev/null +++ b/poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-remap_neon-use-register-r12-instead-of-r7.patch @@ -0,0 +1,48 @@ +From 4a1668f341f0228904105f77fe5871b9d59b2663 Mon Sep 17 00:00:00 2001 +From: Tanu Kaskinen <tanuk@iki.fi> +Date: Mon, 13 Jul 2020 12:42:14 +0300 +Subject: [PATCH] remap_neon: use register r12 instead of r7 + +When the Thumb instructions set is used and frame pointers are enabled +(-fno-omit-frame-pointer), r7 can't be used, because it's used for the +frame pointer. Trying to use r7 caused the compilation to fail. + +Thanks to Andre McCurdy for suggesting[1] this fix, all I had to do was to +test that it works. The code builds now, and cpu-remap-test also +succeeds. + +[1] https://lists.openembedded.org/g/openembedded-core/message/136786 + +Upstream-Status: Submitted [https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/324] + +Signed-off-by: Tanu Kaskinen <tanuk@iki.fi> +--- + src/pulsecore/remap_neon.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/src/pulsecore/remap_neon.c b/src/pulsecore/remap_neon.c +index ca3b95b48..6f71345f8 100644 +--- a/src/pulsecore/remap_neon.c ++++ b/src/pulsecore/remap_neon.c +@@ -52,11 +52,15 @@ static void remap_mono_to_stereo_float32ne_generic_arm(pa_remap_t *m, float *dst + __asm__ __volatile__ ( + "ldm %[src]!, {r4,r6} \n\t" + "mov r5, r4 \n\t" +- "mov r7, r6 \n\t" +- "stm %[dst]!, {r4-r7} \n\t" ++ ++ /* We use r12 instead of r7 here, because r7 is reserved for the ++ * frame pointer when using Thumb. */ ++ "mov r12, r6 \n\t" ++ ++ "stm %[dst]!, {r4-r6,r12} \n\t" + : [dst] "+r" (dst), [src] "+r" (src) /* output operands */ + : /* input operands */ +- : "memory", "r4", "r5", "r6", "r7" /* clobber list */ ++ : "memory", "r4", "r5", "r6", "r12" /* clobber list */ + ); + } + +-- +2.20.1 + diff --git a/poky/meta/recipes-multimedia/pulseaudio/pulseaudio_13.0.bb b/poky/meta/recipes-multimedia/pulseaudio/pulseaudio_13.0.bb index 601499b6d..53e9a2357 100644 --- a/poky/meta/recipes-multimedia/pulseaudio/pulseaudio_13.0.bb +++ b/poky/meta/recipes-multimedia/pulseaudio/pulseaudio_13.0.bb @@ -4,12 +4,9 @@ SRC_URI = "http://freedesktop.org/software/pulseaudio/releases/${BP}.tar.xz \ file://0001-client-conf-Add-allow-autospawn-for-root.patch \ file://0002-do-not-display-CLFAGS-to-improve-reproducibility-bui.patch \ file://0001-remap-arm-Adjust-inline-asm-constraints.patch \ + file://0001-remap_neon-use-register-r12-instead-of-r7.patch \ file://volatiles.04_pulse \ " SRC_URI[md5sum] = "e41d606f90254ed45c90520faf83d95c" SRC_URI[sha256sum] = "961b23ca1acfd28f2bc87414c27bb40e12436efcf2158d29721b1e89f3f28057" - -do_compile_prepend() { - mkdir -p ${S}/libltdl - cp ${STAGING_LIBDIR}/libltdl* ${S}/libltdl -} +UPSTREAM_CHECK_REGEX = "pulseaudio-(?P<pver>\d+(\.(?!99)\d+)+)\.tar" |