From patchwork Sun May 13 20:31:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Weimer X-Patchwork-Id: 912587 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-92486-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="IPaC4Yku"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 40kb8s2pcbz9s0w for ; Mon, 14 May 2018 06:31:57 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:date:to:subject:mime-version:content-type :content-transfer-encoding:message-id:from; q=dns; s=default; b= ZFpsgZd+sy7UIHpDvMd0LS1+/wKZ2wiYgTfpOtPcEa/Qgto6XOqEyV0Kuckce0sB on3BJ5dofuq+Rn+9Qoe4xeT7oyasyQR7AiZJeRkPBn/zB38NwXXFfW+SROzruEf8 rBbnLL6NbfqAOiyAHi9s1BOHN1T/aOlEP7Acytq9KZA= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:date:to:subject:mime-version:content-type :content-transfer-encoding:message-id:from; s=default; bh=cuAp0s 0Drcq7teBqkmoDNM4c1us=; b=IPaC4YkuzX5Ai9WeWKVwzMFYv94FjH/bqNenw2 fTt18s6P+z5fWzON42dCMM3Y+kUHc4+sngnarZXVDj49V564S20qxNKZUUAO0j0p +0BNji4URqjE+zAkgvSkbI2XGh1ZJasfSbH0bLKflnAxQeuoK67Hh+SdJEwV/Ovm YgJNc= Received: (qmail 11371 invoked by alias); 13 May 2018 20:31:51 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 11361 invoked by uid 89); 13 May 2018 20:31:50 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LAZY_DOMAIN_SECURITY, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mx1.redhat.com Date: Sun, 13 May 2018 22:31:46 +0200 To: libc-alpha@sourceware.org Subject: [PATCH] math: Use local strto_*nan function in nan* for CONFIG_MATH_NOPRIVATE User-Agent: Heirloom mailx 12.5 7/5/10 MIME-Version: 1.0 Message-Id: <20180513203146.41F124016D681@oldenburg.str.redhat.com> From: fweimer@redhat.com (Florian Weimer) With --enable-math-noprivate, this results in a libm.so.6 without GLIBC_PRIVATE references on aarch64. (Other architectures need --disable-multi-arch as well and, in some cases, additional work.) 2018-05-13 Florian Weimer * math/s_nan_template.c [CONFIG_MATH_NOPRIVATE] (M_STRTO_NAN, STRING_TYPE, L_, STRTOULL, STRTOD_NAN_DECL, STRTOD_NAN): Define. Include . * stdlib/strtod_nan.c (STRTOD_NAN_DECL): Define. * stdlib/strtod_nan_main.c (STROT_D_NAN): Use it. * stdlib/strtof_nan.c (STRTOD_NAN_DECL): Define. * stdlib/strtold_nan.c (STRTOD_NAN_DECL): Define. * sysdeps/ieee754/float128/strtof128_nan.c (STRTOD_NAN_DECL): Define. * sysdeps/ieee754/float128/wcstof128_nan.c (STRTOD_NAN_DECL): Define. * wcsmbs/wcstod_nan.c (STRTOD_NAN_DECL): Define. * wcsmbs/wcstof_nan.c (STRTOD_NAN_DECL): Define. * wcsmbs/wcstold_nan.c (STRTOD_NAN_DECL): Define. diff --git a/math/s_nan_template.c b/math/s_nan_template.c index fe390474e4..46cb8afa80 100644 --- a/math/s_nan_template.c +++ b/math/s_nan_template.c @@ -23,6 +23,21 @@ #include #include +#if CONFIG_MATH_NOPRIVATE +/* Use a static function definition to avoid the external reference to + the implementation in libc. For historic reasons, + __strtoul_internal is an exported symbol. */ + +# undef M_STRTO_NAN +# define M_STRTO_NAN strtod_local + +# define STRING_TYPE char +# define L_(Ch) Ch +# define STRTOULL(S, E, B) __strtoul_internal (S, E, B, /* group */ 0) +# define STRTOD_NAN_DECL static +# define STRTOD_NAN M_STRTO_NAN +# include +#endif FLOAT M_DECL_FUNC (__nan) (const char *tagp) diff --git a/stdlib/strtod_nan.c b/stdlib/strtod_nan.c index c5876b59a0..f1fc5ae135 100644 --- a/stdlib/strtod_nan.c +++ b/stdlib/strtod_nan.c @@ -20,5 +20,6 @@ #include #include +#define STRTOD_NAN_DECL #define STRTOD_NAN __strtod_nan #include diff --git a/stdlib/strtod_nan_main.c b/stdlib/strtod_nan_main.c index 12f6e7383d..a7864c0ebc 100644 --- a/stdlib/strtod_nan_main.c +++ b/stdlib/strtod_nan_main.c @@ -29,6 +29,7 @@ return a default NAN. If ENDPTR is not NULL, set *ENDPTR to point to the character after the initial n-char-sequence. */ +STRTOD_NAN_DECL FLOAT STRTOD_NAN (const STRING_TYPE *str, STRING_TYPE **endptr, STRING_TYPE endc) { diff --git a/stdlib/strtof_nan.c b/stdlib/strtof_nan.c index f085c5b4fb..dfa80c8cca 100644 --- a/stdlib/strtof_nan.c +++ b/stdlib/strtof_nan.c @@ -20,5 +20,6 @@ #include #include +#define STRTOD_NAN_DECL #define STRTOD_NAN __strtof_nan #include diff --git a/stdlib/strtold_nan.c b/stdlib/strtold_nan.c index eadfe546e2..935a024e0a 100644 --- a/stdlib/strtold_nan.c +++ b/stdlib/strtold_nan.c @@ -25,6 +25,7 @@ # include # include +# define STRTOD_NAN_DECL # define STRTOD_NAN __strtold_nan # include #endif diff --git a/sysdeps/ieee754/float128/strtof128_nan.c b/sysdeps/ieee754/float128/strtof128_nan.c index 37a7f4e02e..4fe885e9a7 100644 --- a/sysdeps/ieee754/float128/strtof128_nan.c +++ b/sysdeps/ieee754/float128/strtof128_nan.c @@ -22,5 +22,6 @@ #include #include +#define STRTOD_NAN_DECL #define STRTOD_NAN __strtof128_nan #include diff --git a/sysdeps/ieee754/float128/wcstof128_nan.c b/sysdeps/ieee754/float128/wcstof128_nan.c index f504809dcf..300e4de35e 100644 --- a/sysdeps/ieee754/float128/wcstof128_nan.c +++ b/sysdeps/ieee754/float128/wcstof128_nan.c @@ -19,5 +19,6 @@ #include #include +#define STRTOD_NAN_DECL #define STRTOD_NAN __wcstof128_nan #include diff --git a/wcsmbs/wcstod_nan.c b/wcsmbs/wcstod_nan.c index 1423f3e8aa..fdc626dfa0 100644 --- a/wcsmbs/wcstod_nan.c +++ b/wcsmbs/wcstod_nan.c @@ -19,5 +19,6 @@ #include "../stdlib/strtod_nan_wide.h" #include +#define STRTOD_NAN_DECL #define STRTOD_NAN __wcstod_nan #include "../stdlib/strtod_nan_main.c" diff --git a/wcsmbs/wcstof_nan.c b/wcsmbs/wcstof_nan.c index 96f2198667..68ff567c49 100644 --- a/wcsmbs/wcstof_nan.c +++ b/wcsmbs/wcstof_nan.c @@ -19,5 +19,6 @@ #include "../stdlib/strtod_nan_wide.h" #include +#define STRTOD_NAN_DECL #define STRTOD_NAN __wcstof_nan #include "../stdlib/strtod_nan_main.c" diff --git a/wcsmbs/wcstold_nan.c b/wcsmbs/wcstold_nan.c index 66793ec459..8e00d8eefe 100644 --- a/wcsmbs/wcstold_nan.c +++ b/wcsmbs/wcstold_nan.c @@ -25,6 +25,7 @@ # include "../stdlib/strtod_nan_wide.h" # include +# define STRTOD_NAN_DECL # define STRTOD_NAN __wcstold_nan # include "../stdlib/strtod_nan_main.c" #endif