[v6,2/4] rtld: Remove DL_ARGV_NOT_RELRO and make _dl_skip_args const

Message ID 94c82dda28369de49a68e25ac606b828a2e4fd02.1651757640.git.szabolcs.nagy@arm.com
State Committed
Commit 86147bbeec25624cb26bb7646cdbc3a49bc56bf5
Headers
Series Args adjustment with ./ld.so exe [BZ #23293] |

Checks

Context Check Description
dj/TryBot-apply_patch success Patch applied to master at the time it was sent

Commit Message

Szabolcs Nagy May 5, 2022, 1:58 p.m. UTC
  _dl_skip_args is always 0, so the target specific code that modifies
argv after relro protection is applied is no longer used.

After the patch relro protection is applied to _dl_argv consistently
on all targets.

---
v6:
- const _dl_skip_args.
v4:
- New patch.
Reviewed-by: Florian Weimer <fweimer@redhat.com>
Tested-by: Florian Weimer <fweimer@redhat.com>
---
 elf/rtld.c                               | 10 ++--------
 sysdeps/aarch64/dl-sysdep.h              |  4 ----
 sysdeps/alpha/dl-sysdep.h                | 23 -----------------------
 sysdeps/arc/dl-sysdep.h                  |  4 ----
 sysdeps/arm/dl-sysdep.h                  |  4 ----
 sysdeps/csky/dl-sysdep.h                 | 23 -----------------------
 sysdeps/generic/ldsodefs.h               | 13 +++----------
 sysdeps/ia64/dl-sysdep.h                 | 23 -----------------------
 sysdeps/nios2/dl-sysdep.h                |  4 ----
 sysdeps/s390/s390-32/dl-sysdep.h         | 23 -----------------------
 sysdeps/sparc/dl-sysdep.h                | 23 -----------------------
 sysdeps/unix/sysv/linux/ia64/dl-sysdep.h |  4 ----
 12 files changed, 5 insertions(+), 153 deletions(-)
 delete mode 100644 sysdeps/alpha/dl-sysdep.h
 delete mode 100644 sysdeps/csky/dl-sysdep.h
 delete mode 100644 sysdeps/ia64/dl-sysdep.h
 delete mode 100644 sysdeps/s390/s390-32/dl-sysdep.h
 delete mode 100644 sysdeps/sparc/dl-sysdep.h
  

Comments

Adhemerval Zanella Netto May 13, 2022, 8:14 p.m. UTC | #1
On 05/05/2022 10:58, Szabolcs Nagy via Libc-alpha wrote:
> _dl_skip_args is always 0, so the target specific code that modifies
> argv after relro protection is applied is no longer used.
> 
> After the patch relro protection is applied to _dl_argv consistently
> on all targets.
> 
> ---
> v6:
> - const _dl_skip_args.
> v4:
> - New patch.
> Reviewed-by: Florian Weimer <fweimer@redhat.com>
> Tested-by: Florian Weimer <fweimer@redhat.com>

LGTM to me as well.

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

> ---
>  elf/rtld.c                               | 10 ++--------
>  sysdeps/aarch64/dl-sysdep.h              |  4 ----
>  sysdeps/alpha/dl-sysdep.h                | 23 -----------------------
>  sysdeps/arc/dl-sysdep.h                  |  4 ----
>  sysdeps/arm/dl-sysdep.h                  |  4 ----
>  sysdeps/csky/dl-sysdep.h                 | 23 -----------------------
>  sysdeps/generic/ldsodefs.h               | 13 +++----------
>  sysdeps/ia64/dl-sysdep.h                 | 23 -----------------------
>  sysdeps/nios2/dl-sysdep.h                |  4 ----
>  sysdeps/s390/s390-32/dl-sysdep.h         | 23 -----------------------
>  sysdeps/sparc/dl-sysdep.h                | 23 -----------------------
>  sysdeps/unix/sysv/linux/ia64/dl-sysdep.h |  4 ----
>  12 files changed, 5 insertions(+), 153 deletions(-)
>  delete mode 100644 sysdeps/alpha/dl-sysdep.h
>  delete mode 100644 sysdeps/csky/dl-sysdep.h
>  delete mode 100644 sysdeps/ia64/dl-sysdep.h
>  delete mode 100644 sysdeps/s390/s390-32/dl-sysdep.h
>  delete mode 100644 sysdeps/sparc/dl-sysdep.h
> 
> diff --git a/elf/rtld.c b/elf/rtld.c
> index b5070d453f..71f7095def 100644
> --- a/elf/rtld.c
> +++ b/elf/rtld.c
> @@ -157,16 +157,10 @@ static void dl_main_state_init (struct dl_main_state *state);
>  extern char **_environ attribute_hidden;
>  static void process_envvars (struct dl_main_state *state);
>  
> -#ifdef DL_ARGV_NOT_RELRO
> -int _dl_argc attribute_hidden;
> -char **_dl_argv = NULL;
> -/* Nonzero if we were run directly.  */
> -unsigned int _dl_skip_args attribute_hidden;
> -#else
>  int _dl_argc attribute_relro attribute_hidden;
>  char **_dl_argv attribute_relro = NULL;
> -unsigned int _dl_skip_args attribute_relro attribute_hidden;
> -#endif
> +/* Always 0, only kept for not-yet-updated target start code.  */
> +const unsigned int _dl_skip_args attribute_hidden;
>  rtld_hidden_data_def (_dl_argv)
>  
>  #ifndef THREAD_SET_STACK_GUARD
> diff --git a/sysdeps/aarch64/dl-sysdep.h b/sysdeps/aarch64/dl-sysdep.h
> index 667786671c..1516dd7d3f 100644
> --- a/sysdeps/aarch64/dl-sysdep.h
> +++ b/sysdeps/aarch64/dl-sysdep.h
> @@ -18,8 +18,4 @@
>  
>  #include_next <dl-sysdep.h>
>  
> -/* _dl_argv cannot be attribute_relro, because _dl_start_user
> -   might write into it after _dl_start returns.  */
> -#define DL_ARGV_NOT_RELRO 1
> -
>  #define DL_EXTERN_PROTECTED_DATA
> diff --git a/sysdeps/alpha/dl-sysdep.h b/sysdeps/alpha/dl-sysdep.h
> deleted file mode 100644
> index 3099ee419f..0000000000
> --- a/sysdeps/alpha/dl-sysdep.h
> +++ /dev/null
> @@ -1,23 +0,0 @@
> -/* System-specific settings for dynamic linker code.  Alpha version.
> -   Copyright (C) 2002-2022 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_next <dl-sysdep.h>
> -
> -/* _dl_argv cannot be attribute_relro, because _dl_start_user
> -   might write into it after _dl_start returns.  */
> -#define DL_ARGV_NOT_RELRO 1
> diff --git a/sysdeps/arc/dl-sysdep.h b/sysdeps/arc/dl-sysdep.h
> index da060ceeee..cf4d160a73 100644
> --- a/sysdeps/arc/dl-sysdep.h
> +++ b/sysdeps/arc/dl-sysdep.h
> @@ -18,8 +18,4 @@
>  
>  #include_next <dl-sysdep.h>
>  
> -/* _dl_argv cannot be attribute_relro, because _dl_start_user
> -   might write into it after _dl_start returns.  */
> -#define DL_ARGV_NOT_RELRO 1
> -
>  #define DL_EXTERN_PROTECTED_DATA
> diff --git a/sysdeps/arm/dl-sysdep.h b/sysdeps/arm/dl-sysdep.h
> index ce7a84a7de..7a99107436 100644
> --- a/sysdeps/arm/dl-sysdep.h
> +++ b/sysdeps/arm/dl-sysdep.h
> @@ -18,8 +18,4 @@
>  
>  #include_next <dl-sysdep.h>
>  
> -/* _dl_argv cannot be attribute_relro, because _dl_start_user
> -   might write into it after _dl_start returns.  */
> -#define DL_ARGV_NOT_RELRO 1
> -
>  #define DL_EXTERN_PROTECTED_DATA
> diff --git a/sysdeps/csky/dl-sysdep.h b/sysdeps/csky/dl-sysdep.h
> deleted file mode 100644
> index fc8a58b94c..0000000000
> --- a/sysdeps/csky/dl-sysdep.h
> +++ /dev/null
> @@ -1,23 +0,0 @@
> -/* System-specific settings for dynamic linker code.  C-SKY version.
> -   Copyright (C) 2018-2022 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_next <dl-sysdep.h>
> -
> -/* _dl_argv cannot be attribute_relro, because _dl_start_user
> -   might write into it after _dl_start returns.  */
> -#define DL_ARGV_NOT_RELRO 1
> diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
> index 4a5e698db2..f3d3c78927 100644
> --- a/sysdeps/generic/ldsodefs.h
> +++ b/sysdeps/generic/ldsodefs.h
> @@ -762,18 +762,11 @@ rtld_hidden_proto (__libc_stack_end)
>  
>  /* Parameters passed to the dynamic linker.  */
>  extern int _dl_argc attribute_hidden attribute_relro;
> -extern char **_dl_argv
> -#ifndef DL_ARGV_NOT_RELRO
> -     attribute_relro
> -#endif
> -     ;
> +extern char **_dl_argv attribute_relro;
>  rtld_hidden_proto (_dl_argv)
>  #if IS_IN (rtld)
> -extern unsigned int _dl_skip_args attribute_hidden
> -# ifndef DL_ARGV_NOT_RELRO
> -     attribute_relro
> -# endif
> -     ;
> +/* Always 0, only kept for not-yet-updated target start code.  */
> +extern const unsigned int _dl_skip_args attribute_hidden;
>  #endif
>  #define rtld_progname _dl_argv[0]
>  
> diff --git a/sysdeps/ia64/dl-sysdep.h b/sysdeps/ia64/dl-sysdep.h
> deleted file mode 100644
> index e3a58bec24..0000000000
> --- a/sysdeps/ia64/dl-sysdep.h
> +++ /dev/null
> @@ -1,23 +0,0 @@
> -/* System-specific settings for dynamic linker code.  IA-64 version.
> -   Copyright (C) 2002-2022 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_next <dl-sysdep.h>
> -
> -/* _dl_argv cannot be attribute_relro, because _dl_start_user
> -   might write into it after _dl_start returns.  */
> -#define DL_ARGV_NOT_RELRO 1
> diff --git a/sysdeps/nios2/dl-sysdep.h b/sysdeps/nios2/dl-sysdep.h
> index 0354650042..257b37c258 100644
> --- a/sysdeps/nios2/dl-sysdep.h
> +++ b/sysdeps/nios2/dl-sysdep.h
> @@ -18,8 +18,4 @@
>  
>  #include_next <dl-sysdep.h>
>  
> -/* _dl_argv cannot be attribute_relro, because _dl_start_user
> -   might write into it after _dl_start returns.  */
> -#define DL_ARGV_NOT_RELRO 1
> -
>  #define DL_EXTERN_PROTECTED_DATA
> diff --git a/sysdeps/s390/s390-32/dl-sysdep.h b/sysdeps/s390/s390-32/dl-sysdep.h
> deleted file mode 100644
> index 699b50f156..0000000000
> --- a/sysdeps/s390/s390-32/dl-sysdep.h
> +++ /dev/null
> @@ -1,23 +0,0 @@
> -/* System-specific settings for dynamic linker code.  S/390 version.
> -   Copyright (C) 2014-2022 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_next <dl-sysdep.h>
> -
> -/* _dl_argv cannot be attribute_relro, because _dl_start_user
> -   might write into it after _dl_start returns.  */
> -#define DL_ARGV_NOT_RELRO 1
> diff --git a/sysdeps/sparc/dl-sysdep.h b/sysdeps/sparc/dl-sysdep.h
> deleted file mode 100644
> index f32f16a107..0000000000
> --- a/sysdeps/sparc/dl-sysdep.h
> +++ /dev/null
> @@ -1,23 +0,0 @@
> -/* System-specific settings for dynamic linker code.  SPARC version.
> -   Copyright (C) 2002-2022 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_next <dl-sysdep.h>
> -
> -/* _dl_argv cannot be attribute_relro, because _dl_start_user
> -   might write into it after _dl_start returns.  */
> -#define DL_ARGV_NOT_RELRO 1
> diff --git a/sysdeps/unix/sysv/linux/ia64/dl-sysdep.h b/sysdeps/unix/sysv/linux/ia64/dl-sysdep.h
> index 0d2a1d093a..aa1de6b361 100644
> --- a/sysdeps/unix/sysv/linux/ia64/dl-sysdep.h
> +++ b/sysdeps/unix/sysv/linux/ia64/dl-sysdep.h
> @@ -48,8 +48,4 @@ extern int _dl_sysinfo_break attribute_hidden;
>         ".previous");
>  #endif
>  
> -/* _dl_argv cannot be attribute_relro, because _dl_start_user
> -   might write into it after _dl_start returns.  */
> -#define DL_ARGV_NOT_RELRO 1
> -
>  #endif	/* dl-sysdep.h */
  

