aboutsummaryrefslogtreecommitdiff
path: root/include/err.h
diff options
context:
space:
mode:
authorPaul E. Murphy <murphyp@linux.vnet.ibm.com>2020-02-07 14:07:55 -0600
committerPaul E. Murphy <murphyp@linux.vnet.ibm.com>2020-03-25 14:34:23 -0500
commit45ae17dd7ed3b9dea0d698d1c37a978d8d0a9aa2 (patch)
tree3bcf36847e060d0af834270805e9cddf76cc178e /include/err.h
parent4eda036f5b897fa8bc20ddd2099b5a6ed4239dc9 (diff)
downloadglibc-45ae17dd7ed3b9dea0d698d1c37a978d8d0a9aa2.zip
glibc-45ae17dd7ed3b9dea0d698d1c37a978d8d0a9aa2.tar.gz
glibc-45ae17dd7ed3b9dea0d698d1c37a978d8d0a9aa2.tar.bz2
ldbl-128ibm-compat: PLT redirects for using ldbl redirects internally
Tweak the PLT bypass magic when building glibc with long double redirects. This is made more difficult by the fact we only get one chance to redirect functions. This happens via the public headers. There are roughly three classes of redirect we need to attend to today: 1. Simple redirects, redirected via cdef macro overrides and and new libc_hidden_ldbl_proto macro. 2. Internal usage of internal API, e.g __snprintf, which has no direct analogue. This is bypassed directly on case-by- case basis. 3. Double redirects, e.g sscanf and related. These require a heavier handed approach of macro renaming to existing symbols. Most simple redirects are handled via 1. Ideally, the libc_* macro would live in libc-symbols.h, but in practice the macros needed for it to do anything useful live in cdefs.h, so they are defined in the local override. Notably, the internal name of the asprintf generated for ieee ldbl redirects is renamed to work with internal prefixed usage. This resolves the local plt usage introduced when building glibc with ldbl == ieee128 on ppc64le. Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Diffstat (limited to 'include/err.h')
-rw-r--r--include/err.h12
1 files changed, 6 insertions, 6 deletions
diff --git a/include/err.h b/include/err.h
index 7c05cd1..b9b7516 100644
--- a/include/err.h
+++ b/include/err.h
@@ -12,12 +12,12 @@ __vwarn_internal (const char *format, __gnuc_va_list ap,
# ifndef _ISOMAC
-libc_hidden_proto (warn)
-libc_hidden_proto (warnx)
-libc_hidden_proto (vwarn)
-libc_hidden_proto (vwarnx)
-libc_hidden_proto (verr)
-libc_hidden_proto (verrx)
+libc_hidden_ldbl_proto (warn)
+libc_hidden_ldbl_proto (warnx)
+libc_hidden_ldbl_proto (vwarn)
+libc_hidden_ldbl_proto (vwarnx)
+libc_hidden_ldbl_proto (verr)
+libc_hidden_ldbl_proto (verrx)
# endif /* !_ISOMAC */
#endif /* err.h */