mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-09-09 16:01:54 -09:00
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:
committed by
Thomas Petazzoni
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
|
||||||
|
|
||||||
Reference in New Issue
Block a user