Patch

diff --git a/elf/rtld.c b/elf/rtld.c
index b5070d453f..71f7095def 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -157,16 +157,10 @@  static void dl_main_state_init (struct dl_main_state *state);
 extern char **_environ attribute_hidden;
 static void process_envvars (struct dl_main_state *state);
 
-#ifdef DL_ARGV_NOT_RELRO
-int _dl_argc attribute_hidden;
-char **_dl_argv = NULL;
-/* Nonzero if we were run directly.  */
-unsigned int _dl_skip_args attribute_hidden;
-#else
 int _dl_argc attribute_relro attribute_hidden;
 char **_dl_argv attribute_relro = NULL;
-unsigned int _dl_skip_args attribute_relro attribute_hidden;
-#endif
+/* Always 0, only kept for not-yet-updated target start code.  */
+const unsigned int _dl_skip_args attribute_hidden;
 rtld_hidden_data_def (_dl_argv)
 
 #ifndef THREAD_SET_STACK_GUARD
diff --git a/sysdeps/aarch64/dl-sysdep.h b/sysdeps/aarch64/dl-sysdep.h
index 667786671c..1516dd7d3f 100644
--- a/sysdeps/aarch64/dl-sysdep.h
+++ b/sysdeps/aarch64/dl-sysdep.h
@@ -18,8 +18,4 @@ 
 
 #include_next <dl-sysdep.h>
 
