package/xz: fix microblaze compiles

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>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2023.02.x
Vincent Fazio 2023-02-07 11:03:03 -06:00 committed by Thomas Petazzoni
parent a016b693f7
commit bed21bb9b4
1 changed files with 61 additions and 0 deletions

View File

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