summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeongik Cha <jeongik@google.com>2021-03-10 06:09:02 +0000
committerJeongik Cha <jeongik@google.com>2021-03-11 08:43:40 +0000
commit231f0e8d020e8fc0afa1e93dd5d43e68b6f73d1f (patch)
treee29a0c8dd2695fbc6b9f442e16617185103f390a
parentc89a7ecb69665064e143a935c79fafc032c80085 (diff)
downloadlibchrome-231f0e8d020e8fc0afa1e93dd5d43e68b6f73d1f.tar.gz
Supplement the condition for strerror_r in bionic
The current condition assumes that bionic is used for only android device target, but it can be host target as well. So to support an android host target using bionic instead of glibc, supplement the condition for strerror_r as the condition in strings.h in bionic. (cherry-picked from crrev.com/c/2738587) Test: build libchrome for linux_glibc, linux_bionic, android_bionic Bug: b/181203470 Change-Id: Id4bec947ecb90c06c47db2cc77b721041b1931d9 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2738587 Reviewed-by: François Doray <fdoray@chromium.org> Reviewed-by: Albert J. Wong <ajwong@chromium.org> Auto-Submit: Jeongik Cha <jeongik@google.com> Commit-Queue: Jeongik Cha <jeongik@google.com> Cr-Commit-Position: refs/heads/master@{#861445}
-rw-r--r--base/posix/safe_strerror.cc13
1 files changed, 5 insertions, 8 deletions
diff --git a/base/posix/safe_strerror.cc b/base/posix/safe_strerror.cc
index aef5742d33..aab8b87921 100644
--- a/base/posix/safe_strerror.cc
+++ b/base/posix/safe_strerror.cc
@@ -2,14 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#if defined(__ANDROID__)
-// Post-L versions of bionic define the GNU-specific strerror_r if _GNU_SOURCE
-// is defined, but the symbol is renamed to __gnu_strerror_r which only exists
-// on those later versions. To preserve ABI compatibility with older versions,
-// undefine _GNU_SOURCE and use the POSIX version.
-#undef _GNU_SOURCE
-#endif
-
#include "base/posix/safe_strerror.h"
#include <errno.h>
@@ -22,6 +14,11 @@ namespace base {
#if defined(__GLIBC__) || defined(OS_NACL)
#define USE_HISTORICAL_STRERRO_R 1
+// Post-L versions of bionic define the GNU-specific strerror_r if _GNU_SOURCE
+// is defined, but the symbol is renamed to __gnu_strerror_r which only exists
+// on those later versions. For parity, add the same condition as bionic.
+#elif defined(__BIONIC__) && defined(_GNU_SOURCE) && __ANDROID_API__ >= 23
+#define USE_HISTORICAL_STRERRO_R 1
#else
#define USE_HISTORICAL_STRERRO_R 0
#endif