Use libc_hidden_* for __cmsg_nxthdr (bug 15105)

Message ID alpine.DEB.2.20.1802132106070.25645@digraph.polyomino.org.uk
State New
Headers show
Series
  • Use libc_hidden_* for __cmsg_nxthdr (bug 15105)
Related show

Commit Message

Joseph Myers Feb. 13, 2018, 9:06 p.m.
Among other localplt test failures when building with -Os, there are
libc.so PLT references for __cmsg_nxthdr.  This is a simple case of a
function that is inlined for -O2 but not for -Os; this patch adds
libc_hidden_proto / libc_hidden_def for it to avoid a localplt failure
even when it is not inlined.

Tested for x86_64 (both that it removes this particular localplt
failure for -Os - but other such failures remain so the bug can't yet
be closed - and that the testsuite continues to pass without -Os).

2018-02-13  Joseph Myers  <joseph@codesourcery.com>

	[BZ #15105]
	* include/sys/socket.h [!_ISOMAC] (__cmsg_nxthdr): Use
	libc_hidden_proto.
	* sysdeps/unix/sysv/linux/cmsg_nxthdr.c (__cmsg_nxthdr): Use
	libc_hidden_def.

Comments

Adhemerval Zanella Feb. 15, 2018, 6:49 p.m. | #1
On 13/02/2018 19:06, Joseph Myers wrote:
> Among other localplt test failures when building with -Os, there are
> libc.so PLT references for __cmsg_nxthdr.  This is a simple case of a
> function that is inlined for -O2 but not for -Os; this patch adds
> libc_hidden_proto / libc_hidden_def for it to avoid a localplt failure
> even when it is not inlined.
> 
> Tested for x86_64 (both that it removes this particular localplt
> failure for -Os - but other such failures remain so the bug can't yet
> be closed - and that the testsuite continues to pass without -Os).
> 
> 2018-02-13  Joseph Myers  <joseph@codesourcery.com>
> 
> 	[BZ #15105]
> 	* include/sys/socket.h [!_ISOMAC] (__cmsg_nxthdr): Use
> 	libc_hidden_proto.
> 	* sysdeps/unix/sysv/linux/cmsg_nxthdr.c (__cmsg_nxthdr): Use
> 	libc_hidden_def.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>

> 
> diff --git a/include/sys/socket.h b/include/sys/socket.h
> index baec6e6..26db0e0 100644
> --- a/include/sys/socket.h
> +++ b/include/sys/socket.h
> @@ -154,5 +154,7 @@ libc_hidden_proto (__libc_sa_len)
>  # define SA_LEN(_x)      __libc_sa_len((_x)->sa_family)
>  #endif
>  
> +libc_hidden_proto (__cmsg_nxthdr)
> +
>  #endif
>  #endif
> diff --git a/sysdeps/unix/sysv/linux/cmsg_nxthdr.c b/sysdeps/unix/sysv/linux/cmsg_nxthdr.c
> index fa0468e..bab0be6 100644
> --- a/sysdeps/unix/sysv/linux/cmsg_nxthdr.c
> +++ b/sysdeps/unix/sysv/linux/cmsg_nxthdr.c
> @@ -37,3 +37,4 @@ __cmsg_nxthdr (struct msghdr *mhdr, struct cmsghdr *cmsg)
>      return NULL;
>    return cmsg;
>  }
> +libc_hidden_def (__cmsg_nxthdr)
>

Patch

diff --git a/include/sys/socket.h b/include/sys/socket.h
index baec6e6..26db0e0 100644
--- a/include/sys/socket.h
+++ b/include/sys/socket.h
@@ -154,5 +154,7 @@  libc_hidden_proto (__libc_sa_len)
 # define SA_LEN(_x)      __libc_sa_len((_x)->sa_family)
 #endif
 
+libc_hidden_proto (__cmsg_nxthdr)
+
 #endif
 #endif
diff --git a/sysdeps/unix/sysv/linux/cmsg_nxthdr.c b/sysdeps/unix/sysv/linux/cmsg_nxthdr.c
index fa0468e..bab0be6 100644
--- a/sysdeps/unix/sysv/linux/cmsg_nxthdr.c
+++ b/sysdeps/unix/sysv/linux/cmsg_nxthdr.c
@@ -37,3 +37,4 @@  __cmsg_nxthdr (struct msghdr *mhdr, struct cmsghdr *cmsg)
     return NULL;
   return cmsg;
 }
+libc_hidden_def (__cmsg_nxthdr)