[41/58] Hide internal idna functions [BZ #18822]

Message ID 20170901180029.9527-42-hjl.tools@gmail.com
State Committed
Commit 43b7dfd1b6cfd1b603e96270dc6a0b1758f81a13
Headers

Commit Message

H.J. Lu Sept. 1, 2017, 6 p.m. UTC
  Hide internal idna functions to allow direct access within libc.so and
libc.a without using GOT nor PLT.

	[BZ #18822]
	* include/idna.h: New file.
	* inet/getnameinfo.c: Include <idna.h> instead of
	<libidn/idna.h>.
	(__idna_to_unicode_lzlz): Removed.
	* sysdeps/posix/getaddrinfo.c: Include <idna.h> instead of
	<libidn/idna.h>.
	(__idna_to_ascii_lz): Removed.
	(__idna_to_unicode_lzlz): Likewise.
---
 include/idna.h              | 8 ++++++++
 inet/getnameinfo.c          | 4 +---
 sysdeps/posix/getaddrinfo.c | 5 +----
 3 files changed, 10 insertions(+), 7 deletions(-)
 create mode 100644 include/idna.h
  

Comments

H.J. Lu Oct. 2, 2017, 12:32 a.m. UTC | #1
On 9/1/17, H.J. Lu <hjl.tools@gmail.com> wrote:
> Hide internal idna functions to allow direct access within libc.so and
> libc.a without using GOT nor PLT.
>
> 	[BZ #18822]
> 	* include/idna.h: New file.
> 	* inet/getnameinfo.c: Include <idna.h> instead of
> 	<libidn/idna.h>.
> 	(__idna_to_unicode_lzlz): Removed.
> 	* sysdeps/posix/getaddrinfo.c: Include <idna.h> instead of
> 	<libidn/idna.h>.
> 	(__idna_to_ascii_lz): Removed.
> 	(__idna_to_unicode_lzlz): Likewise.

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

Patch

diff --git a/include/idna.h b/include/idna.h
new file mode 100644
index 0000000000..dcb271d575
--- /dev/null
+++ b/include/idna.h
@@ -0,0 +1,8 @@ 
+#ifndef _IDNA_H
+#include <libidn/idna.h>
+
+extern __typeof (idna_to_ascii_lz) __idna_to_ascii_lz attribute_hidden;
+extern __typeof (idna_to_unicode_lzlz ) __idna_to_unicode_lzlz
+     attribute_hidden;
+
+#endif
diff --git a/inet/getnameinfo.c b/inet/getnameinfo.c
index b41e555f3c..292e087362 100644
--- a/inet/getnameinfo.c
+++ b/inet/getnameinfo.c
@@ -73,9 +73,7 @@  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include <scratch_buffer.h>
 
 #ifdef HAVE_LIBIDN
-# include <libidn/idna.h>
-extern int __idna_to_unicode_lzlz (const char *input, char **output,
-				   int flags);
+# include <idna.h>
 #endif
 
 #ifndef min
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
index ce099bdf9c..c58d54dff5 100644
--- a/sysdeps/posix/getaddrinfo.c
+++ b/sysdeps/posix/getaddrinfo.c
@@ -86,10 +86,7 @@  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include <inet/net-internal.h>
 
 #ifdef HAVE_LIBIDN
-extern int __idna_to_ascii_lz (const char *input, char **output, int flags);
-extern int __idna_to_unicode_lzlz (const char *input, char **output,
-				   int flags);
-# include <libidn/idna.h>
+# include <idna.h>
 #endif
 
 struct gaih_service