aarch64: Avoid hidden symbols for memcpy/memmove into static binaries
Commit Message
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
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
>
>
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..).
@@ -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