-/* _dl_argv cannot be attribute_relro, because _dl_start_user
-   might write into it after _dl_start returns.  */
-#define DL_ARGV_NOT_RELRO 1
-
 #define DL_EXTERN_PROTECTED_DATA
diff --git a/sysdeps/alpha/dl-sysdep.h b/sysdeps/alpha/dl-sysdep.h
deleted file mode 100644
index 3099ee419f..0000000000
--- a/sysdeps/alpha/dl-sysdep.h
+++ /dev/null
@@ -1,23 +0,0 @@ 
-/* System-specific settings for dynamic linker code.  Alpha version.
-   Copyright (C) 2002-2022 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_next <dl-sysdep.h>
-
-/* _dl_argv cannot be attribute_relro, because _dl_start_user
-   might write into it after _dl_start returns.  */
-#define DL_ARGV_NOT_RELRO 1
diff --git a/sysdeps/arc/dl-sysdep.h b/sysdeps/arc/dl-sysdep.h
index da060ceeee..cf4d160a73 100644
--- a/sysdeps/arc/dl-sysdep.h
+++ b/sysdeps/arc/dl-sysdep.h
@@ -18,8 +18,4 @@ 
 
 #include_next <dl-sysdep.h>
 
-/* _dl_argv cannot be attribute_relro, because _dl_start_user
-   might write into it after _dl_start returns.  */
-#define DL_ARGV_NOT_RELRO 1
-
 #define DL_EXTERN_PROTECTED_DATA
