From f260466243b3a87b11e6af3eb85b767a95f582f3 Mon Sep 17 00:00:00 2001 From: Vincent Fazio Date: Tue, 7 Feb 2023 11:03:03 -0600 Subject: [PATCH] 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 Signed-off-by: Thomas Petazzoni (cherry picked from commit bed21bb9b462bece7cd1b9741643aa553ced4d35) Signed-off-by: Peter Korsgaard --- ...0001-Detect-symver-attribute-support.patch | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 package/xz/0001-Detect-symver-attribute-support.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 +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 +Signed-off-by: Vincent Fazio +--- + 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 +