diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2017-10-01 15:52:56 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2017-10-01 15:53:15 -0700 |
commit | b68f8620561d7658b475eb512978d3c33d8a4547 (patch) | |
tree | c8f020413abe4033585fbb140e7dab24a2f025bf | |
parent | 59c04e67631d370738b80923d42d4d1539d8f95f (diff) | |
download | glibc-b68f8620561d7658b475eb512978d3c33d8a4547.zip glibc-b68f8620561d7658b475eb512978d3c33d8a4547.tar.gz glibc-b68f8620561d7658b475eb512978d3c33d8a4547.tar.bz2 |
Hide internal regex functions [BZ #18822]
Hide internal regex functions to allow direct access within libc.so and
libc.a without using GOT nor PLT.
[BZ #18822]
* include/regex.h (__re_compile_fastmap): Add attribute_hidden.
(__regcomp): Add libc_hidden_proto.
(__regexec): Likewise.
(__regfree): Likewise.
* posix/regcomp.c (__regcomp): Add libc_hidden_def.
(__regfree): Likewise.
* posix/regexec.c (__regexec): Likewise.
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | include/regex.h | 6 | ||||
-rw-r--r-- | posix/regcomp.c | 2 | ||||
-rw-r--r-- | posix/regexec.c | 2 |
4 files changed, 20 insertions, 1 deletions
@@ -1,6 +1,17 @@ 2017-10-01 H.J. Lu <hongjiu.lu@intel.com> [BZ #18822] + * include/regex.h (__re_compile_fastmap): Add attribute_hidden. + (__regcomp): Add libc_hidden_proto. + (__regexec): Likewise. + (__regfree): Likewise. + * posix/regcomp.c (__regcomp): Add libc_hidden_def. + (__regfree): Likewise. + * posix/regexec.c (__regexec): Likewise. + +2017-10-01 H.J. Lu <hongjiu.lu@intel.com> + + [BZ #18822] * include/utmp.h (__updwtmp): Add libc_hidden_proto. (__getutent): Likewise. (__getutid): Likewise. diff --git a/include/regex.h b/include/regex.h index fd4beef..24eca2c 100644 --- a/include/regex.h +++ b/include/regex.h @@ -8,7 +8,8 @@ extern reg_syntax_t __re_set_syntax (reg_syntax_t syntax); extern const char *__re_compile_pattern (const char *pattern, size_t length, struct re_pattern_buffer *buffer); -extern int __re_compile_fastmap (struct re_pattern_buffer *buffer); +extern int __re_compile_fastmap (struct re_pattern_buffer *buffer) + attribute_hidden; extern int __re_search (struct re_pattern_buffer *buffer, const char *string, int length, int start, int range, @@ -33,13 +34,16 @@ extern void __re_set_registers unsigned num_regs, regoff_t *starts, regoff_t *ends); extern int __regcomp (regex_t *__preg, const char *__pattern, int __cflags); +libc_hidden_proto (__regcomp) extern int __regexec (const regex_t *__preg, const char *__string, size_t __nmatch, regmatch_t __pmatch[], int __eflags); +libc_hidden_proto (__regexec) extern size_t __regerror (int __errcode, const regex_t *__preg, char *__errbuf, size_t __errbuf_size); extern void __regfree (regex_t *__preg); +libc_hidden_proto (__regfree) #endif #endif diff --git a/posix/regcomp.c b/posix/regcomp.c index a5b4613..871ae2f 100644 --- a/posix/regcomp.c +++ b/posix/regcomp.c @@ -517,6 +517,7 @@ regcomp (regex_t *__restrict preg, const char *__restrict pattern, int cflags) return (int) ret; } #ifdef _LIBC +libc_hidden_def (__regcomp) weak_alias (__regcomp, regcomp) #endif @@ -644,6 +645,7 @@ regfree (regex_t *preg) preg->translate = NULL; } #ifdef _LIBC +libc_hidden_def (__regfree) weak_alias (__regfree, regfree) #endif diff --git a/posix/regexec.c b/posix/regexec.c index f46b1f7..a96d86d 100644 --- a/posix/regexec.c +++ b/posix/regexec.c @@ -224,6 +224,8 @@ regexec (const regex_t *__restrict preg, const char *__restrict string, } #ifdef _LIBC +libc_hidden_def (__regexec) + # include <shlib-compat.h> versioned_symbol (libc, __regexec, regexec, GLIBC_2_3_4); |