From ddfcaec6aa49b2f1ecde1d98f6d8019b804bfca71ce137ff9339d28b84a0b38d Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Sat, 9 Sep 2023 15:56:47 +0000 Subject: [PATCH] Accepting request 1110009 from home:tiwai:branches:multimedia:libs - Upstream fix backport: 0002-global.h-move-__STRING-macro-outside-PIC-ifdef-block.patch - Upstream fix for PCM segfault regression (bsc#1215167): 0003-pcm-Fix-segfault-with-32bit-libs.patch OBS-URL: https://build.opensuse.org/request/show/1110009 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/alsa?expand=0&rev=317 --- ...STRING-macro-outside-PIC-ifdef-block.patch | 49 ++++++++ 0003-pcm-Fix-segfault-with-32bit-libs.patch | 113 ++++++++++++++++++ alsa.changes | 8 ++ alsa.spec | 4 + 4 files changed, 174 insertions(+) create mode 100644 0002-global.h-move-__STRING-macro-outside-PIC-ifdef-block.patch create mode 100644 0003-pcm-Fix-segfault-with-32bit-libs.patch diff --git a/0002-global.h-move-__STRING-macro-outside-PIC-ifdef-block.patch b/0002-global.h-move-__STRING-macro-outside-PIC-ifdef-block.patch new file mode 100644 index 0000000..63c078a --- /dev/null +++ b/0002-global.h-move-__STRING-macro-outside-PIC-ifdef-block.patch @@ -0,0 +1,49 @@ +From 10bd599970acc71c92f85eb08943eb8d3d702a9c Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 6 Sep 2023 15:16:44 +0200 +Subject: [PATCH] global.h: move __STRING() macro outside !PIC ifdef block + +It solves the musl libc compilation issue. + +control.c: In function 'snd_ctl_open_conf': +../../include/global.h:98:36: warning: implicit declaration of function '__STRING' [-Wimplicit-function-declaratio] + 98 | #define SND_DLSYM_VERSION(version) __STRING(version) + | ^~~~~~~~ + +Fixes: https://github.com/alsa-project/alsa-lib/issues/350 +Signed-off-by: Jaroslav Kysela +--- + include/global.h | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/include/global.h b/include/global.h +index dfe9bc2b54bf..3ecaeee898c5 100644 +--- a/include/global.h ++++ b/include/global.h +@@ -51,6 +51,11 @@ const char *snd_asoundlib_version(void); + #define ATTRIBUTE_UNUSED __attribute__ ((__unused__)) + #endif + ++#ifndef __STRING ++/** \brief Return 'x' argument as string */ ++#define __STRING(x) #x ++#endif ++ + #ifdef PIC /* dynamic build */ + + /** \hideinitializer \brief Helper macro for #SND_DLSYM_BUILD_VERSION. */ +@@ -71,11 +76,6 @@ struct snd_dlsym_link { + + extern struct snd_dlsym_link *snd_dlsym_start; + +-#ifndef __STRING +-/** \brief Return 'x' argument as string */ +-#define __STRING(x) #x +-#endif +- + /** \hideinitializer \brief Helper macro for #SND_DLSYM_BUILD_VERSION. */ + #define __SND_DLSYM_VERSION(prefix, name, version) _ ## prefix ## name ## version + /** +-- +2.35.3 + diff --git a/0003-pcm-Fix-segfault-with-32bit-libs.patch b/0003-pcm-Fix-segfault-with-32bit-libs.patch new file mode 100644 index 0000000..fc4c05e --- /dev/null +++ b/0003-pcm-Fix-segfault-with-32bit-libs.patch @@ -0,0 +1,113 @@ +From 0e3dfb9f705ca78be34cd70fd59d67c431e29cc7 Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Sat, 9 Sep 2023 17:42:03 +0200 +Subject: [PATCH] pcm: Fix segfault with 32bit libs + +The recent rearrangement of header inclusion order caused a regression +showing segfaults on 32bit Arm. The primary reason is the +inconsistent compile condition depending on the inclusion of config.h; +while most of other code include pcm_local.h (that implicitly includes +config.h) at first, pcm_direct.c doesn't do it, hence the access with +direct plugins crashes. + +For fixing it, we need to include config.h at the beginning. But, +it's better to include pcm_local.h for all relevant code for +consistency. The patch does it, and also it adds the guard in +pcm_local.h for double inclusions. + +Fixes: ad3a8b8b314e ("reshuffle included files to include config.h as first") +Link: https://github.com/alsa-project/alsa-lib/issues/352 +Signed-off-by: Takashi Iwai +--- + src/pcm/pcm_direct.c | 1 + + src/pcm/pcm_dmix.c | 2 +- + src/pcm/pcm_dshare.c | 1 + + src/pcm/pcm_dsnoop.c | 1 + + src/pcm/pcm_local.h | 5 +++++ + src/pcm/pcm_shm.c | 1 + + 6 files changed, 10 insertions(+), 1 deletion(-) + +diff --git a/src/pcm/pcm_direct.c b/src/pcm/pcm_direct.c +index 040fc1605388..e53e59238119 100644 +--- a/src/pcm/pcm_direct.c ++++ b/src/pcm/pcm_direct.c +@@ -19,6 +19,7 @@ + * + */ + ++#include "pcm_local.h" + #include + #include + #include +diff --git a/src/pcm/pcm_dmix.c b/src/pcm/pcm_dmix.c +index 7cd3c50841ae..55cae3e79a06 100644 +--- a/src/pcm/pcm_dmix.c ++++ b/src/pcm/pcm_dmix.c +@@ -26,7 +26,7 @@ + * + */ + +-#include "config.h" ++#include "pcm_local.h" + #include + #include + #include +diff --git a/src/pcm/pcm_dshare.c b/src/pcm/pcm_dshare.c +index 454b39a91429..c03290985457 100644 +--- a/src/pcm/pcm_dshare.c ++++ b/src/pcm/pcm_dshare.c +@@ -26,6 +26,7 @@ + * + */ + ++#include "pcm_local.h" + #include + #include + #include +diff --git a/src/pcm/pcm_dsnoop.c b/src/pcm/pcm_dsnoop.c +index d3ce300ce3b8..bf67c68a0dfa 100644 +--- a/src/pcm/pcm_dsnoop.c ++++ b/src/pcm/pcm_dsnoop.c +@@ -26,6 +26,7 @@ + * + */ + ++#include "pcm_local.h" + #include + #include + #include +diff --git a/src/pcm/pcm_local.h b/src/pcm/pcm_local.h +index 6a0e71e711ea..152c92c300e1 100644 +--- a/src/pcm/pcm_local.h ++++ b/src/pcm/pcm_local.h +@@ -20,6 +20,9 @@ + * + */ + ++#ifndef __PCM_LOCAL_H ++#define __PCM_LOCAL_H ++ + #include "config.h" + + #include +@@ -1223,3 +1226,5 @@ static inline void snd_pcm_unlock(snd_pcm_t *pcm) + #define snd_pcm_lock(pcm) do {} while (0) + #define snd_pcm_unlock(pcm) do {} while (0) + #endif /* THREAD_SAFE_API */ ++ ++#endif /* __PCM_LOCAL_H */ +diff --git a/src/pcm/pcm_shm.c b/src/pcm/pcm_shm.c +index f0bfd934d335..d9596547741c 100644 +--- a/src/pcm/pcm_shm.c ++++ b/src/pcm/pcm_shm.c +@@ -26,6 +26,7 @@ + * + */ + ++#include "pcm_local.h" + #include + #include + #include +-- +2.35.3 + diff --git a/alsa.changes b/alsa.changes index e60a70a..5dcee99 100644 --- a/alsa.changes +++ b/alsa.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Sat Sep 9 15:49:43 UTC 2023 - Takashi Iwai + +- Upstream fix backport: + 0002-global.h-move-__STRING-macro-outside-PIC-ifdef-block.patch +- Upstream fix for PCM segfault regression (bsc#1215167): + 0003-pcm-Fix-segfault-with-32bit-libs.patch + ------------------------------------------------------------------- Mon Sep 4 12:33:29 UTC 2023 - Takashi Iwai diff --git a/alsa.spec b/alsa.spec index 4d41ad9..c81a2ec 100644 --- a/alsa.spec +++ b/alsa.spec @@ -57,6 +57,8 @@ Source34: alsa-init.sh Source35: alsa.keyring # upstream fixes Patch1: 0001-control.h-Fix-ump-header-file-detection.patch +Patch2: 0002-global.h-move-__STRING-macro-outside-PIC-ifdef-block.patch +Patch3: 0003-pcm-Fix-segfault-with-32bit-libs.patch # rest suse fixes Patch101: alsa-lib-ignore-non-accessible-ALSA_CONFIG_PATH.patch BuildRequires: doxygen @@ -146,6 +148,8 @@ This package contains the library for ALSA topology support. %prep %setup -q -n alsa-lib-%{version} %patch1 -p1 +%patch2 -p1 +%patch3 -p1 %patch101 -p1 %build