diff --git a/sysdeps/arm/dl-sysdep.h b/sysdeps/arm/dl-sysdep.h
index ce7a84a7de..7a99107436 100644
--- a/sysdeps/arm/dl-sysdep.h
+++ b/sysdeps/arm/dl-sysdep.h
@@ -18,8 +18,4 @@ 
 
 #include_next <dl-sysdep.h>
 
-/* _dl_argv cannot be attribute_relro, because _dl_start_user
-   might write into it after _dl_start returns.  */
-#define DL_ARGV_NOT_RELRO 1
-
 #define DL_EXTERN_PROTECTED_DATA
diff --git a/sysdeps/csky/dl-sysdep.h b/sysdeps/csky/dl-sysdep.h
deleted file mode 100644
index fc8a58b94c..0000000000
--- a/sysdeps/csky/dl-sysdep.h
+++ /dev/null
@@ -1,23 +0,0 @@ 
-/* System-specific settings for dynamic linker code.  C-SKY version.
-   Copyright (C) 2018-2022 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_next <dl-sysdep.h>
-
-/* _dl_argv cannot be attribute_relro, because _dl_start_user
-   might write into it after _dl_start returns.  */
-#define DL_ARGV_NOT_RELRO 1
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
index 4a5e698db2..f3d3c78927 100644
--- a/sysdeps/generic/ldsodefs.h
+++ b/sysdeps/generic/ldsodefs.h
@@ -762,18 +762,11 @@  rtld_hidden_proto (__libc_stack_end)
 
 /* Parameters passed to the dynamic linker.  */
 extern int _dl_argc attribute_hidden attribute_relro;
