Browse Source

package/libabseil-cpp: fix uclibc-ng build

Fix the following build failure with uclibc-ng and grpc raised on arm
and ppc:

/home/buildroot/autobuild/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/10.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: /home/buildroot/autobuild/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libabsl_random_internal_randen_hwaes.so.2111.0.0: undefined reference to `getauxval'

Strangely enough it seems there is only one autobuilder failure despite
the fact that libabseil-cpp is unconditionally using getauxval since its
addition in commit 93568440eda120b12bcbfe267af8f0182484c3b6:
https://github.com/abseil/abseil-cpp/blob/20200225/absl/random/internal/randen_detect.cc

Perhaps this build failure is an unexpected side effect of commit
8251d8c2559b25f11684776fc343059cf100657d

Fixes:
 - http://autobuild.buildroot.org/results/775f3ca3dedebff29e212b29dfa896b7613b7a02

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Fabrice Fontaine 3 years ago
parent
commit
1a3de362ae
1 changed files with 62 additions and 0 deletions
  1. 62 0
      package/libabseil-cpp/0002-fix-build-with-uclibc-ng.patch

+ 62 - 0
package/libabseil-cpp/0002-fix-build-with-uclibc-ng.patch

@@ -0,0 +1,62 @@
+From b9ad9bbfed92199a1a58504306d026cd2597539e Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Date: Wed, 30 Mar 2022 21:56:20 +0200
+Subject: [PATCH] Fix build with uclibc-ng (#1145)
+
+uclibc-ng doesn't provide getauxval which results in the following build
+failure on arm or ppc with any user of abseil-cpp such as grpc:
+
+/home/buildroot/autobuild/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/10.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: /home/buildroot/autobuild/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libabsl_random_internal_randen_hwaes.so.2111.0.0: undefined reference to `getauxval'
+
+To fix this build failure, check that __UCLIBC__ is not defined before
+using getauxval (as Babel is not able to check function availability)
+
+Fixes:
+ - http://autobuild.buildroot.org/results/775f3ca3dedebff29e212b29dfa896b7613b7a02
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+[Retrieved from:
+https://github.com/abseil/abseil-cpp/commit/b9ad9bbfed92199a1a58504306d026cd2597539e]
+---
+ absl/debugging/internal/vdso_support.cc | 2 +-
+ absl/random/internal/randen_detect.cc   | 7 ++++++-
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/absl/debugging/internal/vdso_support.cc b/absl/debugging/internal/vdso_support.cc
+index c655cf452..e63ac4a3b 100644
+--- a/absl/debugging/internal/vdso_support.cc
++++ b/absl/debugging/internal/vdso_support.cc
+@@ -33,7 +33,7 @@
+ #endif
+ #include <unistd.h>
+ 
+-#if defined(__GLIBC__) && \
++#if !defined(__UCLIBC__) && defined(__GLIBC__) && \
+     (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 16))
+ #define ABSL_HAVE_GETAUXVAL
+ #endif
+diff --git a/absl/random/internal/randen_detect.cc b/absl/random/internal/randen_detect.cc
+index 9bb58fc68..6dababa35 100644
+--- a/absl/random/internal/randen_detect.cc
++++ b/absl/random/internal/randen_detect.cc
+@@ -24,6 +24,11 @@
+ 
+ #include "absl/random/internal/platform.h"
+ 
++#if !defined(__UCLIBC__) && defined(__GLIBC__) && \
++    (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 16))
++#define ABSL_HAVE_GETAUXVAL
++#endif
++
+ #if defined(ABSL_ARCH_X86_64)
+ #define ABSL_INTERNAL_USE_X86_CPUID
+ #elif defined(ABSL_ARCH_PPC) || defined(ABSL_ARCH_ARM) || \
+@@ -31,7 +36,7 @@
+ #if defined(__ANDROID__)
+ #define ABSL_INTERNAL_USE_ANDROID_GETAUXVAL
+ #define ABSL_INTERNAL_USE_GETAUXVAL
+-#elif defined(__linux__)
++#elif defined(__linux__) && defined(ABSL_HAVE_GETAUXVAL)
+ #define ABSL_INTERNAL_USE_LINUX_GETAUXVAL
+ #define ABSL_INTERNAL_USE_GETAUXVAL
+ #endif