From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by sourceware.org (Postfix) with ESMTPS id 058D83858C5F for ; Thu, 9 Feb 2023 17:45:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 058D83858C5F Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.ibm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.ibm.com Received: from pps.filterd (m0098421.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 319HiaBF012465 for ; Thu, 9 Feb 2023 17:45:41 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding; s=pp1; bh=YjrBVAWOuEGZxG/meQsh0iLEW3i5ReE5uyxnt6ZYb98=; b=ANKZWhUAgJaZrh2hH3Ekzic9sxyBLHvU6yi6PdKCwPXC/v0z2gPM6IqRSNJHyMHNxVlm 14yDvqIgPG7dSRf/v8L21nwqQVMZ9B7rnKCTodWTpZurtxYleEL40g4fu4wjJBADlguA w3s/myvAGk1VkcgjW1Aon/jjECF2XJ7d5r3Ggsy8YaDAhNRL7XfAwLD/9ukjwLpUvuzX xmPBCzxDgRbGlBg4P9p7kQB+Jf4NfFZts9PnWqbn6+SsY+qFdX3sN7QxJi0TiATPP92y yBABpGH1vOzij5sHKS+aJKy7mGh/DUWoHp8iJmezYWuWMu3V86/4iiv58XF+4p0NCn+0 Bg== Received: from ppma04fra.de.ibm.com (6a.4a.5195.ip4.static.sl-reverse.com [149.81.74.106]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3nn5gbr0uw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 09 Feb 2023 17:45:41 +0000 Received: from pps.filterd (ppma04fra.de.ibm.com [127.0.0.1]) by ppma04fra.de.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 318JlsMP028226 for ; Thu, 9 Feb 2023 17:45:39 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma04fra.de.ibm.com (PPS) with ESMTPS id 3nhf06vmgf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 09 Feb 2023 17:45:39 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 319HjZXL22610656 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 9 Feb 2023 17:45:36 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D4CFA20049; Thu, 9 Feb 2023 17:45:35 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 45B4620040; Thu, 9 Feb 2023 17:45:35 +0000 (GMT) Received: from ltcd97-lp3.. (unknown [9.40.194.171]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 9 Feb 2023 17:45:35 +0000 (GMT) From: Sachin Monga To: libc-alpha@sourceware.org Cc: Sachin Monga Subject: [PATCH] Added Redirects to longdouble error functions [BZ #29033] Date: Thu, 9 Feb 2023 12:45:28 -0500 Message-Id: <20230209174528.292568-1-smonga@linux.ibm.com> X-Mailer: git-send-email 2.37.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-GUID: SwTlj_3fG5zHvfUcMgUv2OqNnNhmwfpd X-Proofpoint-ORIG-GUID: SwTlj_3fG5zHvfUcMgUv2OqNnNhmwfpd X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-09_13,2023-02-09_03,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 mlxlogscore=999 priorityscore=1501 lowpriorityscore=0 spamscore=0 malwarescore=0 adultscore=0 impostorscore=0 mlxscore=0 bulkscore=0 clxscore=1011 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2302090166 X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This patch redirects the error functions to the appropriate longdouble variants which enables the compiler to optimize for the abi ieeelongdouble. Signed-off-by: Sachin Monga --- misc/bits/error-ldbl.h | 53 ++++++++++++++++++++++++++++++++++++++++-- misc/sys/cdefs.h | 6 +++++ 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/misc/bits/error-ldbl.h b/misc/bits/error-ldbl.h index 599a7d6e06..73ecbe7a10 100644 --- a/misc/bits/error-ldbl.h +++ b/misc/bits/error-ldbl.h @@ -20,5 +20,54 @@ # error "Never include directly; use instead." #endif -__LDBL_REDIR_DECL (error) -__LDBL_REDIR_DECL (error_at_line) + +__LDBL_REDIRECT (__error_alias, (int __status, int __errnum, + const char *__format, ...), + error) + __attribute__ ((__format__ (__printf__, 3, 4))); +__LDBL_REDIRECT (__error_noreturn, (int __status, int __errnum, + const char *__format, ...), + error) + __attribute__ ((__noreturn__, __format__ (__printf__, 3, 4))); + + +/* If we know the function will never return make sure the compiler + realizes that, too. */ +__extern_always_inline void +error (int __status, int __errnum, const char *__format, ...) +{ + if (__builtin_constant_p (__status) && __status != 0) + __error_noreturn (__status, __errnum, __format, __va_arg_pack ()); + else + __error_alias (__status, __errnum, __format, __va_arg_pack ()); +} + + +__LDBL_REDIRECT (__error_at_line_alias, (int __status, int __errnum, + const char *__fname, + unsigned int __line, + const char *__format, ...), + error_at_line) + __attribute__ ((__format__ (__printf__, 5, 6))); +__LDBL_REDIRECT (__error_at_line_noreturn, (int __status, int __errnum, + const char *__fname, + unsigned int __line, + const char *__format, + ...), + error_at_line) + __attribute__ ((__noreturn__, __format__ (__printf__, 5, 6))); + + +/* If we know the function will never return make sure the compiler + realizes that, too. */ +__extern_always_inline void +error_at_line (int __status, int __errnum, const char *__fname, + unsigned int __line, const char *__format, ...) +{ + if (__builtin_constant_p (__status) && __status != 0) + __error_at_line_noreturn (__status, __errnum, __fname, __line, __format, + __va_arg_pack ()); + else + __error_at_line_alias (__status, __errnum, __fname, __line, + __format, __va_arg_pack ()); +} diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h index 66d6702123..34fdd3c24a 100644 --- a/misc/sys/cdefs.h +++ b/misc/sys/cdefs.h @@ -245,6 +245,7 @@ #if (defined __GNUC__ && __GNUC__ >= 2) || (__clang_major__ >= 4) # define __REDIRECT(name, proto, alias) name proto __asm__ (__ASMNAME (#alias)) + # ifdef __cplusplus # define __REDIRECT_NTH(name, proto, alias) \ name proto __THROW __asm__ (__ASMNAME (#alias)) @@ -567,6 +568,8 @@ # define __LDBL_REDIR(name, proto) ... unused__ldbl_redir # define __LDBL_REDIR_DECL(name) \ extern __typeof (name) name __asm (__ASMNAME ("__" #name "ieee128")); +# define __LDBL_REDIRECT(name, proto, alias) \ + extern void name proto __asm (__ASMNAME ("__" #alias "ieee128")) /* Alias name defined automatically, with leading underscores. */ # define __LDBL_REDIR2_DECL(name) \ @@ -605,6 +608,8 @@ _Static_assert (0, "IEEE 128-bits long double requires redirection on this platf extern __typeof (name) name __asm (__ASMNAME (#alias)); # define __LDBL_REDIR_DECL(name) \ extern __typeof (name) name __asm (__ASMNAME ("__nldbl_" #name)); +# define __LDBL_REDIRECT(name, proto, alias) \ + extern void name proto __asm (__ASMNAME ("__nldbl_" #alias)); # define __REDIRECT_LDBL(name, proto, alias) \ __LDBL_REDIR1 (name, proto, __nldbl_##alias) # define __REDIRECT_NTH_LDBL(name, proto, alias) \ @@ -619,6 +624,7 @@ _Static_assert (0, "IEEE 128-bits long double requires redirection on this platf # define __LDBL_REDIR_NTH(name, proto) name proto __THROW # define __LDBL_REDIR2_DECL(name) # define __LDBL_REDIR_DECL(name) +# define __LDBL_REDIRECT(name, proto, alias) # ifdef __REDIRECT # define __REDIRECT_LDBL(name, proto, alias) __REDIRECT (name, proto, alias) # define __REDIRECT_NTH_LDBL(name, proto, alias) \ -- 2.37.2