aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2017-10-01 15:10:12 -0700
committerH.J. Lu <hjl.tools@gmail.com>2017-10-01 15:10:27 -0700
commit8345a76018851ba52e05216e3d7c772e24d5da44 (patch)
tree721429a6743345f134c49961c3a0459560d16e08
parentc26dd7c600a2192d031efa2a0fb28b1ded85bf1d (diff)
downloadglibc-8345a76018851ba52e05216e3d7c772e24d5da44.zip
glibc-8345a76018851ba52e05216e3d7c772e24d5da44.tar.gz
glibc-8345a76018851ba52e05216e3d7c772e24d5da44.tar.bz2
Mark internal argp functions with attribute_hidden [BZ #18822]
Mark internal argp functions with attribute_hidden to allow direct access to them within libc.so and libc.a without using GOT nor PLT. [BZ #18822] * argp/argp-fmtstream.c: Include <argp-fmtstream.h>. * argp/argp-fs-xinl.c: Likewise. * argp/argp-help.c: Include <argp.h> and <argp-fmtstream.h>. * argp/argp-parse.c: Include <argp.h>. * argp/argp-xinl.c: Likewise. * include/argp-fmtstream.h: New file. * include/argp.h (__argp_error): Add attribute_hidden. (__argp_failure): Likewise. (__argp_input): Likewise. (__argp_state_help): Likewise.
-rw-r--r--ChangeLog14
-rw-r--r--argp/argp-fmtstream.c2
-rw-r--r--argp/argp-fs-xinl.c2
-rw-r--r--argp/argp-help.c4
-rw-r--r--argp/argp-parse.c2
-rw-r--r--argp/argp-xinl.c2
-rw-r--r--include/argp-fmtstream.h19
-rw-r--r--include/argp.h10
8 files changed, 49 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 15c90bc..a877d9c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,20 @@
2017-10-01 H.J. Lu <hongjiu.lu@intel.com>
[BZ #18822]
+ * argp/argp-fmtstream.c: Include <argp-fmtstream.h>.
+ * argp/argp-fs-xinl.c: Likewise.
+ * argp/argp-help.c: Include <argp.h> and <argp-fmtstream.h>.
+ * argp/argp-parse.c: Include <argp.h>.
+ * argp/argp-xinl.c: Likewise.
+ * include/argp-fmtstream.h: New file.
+ * include/argp.h (__argp_error): Add attribute_hidden.
+ (__argp_failure): Likewise.
+ (__argp_input): Likewise.
+ (__argp_state_help): Likewise.
+
+2017-10-01 H.J. Lu <hongjiu.lu@intel.com>
+
+ [BZ #18822]
* include/wchar.h (____wcstof_l_internal): New prototype.
(____wcstod_l_internal): Likewise.
(____wcstold_l_internal): Likewise.
diff --git a/argp/argp-fmtstream.c b/argp/argp-fmtstream.c
index 9e41708..f12c265 100644
--- a/argp/argp-fmtstream.c
+++ b/argp/argp-fmtstream.c
@@ -30,7 +30,7 @@
#include <stdarg.h>
#include <ctype.h>
-#include "argp-fmtstream.h"
+#include <argp-fmtstream.h>
#include "argp-namefrob.h"
#ifndef ARGP_FMTSTREAM_USE_LINEWRAP
diff --git a/argp/argp-fs-xinl.c b/argp/argp-fs-xinl.c
index f0ce509..8ebbb8e 100644
--- a/argp/argp-fs-xinl.c
+++ b/argp/argp-fs-xinl.c
@@ -24,7 +24,7 @@
#define ARGP_FS_EI
#undef __OPTIMIZE__
#define __OPTIMIZE__ 1
-#include "argp-fmtstream.h"
+#include <argp-fmtstream.h>
#if 0
/* Not exported. */
diff --git a/argp/argp-help.c b/argp/argp-help.c
index e704c5a..821d98c 100644
--- a/argp/argp-help.c
+++ b/argp/argp-help.c
@@ -79,8 +79,8 @@ char *strerror (int errnum);
# endif
#endif
-#include "argp.h"
-#include "argp-fmtstream.h"
+#include <argp.h>
+#include <argp-fmtstream.h>
#include "argp-namefrob.h"
#ifndef SIZE_MAX
diff --git a/argp/argp-parse.c b/argp/argp-parse.c
index 662eed3..691c462 100644
--- a/argp/argp-parse.c
+++ b/argp/argp-parse.c
@@ -62,7 +62,7 @@ char *alloca ();
# define N_(msgid) (msgid)
#endif
-#include "argp.h"
+#include <argp.h>
#include "argp-namefrob.h"
/* Getopt return values. */
diff --git a/argp/argp-xinl.c b/argp/argp-xinl.c
index 0b45bdc..206d0e4 100644
--- a/argp/argp-xinl.c
+++ b/argp/argp-xinl.c
@@ -31,7 +31,7 @@
#define ARGP_EI
#undef __OPTIMIZE__
#define __OPTIMIZE__ 1
-#include "argp.h"
+#include <argp.h>
/* Add weak aliases. */
#if _LIBC - 0 && defined (weak_alias)
diff --git a/include/argp-fmtstream.h b/include/argp-fmtstream.h
new file mode 100644
index 0000000..45c65ce
--- /dev/null
+++ b/include/argp-fmtstream.h
@@ -0,0 +1,19 @@
+#ifndef _ARGP_FMTSTREAM_H
+#include <argp/argp-fmtstream.h>
+
+#ifndef _ISOMAC
+extern __typeof (__argp_fmtstream_ensure) __argp_fmtstream_ensure
+ attribute_hidden;
+extern __typeof (__argp_fmtstream_free) __argp_fmtstream_free
+ attribute_hidden;
+extern __typeof (__argp_fmtstream_printf) __argp_fmtstream_printf
+ attribute_hidden;
+extern __typeof (__argp_fmtstream_update) __argp_fmtstream_update
+ attribute_hidden;
+extern __typeof (__argp_fmtstream_write) __argp_fmtstream_write
+ attribute_hidden;
+extern __typeof (__argp_make_fmtstream) __argp_make_fmtstream
+ attribute_hidden;
+#endif
+
+#endif
diff --git a/include/argp.h b/include/argp.h
index 92be5f9..6cf8782 100644
--- a/include/argp.h
+++ b/include/argp.h
@@ -1 +1,11 @@
+#ifndef _ARGP_H
#include <argp/argp.h>
+
+#ifndef _ISOMAC
+extern __typeof (__argp_error) __argp_error attribute_hidden;
+extern __typeof (__argp_failure) __argp_failure attribute_hidden;
+extern __typeof (__argp_input) __argp_input attribute_hidden;
+extern __typeof (__argp_state_help) __argp_state_help attribute_hidden;
+#endif
+
+#endif