-extern char **_dl_argv
-#ifndef DL_ARGV_NOT_RELRO
-     attribute_relro
-#endif
-     ;
+extern char **_dl_argv attribute_relro;
 rtld_hidden_proto (_dl_argv)
 #if IS_IN (rtld)
-extern unsigned int _dl_skip_args attribute_hidden
-# ifndef DL_ARGV_NOT_RELRO
-     attribute_relro
-# endif
-     ;
+/* Always 0, only kept for not-yet-updated target start code.  */
+extern const unsigned int _dl_skip_args attribute_hidden;
 #endif
 #define rtld_progname _dl_argv[0]
 
diff --git a/sysdeps/ia64/dl-sysdep.h b/sysdeps/ia64/dl-sysdep.h
deleted file mode 100644
index e3a58bec24..0000000000
--- a/sysdeps/ia64/dl-sysdep.h
+++ /dev/null
@@ -1,23 +0,0 @@ 
-/* System-specific settings for dynamic linker code.  IA-64 version.
-   Copyright (C) 2002-2022 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_next <dl-sysdep.h>
-
-/* _dl_argv cannot be attribute_relro, because _dl_start_user
-   might write into it after _dl_start returns.  */
-#define DL_ARGV_NOT_RELRO 1
diff --git a/sysdeps/nios2/dl-sysdep.h b/sysdeps/nios2/dl-sysdep.h
index 0354650042..257b37c258 100644
--- a/sysdeps/nios2/dl-sysdep.h
+++ b/sysdeps/nios2/dl-sysdep.h
@@ -18,8 +18,4 @@ 
 
 #include_next <dl-sysdep.h>
 
-/* _dl_argv cannot be attribute_relro, because _dl_start_user
-   might write into it after _dl_start returns.  */
-#define DL_ARGV_NOT_RELRO 1
-
 #define DL_EXTERN_PROTECTED_DATA
diff --git a/sysdeps/s390/s390-32/dl-sysdep.h b/sysdeps/s390/s390-32/dl-sysdep.h
deleted file mode 100644
index 699b50f156..0000000000
--- a/sysdeps/s390/s390-32/dl-sysdep.h
+++ /dev/null
@@ -1,23 +0,0 @@ 
-/* System-specific settings for dynamic linker code.  S/390 version.
-   Copyright (C) 2014-2022 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_next <dl-sysdep.h>
-
-/* _dl_argv cannot be attribute_relro, because _dl_start_user
-   might write into it after _dl_start returns.  */
-#define DL_ARGV_NOT_RELRO 1
diff --git a/sysdeps/sparc/dl-sysdep.h b/sysdeps/sparc/dl-sysdep.h
deleted file mode 100644
index f32f16a107..0000000000
--- a/sysdeps/sparc/dl-sysdep.h
+++ /dev/null
@@ -1,23 +0,0 @@ 
-/* System-specific settings for dynamic linker code.  SPARC version.
-   Copyright (C) 2002-2022 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_next <dl-sysdep.h>
-
-/* _dl_argv cannot be attribute_relro, because _dl_start_user
-   might write into it after _dl_start returns.  */
-#define DL_ARGV_NOT_RELRO 1
diff --git a/sysdeps/unix/sysv/linux/ia64/dl-sysdep.h b/sysdeps/unix/sysv/linux/ia64/dl-sysdep.h
index 0d2a1d093a..aa1de6b361 100644
--- a/sysdeps/unix/sysv/linux/ia64/dl-sysdep.h
+++ b/sysdeps/unix/sysv/linux/ia64/dl-sysdep.h
@@ -48,8 +48,4 @@  extern int _dl_sysinfo_break attribute_hidden;
        ".previous");
 #endif
 
-/* _dl_argv cannot be attribute_relro, because _dl_start_user
-   might write into it after _dl_start returns.  */
-#define DL_ARGV_NOT_RELRO 1
-
 #endif	/* dl-sysdep.h */