On 10/24/2018 11:27 AM, Joseph Myers wrote:
On Wed, 24 Oct 2018, Martin Sebor wrote:
On 10/24/2018 06:22 AM, Joseph Myers wrote:
On Wed, 24 Oct 2018, Martin Sebor wrote:
But if you do want to avoid the attribute on declarations of
these functions regardless it should be safe to add it after
the declaration in the .c file, like so:
__hidden_ver1 (strcmp, __GI_strcmp, __redirect_strcmp)
__attribute__ ((visibility ("hidden"), copy (strcmp)));
The obvious question there is whether the glibc patch should use copy
(local) as well as copy (name) in the definition of __hidden_ver1.
I tried copy(local) but it breaks where local isn't declared.
I think errno_location was the first one I saw where it referred
to __GI__something_or_other that was previously only defined via
an asm.
In that case maybe it should go in the .c files (the patch should define
some common attribute_copy macro in some internal header, to avoid lots of
places needing to duplicate conditionals for whether it's supported).
I defined __attribute_copy__ in cdefs.h like other attributes
and used it in libc-symbols.h and in the string .c files but
it turns out that cdefs.h isn't always included when the
libc-symbols.h macros are used. For instance,
sysdeps/unix/sysv/linux/umount.c is compiled without it which
results in errors. So the way I worked around it pretty hacky.
Attached is what I have. I'm sure there's a better way that
you will want to adopt for Glibc but this works as a proof of
concept and results in no warnings by default. With
-Wattribute-alias=2 it gives the attached warnings for aliases
with more restrictive attributes than their targets (alloc_size,
const, leaf, malloc, nonnull, noreturn, nothrow, pure, and
returns_nonnull).
The GCC patch is the same so please let me know if there's
something to change there.
Whether nonnull attributes should be disabled when building glibc is a
separate question which would involve reviewing lots of functions with
such attributes against
<https://sourceware.org/glibc/wiki/Style_and_Conventions#Invalid_pointers>
to see whether there are checks for NULL that are actually appropriate
under current glibc conventions but might be optimized away given such
attributes. So it should clearly be kept separate from fixes to use copy
attributes to get better attribute consistency fot aliases.
Agreed. I certainly don't plan to undertake this project as
part of the GCC attribute enhancement.
Martin
diff --git a/include/libc-symbols.h b/include/libc-symbols.h
index 8b9273c..e71a479 100644
--- a/include/libc-symbols.h
+++ b/include/libc-symbols.h
@@ -125,6 +125,11 @@
# define ASM_LINE_SEP ;
#endif
+#ifndef __attribute_copy__
+/* Provide an empty definition when cdefs.h is not included. */
+# define __attribute_copy__(arg)
+#endif
+
#ifndef __ASSEMBLER__
/* GCC understands weak symbols and aliases; use its interface where
possible, instead of embedded assembly language. */
@@ -132,7 +137,8 @@
/* Define ALIASNAME as a strong alias for NAME. */
# define strong_alias(name, aliasname) _strong_alias(name, aliasname)
# define _strong_alias(name, aliasname) \
- extern __typeof (name) aliasname __attribute__ ((alias (#name)));
+ extern __typeof (name) aliasname __attribute__ ((alias (#name))) \
+ __attribute_copy__ (name);
/* This comes between the return type and function name in
a function definition to make that definition weak. */
@@ -143,14 +149,16 @@
If weak aliases are not available, this defines a strong alias. */
# define weak_alias(name, aliasname) _weak_alias (name, aliasname)
# define _weak_alias(name, aliasname) \
- extern __typeof (name) aliasname __attribute__ ((weak, alias (#name)));
+ extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))) \
+ __attribute_copy__ (name);
/* Same as WEAK_ALIAS, but mark symbol as hidden. */
# define weak_hidden_alias(name, aliasname) \
_weak_hidden_alias (name, aliasname)
# define _weak_hidden_alias(name, aliasname) \
extern __typeof (name) aliasname \
- __attribute__ ((weak, alias (#name), __visibility__ ("hidden")));
+ __attribute__ ((weak, alias (#name), __visibility__ ("hidden"))) \
+ __attribute_copy__ (name);
/* Declare SYMBOL as weak undefined symbol (resolved to 0 if not defined). */
# define weak_extern(symbol) _weak_extern (weak symbol)
@@ -532,7 +540,8 @@ for linking")
# define __hidden_ver1(local, internal, name) \
extern __typeof (name) __EI_##name __asm__(__hidden_asmname (#internal)); \
extern __typeof (name) __EI_##name \
- __attribute__((alias (__hidden_asmname (#local))))
+ __attribute__((alias (__hidden_asmname (#local)))) \
+ __attribute_copy__ (name)
# define hidden_ver(local, name) __hidden_ver1(local, __GI_##name, name);
# define hidden_data_ver(local, name) hidden_ver(local, name)
# define hidden_def(name) __hidden_ver1(__GI_##name, name, name);
@@ -545,7 +554,8 @@ for linking")
# define __hidden_nolink1(local, internal, name, version) \
__hidden_nolink2 (local, internal, name, version)
# define __hidden_nolink2(local, internal, name, version) \
- extern __typeof (name) internal __attribute__ ((alias (#local))); \
+ extern __typeof (name) internal __attribute__ ((alias (#local))) \
+ __attribute_copy__ (name); \
__hidden_nolink3 (local, internal, #name "@" #version)
# define __hidden_nolink3(local, internal, vername) \
__asm__ (".symver " #internal ", " vername);
diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h
index 3f6fe3c..8d58568 100644
--- a/misc/sys/cdefs.h
+++ b/misc/sys/cdefs.h
@@ -431,6 +431,16 @@
# define __attribute_nonstring__
#endif
+/* Undefine (also defined in libc-symbols.h). */
+#undef __attribute_copy__
+#if __GNUC_PREREQ (9, 0)
+/* Copies attributes from the declaration or type referenced by
+ the argument. */
+# define __attribute_copy__(arg) __attribute__ ((__copy__ (arg)))
+#else
+# define __attribute_copy__(arg)
+#endif
+
#if (!defined _Static_assert && !defined __cplusplus \
&& (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \
&& (!__GNUC_PREREQ (4, 6) || defined __STRICT_ANSI__))
diff --git a/sysdeps/x86_64/multiarch/memchr.c b/sysdeps/x86_64/multiarch/memchr.c
index 016f578..ce2e69c 100644
--- a/sysdeps/x86_64/multiarch/memchr.c
+++ b/sysdeps/x86_64/multiarch/memchr.c
@@ -30,6 +30,6 @@ libc_ifunc_redirected (__redirect_memchr, memchr, IFUNC_SELECTOR ());
strong_alias (memchr, __memchr)
# ifdef SHARED
__hidden_ver1 (memchr, __GI_memchr, __redirect_memchr)
- __attribute__((visibility ("hidden")));
+__attribute__((visibility ("hidden"))) __attribute_copy__ (memchr);
# endif
#endif
diff --git a/sysdeps/x86_64/multiarch/memcmp.c b/sysdeps/x86_64/multiarch/memcmp.c
index 6f3ca43..bbd3b01 100644
--- a/sysdeps/x86_64/multiarch/memcmp.c
+++ b/sysdeps/x86_64/multiarch/memcmp.c
@@ -32,6 +32,6 @@ weak_alias (memcmp, bcmp)
# ifdef SHARED
__hidden_ver1 (memcmp, __GI_memcmp, __redirect_memcmp)
- __attribute__ ((visibility ("hidden")));
+ __attribute__ ((visibility ("hidden"))) __attribute_copy__ (memcmp);
# endif
#endif
diff --git a/sysdeps/x86_64/multiarch/mempcpy.c b/sysdeps/x86_64/multiarch/mempcpy.c
index 9fe41dd..d2f7928 100644
--- a/sysdeps/x86_64/multiarch/mempcpy.c
+++ b/sysdeps/x86_64/multiarch/mempcpy.c
@@ -35,8 +35,8 @@ libc_ifunc_redirected (__redirect_mempcpy, __mempcpy, IFUNC_SELECTOR ());
weak_alias (__mempcpy, mempcpy)
# ifdef SHARED
__hidden_ver1 (__mempcpy, __GI___mempcpy, __redirect___mempcpy)
- __attribute__ ((visibility ("hidden")));
+ __attribute__ ((visibility ("hidden"))) __attribute_copy__ (mempcpy);
__hidden_ver1 (mempcpy, __GI_mempcpy, __redirect_mempcpy)
- __attribute__ ((visibility ("hidden")));
+ __attribute__ ((visibility ("hidden"))) __attribute_copy__ (mempcpy);
# endif
#endif
diff --git a/sysdeps/x86_64/multiarch/memset.c b/sysdeps/x86_64/multiarch/memset.c
index 064841d..87246dd 100644
--- a/sysdeps/x86_64/multiarch/memset.c
+++ b/sysdeps/x86_64/multiarch/memset.c
@@ -30,6 +30,6 @@ libc_ifunc_redirected (__redirect_memset, memset, IFUNC_SELECTOR ());
# ifdef SHARED
__hidden_ver1 (memset, __GI_memset, __redirect_memset)
- __attribute__ ((visibility ("hidden")));
+ __attribute__ ((visibility ("hidden"))) __attribute_copy__ (memset);
# endif
#endif
diff --git a/sysdeps/x86_64/multiarch/stpcpy.c b/sysdeps/x86_64/multiarch/stpcpy.c
index 1e340fc..f74a54b 100644
--- a/sysdeps/x86_64/multiarch/stpcpy.c
+++ b/sysdeps/x86_64/multiarch/stpcpy.c
@@ -35,8 +35,8 @@ libc_ifunc_redirected (__redirect_stpcpy, __stpcpy, IFUNC_SELECTOR ());
weak_alias (__stpcpy, stpcpy)
# ifdef SHARED
__hidden_ver1 (__stpcpy, __GI___stpcpy, __redirect___stpcpy)
- __attribute__ ((visibility ("hidden")));
+ __attribute__ ((visibility ("hidden"))) __attribute_copy__ (stpcpy);
__hidden_ver1 (stpcpy, __GI_stpcpy, __redirect_stpcpy)
- __attribute__ ((visibility ("hidden")));
+ __attribute__ ((visibility ("hidden"))) __attribute_copy__ (stpcpy);
# endif
#endif
diff --git a/sysdeps/x86_64/multiarch/strcat.c b/sysdeps/x86_64/multiarch/strcat.c
index 1f7f626..1922c0a 100644
--- a/sysdeps/x86_64/multiarch/strcat.c
+++ b/sysdeps/x86_64/multiarch/strcat.c
@@ -30,6 +30,6 @@ libc_ifunc_redirected (__redirect_strcat, strcat, IFUNC_SELECTOR ());
# ifdef SHARED
__hidden_ver1 (strcat, __GI_strcat, __redirect_strcat)
- __attribute__ ((visibility ("hidden")));
+ __attribute__ ((visibility ("hidden"))) __attribute_copy__ (strcat);
# endif
#endif
diff --git a/sysdeps/x86_64/multiarch/strchr.c b/sysdeps/x86_64/multiarch/strchr.c
index 76d64fb..87e99ba 100644
--- a/sysdeps/x86_64/multiarch/strchr.c
+++ b/sysdeps/x86_64/multiarch/strchr.c
@@ -50,6 +50,6 @@ libc_ifunc_redirected (__redirect_strchr, strchr, IFUNC_SELECTOR ());
weak_alias (strchr, index)
# ifdef SHARED
__hidden_ver1 (strchr, __GI_strchr, __redirect_strchr)
- __attribute__((visibility ("hidden")));
+ __attribute__((visibility ("hidden"))) __attribute_copy__ (strchr);
# endif
#endif
diff --git a/sysdeps/x86_64/multiarch/strcmp.c b/sysdeps/x86_64/multiarch/strcmp.c
index b903e41..e3cf39d 100644
--- a/sysdeps/x86_64/multiarch/strcmp.c
+++ b/sysdeps/x86_64/multiarch/strcmp.c
@@ -54,6 +54,6 @@ libc_ifunc_redirected (__redirect_strcmp, strcmp, IFUNC_SELECTOR ());
# ifdef SHARED
__hidden_ver1 (strcmp, __GI_strcmp, __redirect_strcmp)
- __attribute__ ((visibility ("hidden")));
+ __attribute__ ((visibility ("hidden"))) __attribute_copy__ (strcmp);
# endif
#endif
diff --git a/sysdeps/x86_64/multiarch/strcpy.c b/sysdeps/x86_64/multiarch/strcpy.c
index 12e0e3f..838d916 100644
--- a/sysdeps/x86_64/multiarch/strcpy.c
+++ b/sysdeps/x86_64/multiarch/strcpy.c
@@ -30,6 +30,6 @@ libc_ifunc_redirected (__redirect_strcpy, strcpy, IFUNC_SELECTOR ());
# ifdef SHARED
__hidden_ver1 (strcpy, __GI_strcpy, __redirect_strcpy)
- __attribute__ ((visibility ("hidden")));
+ __attribute__ ((visibility ("hidden"))) __attribute_copy__ (strcpy);
# endif
#endif
diff --git a/sysdeps/x86_64/multiarch/strcspn.c b/sysdeps/x86_64/multiarch/strcspn.c
index 9712e84..9d96526 100644
--- a/sysdeps/x86_64/multiarch/strcspn.c
+++ b/sysdeps/x86_64/multiarch/strcspn.c
@@ -30,6 +30,6 @@ libc_ifunc_redirected (__redirect_strcspn, strcspn, IFUNC_SELECTOR ());
# ifdef SHARED
__hidden_ver1 (strcspn, __GI_strcspn, __redirect_strcspn)
- __attribute__ ((visibility ("hidden")));
+ __attribute__ ((visibility ("hidden"))) __attribute_copy__ (strcspn);
# endif
#endif
diff --git a/sysdeps/x86_64/multiarch/strlen.c b/sysdeps/x86_64/multiarch/strlen.c
index 1758d22..0860083 100644
--- a/sysdeps/x86_64/multiarch/strlen.c
+++ b/sysdeps/x86_64/multiarch/strlen.c
@@ -29,6 +29,6 @@
libc_ifunc_redirected (__redirect_strlen, strlen, IFUNC_SELECTOR ());
# ifdef SHARED
__hidden_ver1 (strlen, __GI_strlen, __redirect_strlen)
- __attribute__((visibility ("hidden")));
+ __attribute__((visibility ("hidden"))) __attribute_copy__ (strlen);
# endif
#endif
diff --git a/sysdeps/x86_64/multiarch/strncmp.c b/sysdeps/x86_64/multiarch/strncmp.c
index 02b6d0b..32f5c6c 100644
--- a/sysdeps/x86_64/multiarch/strncmp.c
+++ b/sysdeps/x86_64/multiarch/strncmp.c
@@ -55,6 +55,6 @@ libc_ifunc_redirected (__redirect_strncmp, strncmp, IFUNC_SELECTOR ());
# ifdef SHARED
__hidden_ver1 (strncmp, __GI_strncmp, __redirect_strncmp)
- __attribute__ ((visibility ("hidden")));
+ __attribute__ ((visibility ("hidden"))) __attribute_copy__ (strncmp);
# endif
#endif
diff --git a/sysdeps/x86_64/multiarch/strncpy.c b/sysdeps/x86_64/multiarch/strncpy.c
index 3c3de8b..3201f0f 100644
--- a/sysdeps/x86_64/multiarch/strncpy.c
+++ b/sysdeps/x86_64/multiarch/strncpy.c
@@ -30,6 +30,6 @@ libc_ifunc_redirected (__redirect_strncpy, strncpy, IFUNC_SELECTOR ());
# ifdef SHARED
__hidden_ver1 (strncpy, __GI_strncpy, __redirect_strncpy)
- __attribute__ ((visibility ("hidden")));
+ __attribute__ ((visibility ("hidden"))) __attribute_copy__ (strncpy);
# endif
#endif
diff --git a/sysdeps/x86_64/multiarch/strnlen.c b/sysdeps/x86_64/multiarch/strnlen.c
index 3ab94ce..9d64335 100644
--- a/sysdeps/x86_64/multiarch/strnlen.c
+++ b/sysdeps/x86_64/multiarch/strnlen.c
@@ -32,8 +32,8 @@ libc_ifunc_redirected (__redirect_strnlen, __strnlen, IFUNC_SELECTOR ());
weak_alias (__strnlen, strnlen);
# ifdef SHARED
__hidden_ver1 (__strnlen, __GI___strnlen, __redirect___strnlen)
- __attribute__((visibility ("hidden")));
+ __attribute__((visibility ("hidden"))) __attribute_copy__ (strnlen);
__hidden_ver1 (strnlen, __GI_strnlen, __redirect_strnlen)
- __attribute__((weak, visibility ("hidden")));
+ __attribute__((weak, visibility ("hidden"))) __attribute_copy__ (strnlen);
# endif
#endif
diff --git a/sysdeps/x86_64/multiarch/strpbrk.c b/sysdeps/x86_64/multiarch/strpbrk.c
index a0d435a..f110367 100644
--- a/sysdeps/x86_64/multiarch/strpbrk.c
+++ b/sysdeps/x86_64/multiarch/strpbrk.c
@@ -30,6 +30,6 @@ libc_ifunc_redirected (__redirect_strpbrk, strpbrk, IFUNC_SELECTOR ());
# ifdef SHARED
__hidden_ver1 (strpbrk, __GI_strpbrk, __redirect_strpbrk)
- __attribute__ ((visibility ("hidden")));
+ __attribute__ ((visibility ("hidden"))) __attribute_copy__ (strpbrk);
# endif
#endif
diff --git a/sysdeps/x86_64/multiarch/strrchr.c b/sysdeps/x86_64/multiarch/strrchr.c
index a719edd..ba7458a 100644
--- a/sysdeps/x86_64/multiarch/strrchr.c
+++ b/sysdeps/x86_64/multiarch/strrchr.c
@@ -29,6 +29,6 @@ libc_ifunc_redirected (__redirect_strrchr, strrchr, IFUNC_SELECTOR ());
weak_alias (strrchr, rindex);
# ifdef SHARED
__hidden_ver1 (strrchr, __GI_strrchr, __redirect_strrchr)
- __attribute__((visibility ("hidden")));
+ __attribute__((visibility ("hidden"))) __attribute_copy__ (strrchr);
# endif
#endif
diff --git a/sysdeps/x86_64/multiarch/strspn.c b/sysdeps/x86_64/multiarch/strspn.c
index 56ab4d9..8b80bdc 100644
--- a/sysdeps/x86_64/multiarch/strspn.c
+++ b/sysdeps/x86_64/multiarch/strspn.c
@@ -30,6 +30,6 @@ libc_ifunc_redirected (__redirect_strspn, strspn, IFUNC_SELECTOR ());
# ifdef SHARED
__hidden_ver1 (strspn, __GI_strspn, __redirect_strspn)
- __attribute__ ((visibility ("hidden")));
+ __attribute__ ((visibility ("hidden"))) __attribute_copy__ (strspn);
# endif
#endif
Diagnostic Count Unique Files
-Wattribute-alias= 1652 687 573
-Wattribute-alias Instances:
asctime.c:79
asprintf.c:42
asprintf.c:43
backtracesyms.c:120
backtracesymsfd.c:121
bindtextdom.c:335
bindtextdom.c:336
btowc.c:100
./cabs_template.c:29
canonicalize.c:222
canonicalize.c:247
./carg_template.c:29
./cimag_template.c:28
./conj_template.c:28
./creal_template.c:28
crypt-entry.c:156
ctype-c99_l.c:27
ctype_l.c:27
ctype_l.c:28
ctype_l.c:29
ctype_l.c:30
ctype_l.c:31
ctype_l.c:32
ctype_l.c:33
ctype_l.c:34
ctype_l.c:35
ctype_l.c:36
ctype_l.c:37
dcgettext.c:52
dcngettext.c:54
dgettext.c:55
difftime.c:121
dladdr1.c:52
dladdr.c:42
dlclose.c:49
dlerror.c:120
dlinfo.c:124
dl-minimal.c:295
dlmopen.c:105
dlsym.c:77
dlvsym.c:81
dngettext.c:56
duplocale.c:89
efgcvt.c:124
efgcvt.c:125
efgcvt.c:126
efgcvt_r.c:261
efgcvt_r.c:262
erand48_r.c:47
execvpe.c:192
explicit_bzero_chk.c:44
fileno.c:44
fileno.c:51
fmemopen.c:226
fmtmsg.c:367
fprintf.c:38
fprintf_chk.c:44
freelocale.c:54
fscanf.c:36
fstat.c:55
getaliasent_r.c:24
getaliasname_r.c:23
getauxval.c:45
gettext.c:60
getttyent.c:58
getutent.c:45
getutent_r.c:138
getutent_r.c:155
getutent_r.c:172
getutent_r.c:185
getutid.c:43
getutid_r.c:63
getutline.c:44
getutline_r.c:46
glob_pattern_p.c:33
gmtime.c:29
group_member.c:49
hsearch.c:49
hsearch_r.c:106
hsearch_r.c:128
hsearch_r.c:231
./../include/libc-symbols.h:542
inet_addr.c:181
inet_addr.c:93
inet_mkadr.c:55
inet_pton.c:72
iofopncook.c:217
iofputs.c:45
iofwrite.c:53
ioputs.c:48
iovsprintf.c:48
iovsprintf.c:49
iovsscanf.c:45
isctype.c:28
iswctype.c:37
iswctype_l.c:36
jrand48_r.c:34
lckpwdf.c:142
lckpwdf.c:169
lcong48_r.c:36
localeconv.c:68
localtime.c:32
../login/updwtmp.c:35
lstat.c:55
malloc.c:3314
malloc.c:5383
malloc.c:5578
malloc.c:5581
malloc.c:5582
malloc.c:5583
malloc.c:5585
malloc.c:5586
malloc.c:5587
malloc.c:5588
malloc.c:5590
malloc.c:5591
malloc.c:5593
malloc.c:5594
malloc.c:5595
../math/math-narrow.h:346
./math-narrow.h:284
./math-narrow.h:298
./math-narrow.h:336
./math-narrow.h:341
mbrtowc.c:123
mbsinit.c:38
mbsnrtowcs.c:143
mbsrtowcs.c:31
memccpy.c:42
memmem.c:83
../misc/sbrk.c:62
mknod.c:55
mntent_r.c:187
mntent_r.c:271
mntent_r.c:297
mntent_r.c:52
mntent_r.c:64
newlocale.c:280
ngettext.c:62
../nptl/pthread_mutex_lock.c:612
../nptl/pthread_mutex_timedlock.c:651
../nptl/pthread_mutex_trylock.c:417
../nptl/sigaction.c:33
nrand48_r.c:37
on_exit.c:46
../posix/glob.c:1164
printf.c:40
printf_chk.c:44
printf_size.c:218
pthread_atfork.c:56
pthread_attr_destroy.c:42
pthread_attr_getaffinity.c:60
pthread_attr_getdetachstate.c:34
pthread_attr_getinheritsched.c:35
pthread_attr_getschedparam.c:36
pthread_attr_getschedpolicy.c:34
pthread_attr_getscope.c:35
pthread_attr_getstack.c:40
pthread_attr_getstacksize.c:43
pthread_attr_init.c:51
pthread_attr_setaffinity.c:59
pthread_attr_setdetachstate.c:43
pthread_attr_setinheritsched.c:42
pthread_attr_setschedparam.c:43
pthread_attr_setschedpolicy.c:43
pthread_attr_setscope.c:46
pthread_attr_setstack.c:58
pthread_attr_setstacksize.c:46
pthread_condattr_destroy.c:28
pthread_condattr_init.c:36
pthread_cond_broadcast.c:91
pthread_cond_destroy.c:62
pthread_cond_init.c:53
pthread_cond_signal.c:99
pthread_create.c:885
pthread_detach.c:56
pthread_equal.c:27
pthread_getschedparam.c:73
pthread_getspecific.c:66
pthread_key_create.c:50
pthread_key_delete.c:42
pthread_mutexattr_destroy.c:27
pthread_mutexattr_init.c:40
pthread_mutexattr_settype.c:43
pthread_mutex_destroy.c:44
pthread_mutex_init.c:165
pthread_mutex_unlock.c:358
pthread_rwlock_destroy.c:31
pthread_rwlock_init.c:50
pthread_rwlock_rdlock.c:32
pthread_rwlock_tryrdlock.c:112
pthread_rwlock_trywrlock.c:61
pthread_rwlock_unlock.c:47
pthread_rwlock_wrlock.c:32
pthread_setschedparam.c:72
pthread_setspecific.c:92
putc.c:39
qefgcvt.c:22
qefgcvt_r.c:23
quick_exit.c:37
random.c:215
random.c:216
random.c:246
random.c:273
random.c:300
random_r.c:216
random_r.c:284
random_r.c:339
random_r.c:400
reg-modifier.c:96
reg-printf.c:77
reg-type.c:61
revoke.c:29
sbrk.c:62
./s_cacosh_template.c:94
./s_cacos_template.c:55
scanf.c:38
./s_canonicalize_template.c:37
./s_casinh_template.c:70
./s_casin_template.c:62
./s_catanh_template.c:136
./s_catan_template.c:142
./s_ccosh_template.c:138
./s_ccos_template.c:35
./s_cexp_template.c:151
./s_clog10_template.c:123
./s_clog_template.c:116
./s_cpow_template.c:29
./s_cproj_template.c:40
./s_csinh_template.c:157
./s_csin_template.c:162
./s_csqrt_template.c:161
./s_ctanh_template.c:130
./s_ctan_template.c:130
secure-getenv.c:31
seed48_r.c:39
sem_destroy.c:32
sem_getvalue.c:45
sem_init.c:64
sem_post.c:79
sem_wait.c:87
setenv.c:337
setenv.c:338
setenv.c:339
../setjmp/longjmp.c:48
../setjmp/longjmp.c:49
../setjmp/longjmp.c:50
./s_fdim_template.c:36
./s_fmax_template.c:35
./s_fmin_template.c:35
../signal/sigreturn.c:29
./s_ldexp_template.c:29
./s_ldexp_template.c:31
./s_nan_template.c:33
s_nextafter.c:88
snprintf.c:39
snprintf_chk.c:39
sprintf.c:38
sprintf.c:39
sprintf_chk.c:36
srand48_r.c:39
sscanf.c:38
sscanf.c:41
./s_significand_template.c:33
stat.c:54
../stdlib/strtod_l.c:51
../stdlib/strtof_l.c:34
../stdlib/strtol.c:108
../stdlib/strtol.c:36
../stdlib/strtol.c:44
../stdlib/strtol.c:54
../stdlib/strtol_l.c:66
../stdlib/strtol_l.c:72
../stdlib/strtol_l.c:80
../stdlib/strtol_l.c:86
strcasestr.c:95
strcoll_l.c:373
strdup.c:53
_strerror.c:73
strfmon.c:39
strfmon_l.c:618
strftime_l.c:1451
strndup.c:55
strptime_l.c:1251
strsep.c:47
strtod_l.c:55
strtof_l.c:38
strverscmp.c:107
strxfrm_l.c:746
swprintf.c:36
swscanf.c:36
../sysdeps/i386/fpu/s_atanl.c:22
../sysdeps/i386/fpu/s_isinfl.c:32
../sysdeps/i386/fpu/s_isnanl.c:43
../sysdeps/i386/fpu/s_logbl.c:19
../sysdeps/i386/fpu/s_nextafterl.c:125
../sysdeps/i386/fpu/s_nextafterl.c:127
../sysdeps/i386/fpu/s_nexttoward.c:90
../sysdeps/i386/fpu/s_nexttowardf.c:78
../sysdeps/i386/fpu/s_rintl.c:19
../sysdeps/i386/fpu/s_significandl.c:18
../sysdeps/ieee754/dbl-64/s_asinh.c:70
../sysdeps/ieee754/dbl-64/s_cbrt.c:72
../sysdeps/ieee754/dbl-64/s_erf.c:300
../sysdeps/ieee754/dbl-64/s_erf.c:423
../sysdeps/ieee754/dbl-64/s_expm1.c:261
../sysdeps/ieee754/dbl-64/s_setpayload.c:4
../sysdeps/ieee754/dbl-64/s_setpayloadsig.c:4
../sysdeps/ieee754/dbl-64/s_sincos.c:104
../sysdeps/ieee754/dbl-64/s_tanh.c:96
../sysdeps/ieee754/dbl-64/wordsize-64/s_finite.c:32
../sysdeps/ieee754/dbl-64/wordsize-64/s_frexp.c:66
../sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c:34
../sysdeps/ieee754/dbl-64/wordsize-64/s_llround.c:67
../sysdeps/ieee754/dbl-64/wordsize-64/s_llround.c:74
../sysdeps/ieee754/dbl-64/wordsize-64/s_logb.c:46
../sysdeps/ieee754/dbl-64/wordsize-64/s_modf.c:64
../sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c:65
../sysdeps/ieee754/dbl-64/wordsize-64/s_remquo.c:111
../sysdeps/ieee754/dbl-64/wordsize-64/s_round.c:66
../sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c:49
../sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c:46
../sysdeps/ieee754/float128/../ldbl-128/s_ceill.c:68
../sysdeps/ieee754/float128/../ldbl-128/s_copysignl.c:40
../sysdeps/ieee754/float128/../ldbl-128/s_fabsl.c:35
../sysdeps/ieee754/float128/../ldbl-128/s_floorl.c:69
../sysdeps/ieee754/float128/../ldbl-128/s_fmal.c:300
../sysdeps/ieee754/float128/../ldbl-128/s_nearbyintl.c:69
../sysdeps/ieee754/float128/../ldbl-128/s_rintl.c:64
../sysdeps/ieee754/float128/../ldbl-128/s_roundl.c:82
../sysdeps/ieee754/float128/../ldbl-128/s_totalorderl.c:56
../sysdeps/ieee754/float128/../ldbl-128/s_totalordermagl.c:50
../sysdeps/ieee754/float128/../ldbl-128/s_truncl.c:58
../sysdeps/ieee754/float128/s_setpayloadf128.c:5
../sysdeps/ieee754/float128/s_setpayloadsigf128.c:5
../sysdeps/ieee754/float128/strtof128_l.c:35
../sysdeps/ieee754/float128/strtof128_l.c:39
../sysdeps/ieee754/flt-32/s_asinhf.c:52
../sysdeps/ieee754/flt-32/s_atanf.c:103
../sysdeps/ieee754/flt-32/s_cbrtf.c:63
../sysdeps/ieee754/flt-32/s_erff.c:158
../sysdeps/ieee754/flt-32/s_erff.c:233
../sysdeps/ieee754/flt-32/s_expm1f.c:133
../sysdeps/ieee754/flt-32/s_finitef.c:41
../sysdeps/ieee754/flt-32/s_frexpf.c:45
../sysdeps/ieee754/flt-32/s_isinff.c:29
../sysdeps/ieee754/flt-32/s_isnanf.c:38
../sysdeps/ieee754/flt-32/s_llroundf.c:74
../sysdeps/ieee754/flt-32/s_logbf.c:42
../sysdeps/ieee754/flt-32/s_lroundf.c:74
../sysdeps/ieee754/flt-32/s_modff.c:55
../sysdeps/ieee754/flt-32/s_nearbyintf.c:62
../sysdeps/ieee754/flt-32/s_nextafterf.c:75
../sysdeps/ieee754/flt-32/s_remquof.c:111
../sysdeps/ieee754/flt-32/s_roundf.c:65
../sysdeps/ieee754/flt-32/s_setpayloadf.c:4
../sysdeps/ieee754/flt-32/s_setpayloadsigf.c:4
../sysdeps/ieee754/flt-32/s_tanf.c:77
../sysdeps/ieee754/flt-32/s_tanhf.c:64
../sysdeps/ieee754/flt-32/s_totalorderf.c:48
../sysdeps/ieee754/flt-32/s_totalordermagf.c:46
../sysdeps/ieee754/ldbl-96/s_asinhl.c:67
../sysdeps/ieee754/ldbl-96/s_cbrtl.c:70
../sysdeps/ieee754/ldbl-96/s_cosl.c:89
../sysdeps/ieee754/ldbl-96/s_erfl.c:340
../sysdeps/ieee754/ldbl-96/s_erfl.c:453
../sysdeps/ieee754/ldbl-96/s_fmal.c:297
../sysdeps/ieee754/ldbl-96/s_frexpl.c:62
../sysdeps/ieee754/ldbl-96/s_llroundl.c:90
../sysdeps/ieee754/ldbl-96/s_lroundl.c:112
../sysdeps/ieee754/ldbl-96/s_modfl.c:74
../sysdeps/ieee754/ldbl-96/s_remquol.c:112
../sysdeps/ieee754/ldbl-96/s_roundl.c:94
../sysdeps/ieee754/ldbl-96/s_setpayloadl.c:4
../sysdeps/ieee754/ldbl-96/s_setpayloadsigl.c:4
../sysdeps/ieee754/ldbl-96/s_sincosl.c:77
../sysdeps/ieee754/ldbl-96/s_sinl.c:89
../sysdeps/ieee754/ldbl-96/s_tanhl.c:92
../sysdeps/ieee754/ldbl-96/s_tanl.c:82
../sysdeps/ieee754/ldbl-96/s_totalorderl.c:59
../sysdeps/ieee754/ldbl-96/s_totalordermagl.c:53
../sysdeps/ieee754/ldbl-96/strtold_l.c:26
../sysdeps/ieee754/ldbl-96/strtold_l.c:30
../sysdeps/nptl/fork.c:159
../sysdeps/posix/clock_getres.c:118
../sysdeps/posix/dirfd.c:30
../sysdeps/posix/euidaccess.c:185
../sysdeps/posix/euidaccess.c:186
../sysdeps/posix/fpathconf.c:226
../sysdeps/posix/getdtsz.c:35
../sysdeps/posix/gethostname.c:46
../sysdeps/posix/isatty.c:30
../sysdeps/posix/pathconf.c:224
../sysdeps/posix/profil.c:118
../sysdeps/posix/rewinddir.c:41
../sysdeps/posix/signal.c:51
../sysdeps/posix/signal.c:52
../sysdeps/posix/sprofil.c:353
../sysdeps/posix/sysconf.c:1204
../sysdeps/posix/ulimit.c:92
../sysdeps/pthread/aio_misc.c:292
../sysdeps/pthread/flockfile.c:30
../sysdeps/pthread/flockfile.c:31
../sysdeps/pthread/ftrylockfile.c:30
../sysdeps/pthread/ftrylockfile.c:31
../sysdeps/pthread/funlockfile.c:29
../sysdeps/pthread/funlockfile.c:30
../sysdeps/unix/bsd/wait3.c:33
../sysdeps/unix/clock_gettime.c:135
../sysdeps/unix/clock_settime.c:126
../sysdeps/unix/sysv/linux/access.c:32
../sysdeps/unix/sysv/linux/adjtime.c:91
../sysdeps/unix/sysv/linux/alphasort64.c:30
../sysdeps/unix/sysv/linux/clock_getcpuclockid.c:48
../sysdeps/unix/sysv/linux/ftruncate64.c:33
../sysdeps/unix/sysv/linux/ftruncate64.c:37
../sysdeps/unix/sysv/linux/futimes.c:51
../sysdeps/unix/sysv/linux/getcwd.c:130
../sysdeps/unix/sysv/linux/getpagesize.c:32
../sysdeps/unix/sysv/linux/getrlimit64.c:51
../sysdeps/unix/sysv/linux/getsysstats.c:230
../sysdeps/unix/sysv/linux/getsysstats.c:284
../sysdeps/unix/sysv/linux/getsysstats.c:326
../sysdeps/unix/sysv/linux/getsysstats.c:337
../sysdeps/unix/sysv/linux/ifaddrs.c:843
../sysdeps/unix/sysv/linux/ifaddrs.c:853
../sysdeps/unix/sysv/linux/if_index.c:212
../sysdeps/unix/sysv/linux/if_index.c:246
../sysdeps/unix/sysv/linux/if_index.c:66
../sysdeps/unix/sysv/linux/if_index.c:82
../sysdeps/unix/sysv/linux/lseek64.c:41
../sysdeps/unix/sysv/linux/lseek64.c:48
../sysdeps/unix/sysv/linux/mmap64.c:55
../sysdeps/unix/sysv/linux/mmap64.c:59
../sysdeps/unix/sysv/linux/mq_open.c:54
../sysdeps/unix/sysv/linux/msgctl.c:39
../sysdeps/unix/sysv/linux/posix_fadvise64.c:76
../sysdeps/unix/sysv/linux/posix_fadvise64.c:77
../sysdeps/unix/sysv/linux/pthread_getaffinity.c:47
../sysdeps/unix/sysv/linux/pthread_kill.c:59
../sysdeps/unix/sysv/linux/pthread_setaffinity.c:47
../sysdeps/unix/sysv/linux/ptsname.c:167
../sysdeps/unix/sysv/linux/readahead.c:30
../sysdeps/unix/sysv/linux/renameat.c:34
../sysdeps/unix/sysv/linux/sched_getaffinity.c:47
../sysdeps/unix/sysv/linux/semctl.c:70
../sysdeps/unix/sysv/linux/setgid.c:33
../sysdeps/unix/sysv/linux/setregid.c:33
../sysdeps/unix/sysv/linux/setresgid.c:34
../sysdeps/unix/sysv/linux/setresuid.c:34
../sysdeps/unix/sysv/linux/setreuid.c:33
../sysdeps/unix/sysv/linux/setrlimit64.c:43
../sysdeps/unix/sysv/linux/setuid.c:32
../sysdeps/unix/sysv/linux/shmctl.c:43
../sysdeps/unix/sysv/linux/sigqueue.c:42
../sysdeps/unix/sysv/linux/sysctl.c:43
../sysdeps/unix/sysv/linux/tcgetattr.c:80
../sysdeps/unix/sysv/linux/tcsetattr.c:80
../sysdeps/unix/sysv/linux/times.c:67
../sysdeps/unix/sysv/linux/truncate64.c:33
../sysdeps/unix/sysv/linux/truncate64.c:36
../sysdeps/unix/sysv/linux/ttyname_r.c:200
../sysdeps/unix/sysv/linux/utimes.c:37
../sysdeps/unix/sysv/linux/versionsort64.c:30
../sysdeps/unix/sysv/linux/wordsize-64/../fstatvfs.c:39
../sysdeps/unix/sysv/linux/wordsize-64/../../../../pthread/lio_listio.c:248
../sysdeps/unix/sysv/linux/wordsize-64/../statvfs.c:39
../sysdeps/unix/sysv/linux/x86_64/brk.c:41
../sysdeps/unix/sysv/linux/x86_64/makecontext.c:157
../sysdeps/unix/sysv/linux/x86_64/../sched_setaffinity.c:45
../sysdeps/unix/sysv/linux/x86_64/sigprocmask.c:39
../sysdeps/unix/sysv/linux/x86_64/timer_create.c:28
../sysdeps/unix/sysv/linux/x86_64/timer_delete.c:27
../sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c:27
../sysdeps/unix/sysv/linux/x86_64/timer_gettime.c:27
../sysdeps/unix/sysv/linux/x86_64/timer_settime.c:27
../sysdeps/unix/sysv/linux/x86/gettimeofday.c:60
../sysdeps/x86_64/ffs.c:37
../sysdeps/x86_64/fpu/fegetenv.c:34
../sysdeps/x86_64/fpu/fegetround.c:34
../sysdeps/x86_64/fpu/feholdexcpt.c:40
../sysdeps/x86_64/fpu/fesetenv.c:113
../sysdeps/x86_64/fpu/fesetround.c:47
../sysdeps/x86_64/fpu/feupdateenv.c:52
../sysdeps/x86_64/fpu/multiarch/e_exp2f.c:33
../sysdeps/x86_64/fpu/multiarch/e_expf.c:36
../sysdeps/x86_64/fpu/multiarch/e_log2f.c:36
../sysdeps/x86_64/fpu/multiarch/e_logf.c:36
../sysdeps/x86_64/fpu/multiarch/e_powf.c:39
../sysdeps/x86_64/fpu/multiarch/s_atan.c:27
../sysdeps/x86_64/fpu/multiarch/s_ceil.c:32
../sysdeps/x86_64/fpu/multiarch/s_ceilf.c:32
../sysdeps/x86_64/fpu/multiarch/s_cosf.c:28
../sysdeps/x86_64/fpu/multiarch/s_floor.c:32
../sysdeps/x86_64/fpu/multiarch/s_floorf.c:32
../sysdeps/x86_64/fpu/multiarch/s_fma.c:47
../sysdeps/x86_64/fpu/multiarch/s_fmaf.c:46
../sysdeps/x86_64/fpu/multiarch/s_nearbyint.c:32
../sysdeps/x86_64/fpu/multiarch/s_nearbyintf.c:32
../sysdeps/x86_64/fpu/multiarch/s_rint.c:32
../sysdeps/x86_64/fpu/multiarch/s_rintf.c:32
../sysdeps/x86_64/fpu/multiarch/s_sin.c:28
../sysdeps/x86_64/fpu/multiarch/s_sin.c:35
../sysdeps/x86_64/fpu/multiarch/s_sincosf.c:28
../sysdeps/x86_64/fpu/multiarch/s_sinf.c:28
../sysdeps/x86_64/fpu/multiarch/s_tan.c:27
../sysdeps/x86_64/fpu/multiarch/s_trunc.c:32
../sysdeps/x86_64/fpu/multiarch/s_truncf.c:32
../sysdeps/x86_64/fpu/s_fabs.c:27
../sysdeps/x86_64/fpu/s_fabsf.c:27
../sysdeps/x86_64/multiarch/memcpy.c:38
../sysdeps/x86_64/multiarch/memmove.c:32
../sysdeps/x86_64/multiarch/mempcpy.c:35
../sysdeps/x86_64/multiarch/stpcpy.c:35
../sysdeps/x86_64/multiarch/stpncpy.c:33
../sysdeps/x86_64/multiarch/strcasecmp.c:34
../sysdeps/x86_64/multiarch/strncase.c:34
../sysdeps/x86_64/multiarch/strnlen.c:32
../sysdeps/x86_64/multiarch/strstr.c:50
../sysdeps/x86_64/multiarch/wcslen.c:30
../sysdeps/x86_64/multiarch/wcsnlen.c:50
textdomain.c:124
towctrans.c:35
towctrans_l.c:35
tzset.c:563
uselocale.c:75
utmpname.c:76
version.c:54
version.c:62
vfprintf.c:2360
vfprintf_chk.c:42
vfscanf.c:3066
vprintf.c:33
vprintf_chk.c:41
vscanf.c:37
vsnprintf.c:121
vsnprintf_chk.c:70
vsprintf_chk.c:89
w_acos_compat.c:41
w_acosf_compat.c:41
w_acosh_compat.c:36
w_acoshf_compat.c:36
w_acoshl_compat.c:36
./w_acosh_template.c:37
w_acosl_compat.c:41
./w_acos_template.c:37
w_asin_compat.c:41
w_asinf_compat.c:41
w_asinl_compat.c:41
./w_asin_template.c:37
w_atan2_compat.c:44
w_atan2f_compat.c:44
w_atan2l_compat.c:44
./w_atan2_template.c:37
w_atanh_compat.c:39
w_atanhf_compat.c:39
w_atanhl_compat.c:39
./w_atanh_template.c:43
wcfuncs.c:37
wcfuncs.c:81
wcfuncs.c:93
wcfuncs_l.c:39
wcfuncs_l.c:64
wcfuncs_l.c:74
w_cosh_compat.c:33
w_coshf_compat.c:37
w_coshl_compat.c:38
./w_cosh_template.c:38
wcpcpy.c:47
wcpncpy.c:86
wcrtomb.c:114
wcscasecmp.c:66
wcscasecmp_l.c:23
wcscat.c:52
wcschrnul.c:37
wcscoll_l.c:34
wcsftime_l.c:25
wcsncase.c:68
wcsncase_l.c:23
wcsncpy.c:87
wcsnrtombs.c:148
wcsrtombs.c:145
wcsxfrm_l.c:34
wctrans.c:48
wctrans_l.c:47
wctype.c:48
wctype_l.c:49
w_exp10_compat.c:41
w_exp10f_compat.c:41
w_exp10l_compat.c:41
./w_exp10_template.c:38
w_exp2_compat.c:22
w_exp2l_compat.c:22
./w_exp2_template.c:38
w_exp_compat.c:37
w_expl_compat.c:45
./w_exp_template.c:39
w_fmod_compat.c:36
w_fmodf_compat.c:36
w_fmodl_compat.c:36
./w_fmod_template.c:38
w_hypot_compat.c:34
w_hypotf_compat.c:38
w_hypotl_compat.c:39
./w_hypot_template.c:38
./w_ilogb_template.c:39
w_j0_compat.c:38
w_j0_compat.c:67
w_j0f_compat.c:38
w_j0f_compat.c:68
w_j0l_compat.c:38
w_j0l_compat.c:67
./w_j0_template.c:34
./w_j0_template.c:50
w_j1_compat.c:38
w_j1_compat.c:67
w_j1f_compat.c:38
w_j1f_compat.c:68
w_j1l_compat.c:38
w_j1l_compat.c:67
./w_j1_template.c:34
./w_j1_template.c:50
w_jn_compat.c:38
w_jn_compat.c:67
w_jnf_compat.c:38
w_jnf_compat.c:68
w_jnl_compat.c:70
w_jnl_compat.c:94
./w_jn_template.c:34
./w_jn_template.c:50
w_lgamma.c:5
w_lgammaf.c:5
./w_lgammaf_main.c:44
./w_lgammaf_main.c:45
w_lgammaf_r_compat.c:40
w_lgammal.c:5
./w_lgammal_main.c:51
./w_lgammal_main.c:52
w_lgammal_r_compat.c:41
./w_lgamma_main.c:55
./w_lgamma_main.c:56
w_lgamma_r_compat.c:37
./w_lgamma_r_template.c:46
./w_lgamma_template.c:41
w_log10_compat.c:47
w_log10f_compat.c:47
w_log10l_compat.c:47
./w_log10_template.c:43
./w_log1p_template.c:35
w_log2_compat.c:47
w_log2l_compat.c:47
./w_log2_template.c:43
w_log_compat.c:47
w_logl_compat.c:47
./w_log_template.c:43
wmemcpy.c:28
wmemmove.c:28
wmempcpy.c:29
w_pow_compat.c:63
w_powl_compat.c:63
./w_pow_template.c:50
w_remainder.c:4
w_remainder_compat.c:37
w_remainder_compat.c:38
w_remainderf.c:4
w_remainderf_compat.c:37
w_remainderf_compat.c:38
w_remainderl.c:4
w_remainderl_compat.c:37
w_remainderl_compat.c:38
./w_remainder_template.c:38
w_scalb_compat.c:81
w_scalbf_compat.c:81
w_scalbl_compat.c:81
./w_scalbln_template.c:36
w_sinh_compat.c:33
w_sinhf_compat.c:36
w_sinhl_compat.c:37
./w_sinh_template.c:38
w_sqrt_compat.c:36
w_sqrtf_compat.c:36
w_sqrtl_compat.c:36
./w_sqrt_template.c:38
w_tgamma_compat.c:45
w_tgammaf_compat.c:47
w_tgammal_compat.c:48
./w_tgamma_template.c:53