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>
This commit is contained in:
parent
a016b693f7
commit
bed21bb9b4
61
package/xz/0001-Detect-symver-attribute-support.patch
Normal file
61
package/xz/0001-Detect-symver-attribute-support.patch
Normal 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
|
||||
|
Loading…
Reference in New Issue
Block a user