powerpc64: Remove strcspn ifunc from the loader

Message ID 20210702193223.37956-1-tuliom@linux.ibm.com
State Committed
Headers
Series powerpc64: Remove strcspn ifunc from the loader |

Checks

Context Check Description
dj/TryBot-apply_patch success Patch applied to master at the time it was sent
dj/TryBot-32bit success Build for i686

Commit Message

Tulio Magno Quites Machado Filho July 2, 2021, 7:32 p.m. UTC
  5 years ago, commit 8f1b841e452dbb083112fd036033b7f4af506ba0
unintentionally added an ifunc to the loader.
That modification has not caused any harm so far, but it doesn't add any
value either, because the hwcap information is available later during
libc initialization.

Suggested-by: Anton Blanchard <anton@ozlabs.org>
---
 .../powerpc/powerpc64/multiarch/rtld-strcspn.c | 18 ++++++++++++++++++
 sysdeps/powerpc/powerpc64/multiarch/strcspn.c  |  2 ++
 2 files changed, 20 insertions(+)
 create mode 100644 sysdeps/powerpc/powerpc64/multiarch/rtld-strcspn.c
  

Comments

Paul E Murphy July 2, 2021, 7:56 p.m. UTC | #1
On 7/2/21 2:32 PM, Tulio Magno Quites Machado Filho via Libc-alpha wrote:
> 5 years ago, commit 8f1b841e452dbb083112fd036033b7f4af506ba0
> unintentionally added an ifunc to the loader.
> That modification has not caused any harm so far, but it doesn't add any
> value either, because the hwcap information is available later during
> libc initialization.

Oh, oops. Thanks for fixing this!

> Suggested-by: Anton Blanchard <anton@ozlabs.org>
> ---
>   .../powerpc/powerpc64/multiarch/rtld-strcspn.c | 18 ++++++++++++++++++
>   sysdeps/powerpc/powerpc64/multiarch/strcspn.c  |  2 ++
>   2 files changed, 20 insertions(+)
>   create mode 100644 sysdeps/powerpc/powerpc64/multiarch/rtld-strcspn.c
> 
> diff --git a/sysdeps/powerpc/powerpc64/multiarch/rtld-strcspn.c b/sysdeps/powerpc/powerpc64/multiarch/rtld-strcspn.c
> new file mode 100644
> index 0000000000..fcb9682e58
> --- /dev/null
> +++ b/sysdeps/powerpc/powerpc64/multiarch/rtld-strcspn.c
> @@ -0,0 +1,18 @@
> +/* Copyright (C) 2021 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include <string/strcspn.c>
> diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcspn.c b/sysdeps/powerpc/powerpc64/multiarch/strcspn.c
> index 683aa104d7..bb4d54620f 100644
> --- a/sysdeps/powerpc/powerpc64/multiarch/strcspn.c
> +++ b/sysdeps/powerpc/powerpc64/multiarch/strcspn.c
> @@ -16,6 +16,7 @@
>      License along with the GNU C Library; if not, see
>      <https://www.gnu.org/licenses/>.  */
> 
> +#if IS_IN (libc)
>   #include <string.h>
>   #include <shlib-compat.h>
>   #include "init-arch.h"
> @@ -33,3 +34,4 @@ libc_ifunc (__libc_strcspn,
> 
>   weak_alias (__libc_strcspn, strcspn)
>   libc_hidden_builtin_def (strcspn)
> +#endif

Is the macro guard needed if you're directly bypassing via 
rtld-strcspn.c above? Otherwise, LGTM either way.
  
Tulio Magno Quites Machado Filho July 8, 2021, 9:31 p.m. UTC | #2
Paul E Murphy via Libc-alpha <libc-alpha@sourceware.org> writes:

> On 7/2/21 2:32 PM, Tulio Magno Quites Machado Filho via Libc-alpha wrote:
>> diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcspn.c b/sysdeps/powerpc/powerpc64/multiarch/strcspn.c
>> index 683aa104d7..bb4d54620f 100644
>> --- a/sysdeps/powerpc/powerpc64/multiarch/strcspn.c
>> +++ b/sysdeps/powerpc/powerpc64/multiarch/strcspn.c
>> @@ -16,6 +16,7 @@
>>      License along with the GNU C Library; if not, see
>>      <https://www.gnu.org/licenses/>.  */
>> 
>> +#if IS_IN (libc)
>>   #include <string.h>
>>   #include <shlib-compat.h>
>>   #include "init-arch.h"
>> @@ -33,3 +34,4 @@ libc_ifunc (__libc_strcspn,
>> 
>>   weak_alias (__libc_strcspn, strcspn)
>>   libc_hidden_builtin_def (strcspn)
>> +#endif
>
> Is the macro guard needed if you're directly bypassing via 
> rtld-strcspn.c above? Otherwise, LGTM either way.

No, it isn't.
I'm removing it.

Thanks!
  

Patch

diff --git a/sysdeps/powerpc/powerpc64/multiarch/rtld-strcspn.c b/sysdeps/powerpc/powerpc64/multiarch/rtld-strcspn.c
new file mode 100644
index 0000000000..fcb9682e58
--- /dev/null
+++ b/sysdeps/powerpc/powerpc64/multiarch/rtld-strcspn.c
@@ -0,0 +1,18 @@ 
+/* Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <string/strcspn.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcspn.c b/sysdeps/powerpc/powerpc64/multiarch/strcspn.c
index 683aa104d7..bb4d54620f 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strcspn.c
+++ b/sysdeps/powerpc/powerpc64/multiarch/strcspn.c
@@ -16,6 +16,7 @@ 
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
+#if IS_IN (libc)
 #include <string.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
@@ -33,3 +34,4 @@  libc_ifunc (__libc_strcspn,
 
 weak_alias (__libc_strcspn, strcspn)
 libc_hidden_builtin_def (strcspn)
+#endif