Revert "Make libc symbols hidden in static PIE" [BZ #27237]

Message ID 20210127095232.28018-1-szabolcs.nagy@arm.com
State Committed
Commit df359a25ba6f6bda06104229fbfe284c1fb30915
Headers
Series Revert "Make libc symbols hidden in static PIE" [BZ #27237] |

Commit Message

Szabolcs Nagy Jan. 27, 2021, 9:52 a.m. UTC
  This reverts commit 2682695e5c7acf1e60dd3b5c3a14d4e82416262c.
Fixes bug 27237.

That commit turned out to be too intrusive affecting crt files, test
system and benchmark files.  They should not be affected, but the
build system does not set the MODULE_NAME and LIBC_NONSHARED reliably.
---
 include/libc-symbols.h | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)
  

Comments

Adhemerval Zanella Netto Jan. 27, 2021, 11:27 a.m. UTC | #1
On 27/01/2021 06:52, Szabolcs Nagy wrote:
> This reverts commit 2682695e5c7acf1e60dd3b5c3a14d4e82416262c.
> Fixes bug 27237.
> 
> That commit turned out to be too intrusive affecting crt files, test
> system and benchmark files.  They should not be affected, but the
> build system does not set the MODULE_NAME and LIBC_NONSHARED reliably.
> ---
>  include/libc-symbols.h | 9 ++-------
>  1 file changed, 2 insertions(+), 7 deletions(-)
> 
> diff --git a/include/libc-symbols.h b/include/libc-symbols.h
> index f4dd735555..ea126ae70c 100644
> --- a/include/libc-symbols.h
> +++ b/include/libc-symbols.h
> @@ -434,18 +434,13 @@ for linking")
>    strong_alias(real, name)
>  #endif
>  
> -#if defined SHARED || defined LIBC_NONSHARED
> +#if defined SHARED || defined LIBC_NONSHARED \
> +  || (BUILD_PIE_DEFAULT && IS_IN (libc))
>  # define attribute_hidden __attribute__ ((visibility ("hidden")))
>  #else
>  # define attribute_hidden
>  #endif
>  
> -/* Mark all symbols hidden in static PIE libc to avoid GOT indirections.  */
> -#if BUILD_PIE_DEFAULT && !defined NO_HIDDEN_EXTERN_FUNC_IN_PIE \
> -    && IS_IN (libc) && !defined LIBC_NONSHARED
> -# pragma GCC visibility push(hidden)
> -#endif
> -
>  #define attribute_tls_model_ie __attribute__ ((tls_model ("initial-exec")))
>  
>  #define attribute_relro __attribute__ ((section (".data.rel.ro")))
> 

Ok for 2.33, thanks.
  

Patch

diff --git a/include/libc-symbols.h b/include/libc-symbols.h
index f4dd735555..ea126ae70c 100644
--- a/include/libc-symbols.h
+++ b/include/libc-symbols.h
@@ -434,18 +434,13 @@  for linking")
   strong_alias(real, name)
 #endif
 
-#if defined SHARED || defined LIBC_NONSHARED
+#if defined SHARED || defined LIBC_NONSHARED \
+  || (BUILD_PIE_DEFAULT && IS_IN (libc))
 # define attribute_hidden __attribute__ ((visibility ("hidden")))
 #else
 # define attribute_hidden
 #endif
 
-/* Mark all symbols hidden in static PIE libc to avoid GOT indirections.  */
-#if BUILD_PIE_DEFAULT && !defined NO_HIDDEN_EXTERN_FUNC_IN_PIE \
-    && IS_IN (libc) && !defined LIBC_NONSHARED
-# pragma GCC visibility push(hidden)
-#endif
-
 #define attribute_tls_model_ie __attribute__ ((tls_model ("initial-exec")))
 
 #define attribute_relro __attribute__ ((section (".data.rel.ro")))