summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2017-10-01 15:52:56 -0700
committerH.J. Lu <hjl.tools@gmail.com>2017-10-01 15:53:15 -0700
commitb68f8620561d7658b475eb512978d3c33d8a4547 (patch)
treec8f020413abe4033585fbb140e7dab24a2f025bf
parent59c04e67631d370738b80923d42d4d1539d8f95f (diff)
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--ChangeLog11
-rw-r--r--include/regex.h6
-rw-r--r--posix/regcomp.c2
-rw-r--r--posix/regexec.c2
4 files changed, 20 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 4ee574002d..3726fac199 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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 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);