From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1791) id D99B23858D20; Wed, 17 Apr 2024 20:05:23 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D99B23858D20 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1713384323; bh=xg+8NqMaFySucgSTymuQyONJCmYmrs3Dm2oA/2whcIs=; h=From:To:Subject:Date:From; b=BHbKJXokJU/m/LwrBXDGJTSOzZBzBPghVVSKt7QjzaWm02LNfMXmXbxizwaEToEf+ dam6GL0cxNh5GnLOKYLQ94oo6D7yFuU7fdPLkwvWTTGcUe/arzpwb157jRY7BfWugD zbH5vj4RbWrYqXhk91TEqV8y39DFM/xcbNzgVcBY= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Adhemerval Zanella To: glibc-cvs@sourceware.org Subject: [glibc/azanella/clang] argp: Expand argp_usage, _option_is_short, and _option_is_end X-Act-Checkin: glibc X-Git-Author: Adhemerval Zanella X-Git-Refname: refs/heads/azanella/clang X-Git-Oldrev: ed63857295eb3d48e9114ae4c697f65d5d83635a X-Git-Newrev: 35cdd59852251b2e69b3311ab1e22fccdb5e1a18 Message-Id: <20240417200523.D99B23858D20@sourceware.org> Date: Wed, 17 Apr 2024 20:05:23 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=35cdd59852251b2e69b3311ab1e22fccdb5e1a18 commit 35cdd59852251b2e69b3311ab1e22fccdb5e1a18 Author: Adhemerval Zanella Date: Thu Jul 21 14:12:01 2022 -0300 argp: Expand argp_usage, _option_is_short, and _option_is_end The argp code uses some clever macro redefine to avoid need to duplicate the optimized static inline implementations for argp_usage, _option_is_short, and _option_is_end. This however leads to some build issues with clang, since some function prototypes are redefined to add the hidden attribute with libc_hidden_proto. To avoid extensive changes on internal headers, just expand the function implementations and avoid the macro redefine tricks. Diff: --- argp/argp-xinl.c | 34 +++++++++++++++++++++++----------- argp/argp.h | 10 +++------- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/argp/argp-xinl.c b/argp/argp-xinl.c index 4bd4671699..e9d654499f 100644 --- a/argp/argp-xinl.c +++ b/argp/argp-xinl.c @@ -25,19 +25,31 @@ # include #endif -#ifndef __USE_EXTERN_INLINES -# define __USE_EXTERN_INLINES 1 -#endif -#define ARGP_EI -#undef __OPTIMIZE__ -#define __OPTIMIZE__ 1 #include -/* Add weak aliases. */ -#if _LIBC - 0 && defined (weak_alias) - +void +__argp_usage (const struct argp_state *__state) +{ + __argp_state_help (__state, stderr, ARGP_HELP_STD_USAGE); +} weak_alias (__argp_usage, argp_usage) + +int +__option_is_short (const struct argp_option *__opt) +{ + if (__opt->flags & OPTION_DOC) + return 0; + else + { + int __key = __opt->key; + return __key > 0 && __key <= UCHAR_MAX && isprint (__key); + } +} weak_alias (__option_is_short, _option_is_short) -weak_alias (__option_is_end, _option_is_end) -#endif +int +__option_is_end (const struct argp_option *__opt) +{ + return !__opt->key && !__opt->name && !__opt->doc && !__opt->group; +} +weak_alias (__option_is_end, _option_is_end) diff --git a/argp/argp.h b/argp/argp.h index efae2a6587..99d3b4d788 100644 --- a/argp/argp.h +++ b/argp/argp.h @@ -518,17 +518,13 @@ extern void *__argp_input (const struct argp *__restrict __argp, # define __option_is_end _option_is_end # endif -# ifndef ARGP_EI -# define ARGP_EI __extern_inline -# endif - -ARGP_EI void +__extern_inline void __argp_usage (const struct argp_state *__state) { __argp_state_help (__state, stderr, ARGP_HELP_STD_USAGE); } -ARGP_EI int +__extern_inline int __NTH (__option_is_short (const struct argp_option *__opt)) { if (__opt->flags & OPTION_DOC) @@ -540,7 +536,7 @@ __NTH (__option_is_short (const struct argp_option *__opt)) } } -ARGP_EI int +__extern_inline int __NTH (__option_is_end (const struct argp_option *__opt)) { return !__opt->key && !__opt->name && !__opt->doc && !__opt->group;