diff mbox series

[20/58] Hide internal regex functions [BZ #18822]

Message ID 20170901180029.9527-21-hjl.tools@gmail.com
State New
Headers show
Series Hide internal functions in libc.so | expand

Commit Message

H.J. Lu Sept. 1, 2017, 5:59 p.m. UTC
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.
---
 include/regex.h | 6 +++++-
 posix/regcomp.c | 2 ++
 posix/regexec.c | 2 ++
 3 files changed, 9 insertions(+), 1 deletion(-)

Comments

H.J. Lu Oct. 1, 2017, 10:27 p.m. UTC | #1
On 9/1/17, H.J. Lu <hjl.tools@gmail.com> wrote:
> 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.

Tested with build-many-glibcs.py.  I am checking it in.
diff mbox series

Patch

diff --git a/include/regex.h b/include/regex.h
index fd4beeff3d..24eca2c297 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 a5b46139a9..871ae2ffab 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 f46b1f71ca..a96d86d431 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);