about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2018-02-15 21:00:02 +0000
committerFangrui Song <maskray@google.com>2021-11-19 13:20:26 -0800
commitbf291348a7a7e2e86784e411ec5c18f221690038 (patch)
treecb33c28376a8ea766565800badc95bca4f92a233
parent633d14073f5d2f257e12ceffcdcd2ada51483af5 (diff)
downloadglibc-bf291348a7a7e2e86784e411ec5c18f221690038.tar.gz
glibc-bf291348a7a7e2e86784e411ec5c18f221690038.tar.xz
glibc-bf291348a7a7e2e86784e411ec5c18f221690038.zip
Use libc_hidden_* for argz_next, __argz_next (bug 15105).
Among other localplt test failures when building with -Os, there are
libc.so PLT references for argz_next and __argz_next.  This is a
simple case of functions that are inlined for -O2 but not for -Os;
this patch adds libc_hidden_proto / libc_hidden_def for them to avoid
localplt failures even when not inlined.

Tested for x86_64 (both that it removes these particular localplt
failures for -Os - but other such failures remain so the bug can't yet
be closed - and that the testsuite continues to pass without -Os).

	[BZ #15105]
	* include/argz.h (argz_next): Use libc_hidden_proto.
	(__argz_next): Likewise.
	* string-argz-next.c (__argz_next): Use libc_hidden_def.
	(argz_next): Use libc_hidden_weak.

(cherry picked from commit 055ac2a7eeb14755e946440af3d2cdfe95f18f8e)
-rw-r--r--include/argz.h2
-rw-r--r--string/argz-next.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/include/argz.h b/include/argz.h
index 770f02eefb..e081b2aceb 100644
--- a/include/argz.h
+++ b/include/argz.h
@@ -39,6 +39,8 @@ extern error_t __argz_replace (char **__restrict __argz,
 libc_hidden_proto (argz_delete)
 libc_hidden_proto (__argz_count)
 libc_hidden_proto (__argz_stringify)
+libc_hidden_proto (argz_next)
+libc_hidden_proto (__argz_next)
 
 # endif /* !_ISOMAC */
 #endif
diff --git a/string/argz-next.c b/string/argz-next.c
index abce45151a..9200eda4d9 100644
--- a/string/argz-next.c
+++ b/string/argz-next.c
@@ -36,4 +36,6 @@ __argz_next (const char *argz, size_t argz_len, const char *entry)
     else
       return NULL;
 }
+libc_hidden_def (__argz_next)
 weak_alias (__argz_next, argz_next)
+libc_hidden_weak (argz_next)