aarch64: Avoid hidden symbols for memcpy/memmove into static binaries

Message ID 1512041196-14726-1-git-send-email-siddhesh@sourceware.org
State Committed
Headers

Commit Message

Siddhesh Poyarekar Nov. 30, 2017, 11:26 a.m. UTC
  The __GI_* symbol aliases for __memcpy_generic are unnecessary since
they're never used.  Add them only for libc.so to avoid PLT.

	* sysdeps/aarch64/multiarch/memcpy_generic.S (__GI_memcpy):
	Define only for libc.so.
---
 sysdeps/aarch64/multiarch/memcpy_generic.S | 2 ++
 1 file changed, 2 insertions(+)
  

Comments

Siddhesh Poyarekar Dec. 4, 2017, 12:44 p.m. UTC | #1
Ping?

On Thursday 30 November 2017 04:56 PM, Siddhesh Poyarekar wrote:
> The __GI_* symbol aliases for __memcpy_generic are unnecessary since
> they're never used.  Add them only for libc.so to avoid PLT.
> 
> 	* sysdeps/aarch64/multiarch/memcpy_generic.S (__GI_memcpy):
> 	Define only for libc.so.
> ---
>  sysdeps/aarch64/multiarch/memcpy_generic.S | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/sysdeps/aarch64/multiarch/memcpy_generic.S b/sysdeps/aarch64/multiarch/memcpy_generic.S
> index 041a779..edb2e52 100644
> --- a/sysdeps/aarch64/multiarch/memcpy_generic.S
> +++ b/sysdeps/aarch64/multiarch/memcpy_generic.S
> @@ -33,9 +33,11 @@
>  # undef libc_hidden_builtin_def
>  # define libc_hidden_builtin_def(name)
>  
> +# ifdef SHARED
>  /* It doesn't make sense to send libc-internal memcpy calls through a PLT. */
>  	.globl __GI_memcpy; __GI_memcpy = __memcpy_generic
>  	.globl __GI_memmove; __GI_memmove = __memmove_generic
> +# endif
>  
>  #endif
>  
>
  
Szabolcs Nagy Dec. 4, 2017, 1:12 p.m. UTC | #2
On 04/12/17 12:44, Siddhesh Poyarekar wrote:
> Ping?
> 
> On Thursday 30 November 2017 04:56 PM, Siddhesh Poyarekar wrote:
>> The __GI_* symbol aliases for __memcpy_generic are unnecessary since
>> they're never used.  Add them only for libc.so to avoid PLT.
...
>> +# ifdef SHARED
>>  /* It doesn't make sense to send libc-internal memcpy calls through a PLT. */
>>  	.globl __GI_memcpy; __GI_memcpy = __memcpy_generic
>>  	.globl __GI_memmove; __GI_memmove = __memmove_generic
>> +# endif
>>  

OK to commit.


i was thinking that some existing macro from
libc-symbols.h would be better, since those already
deal with the #ifdef SHARED (and other cases)

i think

hidden_ver (__memcpy_generic, memcpy)

happens to do the right thing, but it's probably
an abuse of that macro.. and it seems we already
do similar things in other asm files (which means
the libc-symbols.h macros are not that useful..).
  

Patch

diff --git a/sysdeps/aarch64/multiarch/memcpy_generic.S b/sysdeps/aarch64/multiarch/memcpy_generic.S
index 041a779..edb2e52 100644
--- a/sysdeps/aarch64/multiarch/memcpy_generic.S
+++ b/sysdeps/aarch64/multiarch/memcpy_generic.S
@@ -33,9 +33,11 @@ 
 # undef libc_hidden_builtin_def
 # define libc_hidden_builtin_def(name)
 
+# ifdef SHARED
 /* It doesn't make sense to send libc-internal memcpy calls through a PLT. */
 	.globl __GI_memcpy; __GI_memcpy = __memcpy_generic
 	.globl __GI_memmove; __GI_memmove = __memmove_generic
+# endif
 
 #endif