diff mbox series

[1/1] package/xz: fix microblaze compiles

Message ID 20230207170303.2508780-1-vfazio@xes-inc.com
State Accepted
Headers show
Series [1/1] package/xz: fix microblaze compiles | expand

Commit Message

Vincent Fazio Feb. 7, 2023, 5:03 p.m. UTC
From: Vincent Fazio <vfazio@gmail.com>

Patch xz to check if __attribute__((symver ..)) is supported via a
compile check during configure.

Fixes:
  http://autobuild.buildroot.org/results/c0d/c0de72e5a34b379e0c516ad08984bb2c4b0abb5c//

Signed-off-by: Vincent Fazio <vfazio@gmail.com>
---
 ...0001-Detect-symver-attribute-support.patch | 61 +++++++++++++++++++
 1 file changed, 61 insertions(+)
 create mode 100644 package/xz/0001-Detect-symver-attribute-support.patch

Comments

Thomas Petazzoni Feb. 7, 2023, 10:06 p.m. UTC | #1
On Tue,  7 Feb 2023 11:03:03 -0600
Vincent Fazio <vfazio@xes-inc.com> wrote:

> From: Vincent Fazio <vfazio@gmail.com>
> 
> Patch xz to check if __attribute__((symver ..)) is supported via a
> compile check during configure.
> 
> Fixes:
>   http://autobuild.buildroot.org/results/c0d/c0de72e5a34b379e0c516ad08984bb2c4b0abb5c//
> 
> Signed-off-by: Vincent Fazio <vfazio@gmail.com>
> ---
>  ...0001-Detect-symver-attribute-support.patch | 61 +++++++++++++++++++
>  1 file changed, 61 insertions(+)
>  create mode 100644 package/xz/0001-Detect-symver-attribute-support.patch

Applied to master, thanks.

Thomas
Peter Korsgaard Feb. 28, 2023, 3:48 p.m. UTC | #2
>>>>> "Vincent" == Vincent Fazio <vfazio@xes-inc.com> writes:

 > From: Vincent Fazio <vfazio@gmail.com>
 > Patch xz to check if __attribute__((symver ..)) is supported via a
 > compile check during configure.

 > Fixes:
 >   http://autobuild.buildroot.org/results/c0d/c0de72e5a34b379e0c516ad08984bb2c4b0abb5c//

 > Signed-off-by: Vincent Fazio <vfazio@gmail.com>

Committed to 2022.11.x and 2022.02.x, thanks.
diff mbox series

Patch

diff --git a/package/xz/0001-Detect-symver-attribute-support.patch b/package/xz/0001-Detect-symver-attribute-support.patch
new file mode 100644
index 0000000000..9ec43ea7a0
--- /dev/null
+++ b/package/xz/0001-Detect-symver-attribute-support.patch
@@ -0,0 +1,61 @@ 
+From 231add523328ad9e021d8f2b02697b6a11719430 Mon Sep 17 00:00:00 2001
+From: Vincent Fazio <vfazio@gmail.com>
+Date: Tue, 7 Feb 2023 08:51:24 -0600
+Subject: [PATCH] Detect symver attribute support
+
+On non-ELF platforms, such as microblaze, builds will fail when trying
+to add symver information because  __attribute__((symver ..)) is not
+supported even though __has_attribute(__symver__) returns true.
+
+Support for symver needs to be detected via a compile test since
+__has_attribute can report false positives [0].
+
+Add a configure compile check for __attribute__((symver ..)) to ensure
+it is supported and define a variable to advertise support.
+
+[0] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101766#c1
+
+Upstream: https://github.com/tukaani-project/xz/pull/32
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+Signed-off-by: Vincent Fazio <vfazio@gmail.com>
+---
+ configure.ac                | 9 +++++++++
+ src/liblzma/common/common.h | 2 +-
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 5ad5589..08c623a 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -791,6 +791,15 @@ else
+ 				time with Libtool if neither --with-pic nor
+ 				--without-pic is used). This define must be
+ 				used together with liblzma_linux.map.])
++			OLD_CFLAGS="$CFLAGS"
++			CFLAGS="$CFLAGS -Werror"  # we need -Werror to make sure the attribute is not ignored
++			AC_COMPILE_IFELSE([AC_LANG_SOURCE(
++				[__attribute__ ((symver ("test@TEST"))) void foo(void) { }
++				])],
++				[AC_DEFINE([HAVE_SYMVER_ATTRIBUTE], [1],
++					[Define to 1 if GCC supports the symver attribute])],
++				[])
++			CFLAGS="$OLD_CFLAGS"
+ 			;;
+ 		*)
+ 			enable_symbol_versions=generic
+diff --git a/src/liblzma/common/common.h b/src/liblzma/common/common.h
+index 11fec52..1d2ef9c 100644
+--- a/src/liblzma/common/common.h
++++ b/src/liblzma/common/common.h
+@@ -76,7 +76,7 @@
+ // too (which doesn't support __symver__) so use it to detect if __symver__
+ // is available. This should be far more reliable than looking at compiler
+ // version macros as nowadays especially __GNUC__ is defined by many compilers.
+-#	if lzma_has_attribute(__symver__)
++#	if defined(HAVE_SYMVER_ATTRIBUTE) 
+ #		define LZMA_SYMVER_API(extnamever, type, intname) \
+ 			extern __attribute__((__symver__(extnamever))) \
+ 					LZMA_API(type) intname
+-- 
+2.25.1
+