elf: Document late page size initialization via _dl_var_init

Message ID 87muem2bq1.fsf@oldenburg2.str.redhat.com
State Superseded
Headers

Commit Message

Florian Weimer Sept. 30, 2019, 12:46 p.m. UTC
  [For riscv, see the removal I just posted.]

2019-09-30  Florian Weimer  <fweimer@redhat.com>

	* sysdeps/unix/sysv/linux/aarch64/dl-static.c (_dl_var_init): Add
	comment.
	* sysdeps/unix/sysv/linux/ia64/dl-static.c (_dl_var_init):
	Likewise.
	* sysdeps/unix/sysv/linux/m68k/dl-static.c (_dl_var_init):
	Likewise.
	* sysdeps/unix/sysv/linux/mips/dl-static.c (_dl_var_init):
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/dl-static.c (_dl_var_init):
	Likewise.
  

Comments

Florian Weimer Oct. 7, 2019, 5:30 p.m. UTC | #1
Ping.  This patch needs review:

  <https://sourceware.org/ml/libc-alpha/2019-09/msg00507.html>

Thanks,
Florian

* Florian Weimer:

> [For riscv, see the removal I just posted.]
>
> 2019-09-30  Florian Weimer  <fweimer@redhat.com>
>
> 	* sysdeps/unix/sysv/linux/aarch64/dl-static.c (_dl_var_init): Add
> 	comment.
> 	* sysdeps/unix/sysv/linux/ia64/dl-static.c (_dl_var_init):
> 	Likewise.
> 	* sysdeps/unix/sysv/linux/m68k/dl-static.c (_dl_var_init):
> 	Likewise.
> 	* sysdeps/unix/sysv/linux/mips/dl-static.c (_dl_var_init):
> 	Likewise.
> 	* sysdeps/unix/sysv/linux/powerpc/dl-static.c (_dl_var_init):
> 	Likewise.
>
> diff --git a/sysdeps/unix/sysv/linux/aarch64/dl-static.c b/sysdeps/unix/sysv/linux/aarch64/dl-static.c
> index b444723a6f..992440b504 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/dl-static.c
> +++ b/sysdeps/unix/sysv/linux/aarch64/dl-static.c
> @@ -20,6 +20,12 @@
>  
>  #ifdef SHARED
>  
> +/* Update GLRO(dl_pagesize) to the run-time page size.  After static
> +   dlopen, the constant initializer EXEC_PAGESIZE for
> +   GLRO(dl_pagesize) in elf/rtld.c is not correct for implementations
> +   which do not use EXEC_PAGESIZE as the page size.  (In the static
> +   dlopen case, the ld.so initialization code never runs because the
> +   inner dynamic loader is not active.) */
>  void
>  _dl_var_init (void *array[])
>  {
> diff --git a/sysdeps/unix/sysv/linux/ia64/dl-static.c b/sysdeps/unix/sysv/linux/ia64/dl-static.c
> index aaf09adc0c..3a5fb3a958 100644
> --- a/sysdeps/unix/sysv/linux/ia64/dl-static.c
> +++ b/sysdeps/unix/sysv/linux/ia64/dl-static.c
> @@ -20,6 +20,14 @@
>  
>  #ifdef SHARED
>  
> +/* Update GLRO(dl_pagesize) and GLRO(dl_clktck).
> +
> +   After static dlopen, the constant initializer EXEC_PAGESIZE for
> +   GLRO(dl_pagesize) in elf/rtld.c is not correct for implementations
> +   which do not use EXEC_PAGESIZE as the page size.  (In the static
> +   dlopen case, the ld.so initialization code never runs because the
> +   inner dynamic loader is not active.)  Likewise for
> +   GLRO(dl_clktck).  */
>  void
>  _dl_var_init (void *array[])
>  {
> diff --git a/sysdeps/unix/sysv/linux/m68k/dl-static.c b/sysdeps/unix/sysv/linux/m68k/dl-static.c
> index 7ad0f0790f..8ab3abda68 100644
> --- a/sysdeps/unix/sysv/linux/m68k/dl-static.c
> +++ b/sysdeps/unix/sysv/linux/m68k/dl-static.c
> @@ -20,6 +20,12 @@
>  
>  #ifdef SHARED
>  
> +/* Update GLRO(dl_pagesize) to the run-time page size.  After static
> +   dlopen, the constant initializer EXEC_PAGESIZE for
> +   GLRO(dl_pagesize) in elf/rtld.c is not correct for implementations
> +   which do not use EXEC_PAGESIZE as the page size.  (In the static
> +   dlopen case, the ld.so initialization code never runs because the
> +   inner dynamic loader is not active.) */
>  void
>  _dl_var_init (void *array[])
>  {
> diff --git a/sysdeps/unix/sysv/linux/mips/dl-static.c b/sysdeps/unix/sysv/linux/mips/dl-static.c
> index c71c18de71..4a606e42a2 100644
> --- a/sysdeps/unix/sysv/linux/mips/dl-static.c
> +++ b/sysdeps/unix/sysv/linux/mips/dl-static.c
> @@ -20,6 +20,12 @@
>  
>  #ifdef SHARED
>  
> +/* Update GLRO(dl_pagesize) to the run-time page size.  After static
> +   dlopen, the constant initializer EXEC_PAGESIZE for
> +   GLRO(dl_pagesize) in elf/rtld.c is not correct for implementations
> +   which do not use EXEC_PAGESIZE as the page size.  (In the static
> +   dlopen case, the ld.so initialization code never runs because the
> +   inner dynamic loader is not active.) */
>  void
>  _dl_var_init (void *array[])
>  {
> diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-static.c b/sysdeps/unix/sysv/linux/powerpc/dl-static.c
> index d176f96495..ff0cdf46fa 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/dl-static.c
> +++ b/sysdeps/unix/sysv/linux/powerpc/dl-static.c
> @@ -20,6 +20,12 @@
>  
>  #ifdef SHARED
>  
> +/* Update GLRO(dl_pagesize) to the run-time page size.  After static
> +   dlopen, the constant initializer EXEC_PAGESIZE for
> +   GLRO(dl_pagesize) in elf/rtld.c is not correct for implementations
> +   which do not use EXEC_PAGESIZE as the page size.  (In the static
> +   dlopen case, the ld.so initialization code never runs because the
> +   inner dynamic loader is not active.) */
>  void
>  _dl_var_init (void *array[])
>  {
  

Patch

diff --git a/sysdeps/unix/sysv/linux/aarch64/dl-static.c b/sysdeps/unix/sysv/linux/aarch64/dl-static.c
index b444723a6f..992440b504 100644
--- a/sysdeps/unix/sysv/linux/aarch64/dl-static.c
+++ b/sysdeps/unix/sysv/linux/aarch64/dl-static.c
@@ -20,6 +20,12 @@ 
 
 #ifdef SHARED
 
+/* Update GLRO(dl_pagesize) to the run-time page size.  After static
+   dlopen, the constant initializer EXEC_PAGESIZE for
+   GLRO(dl_pagesize) in elf/rtld.c is not correct for implementations
+   which do not use EXEC_PAGESIZE as the page size.  (In the static
+   dlopen case, the ld.so initialization code never runs because the
+   inner dynamic loader is not active.) */
 void
 _dl_var_init (void *array[])
 {
diff --git a/sysdeps/unix/sysv/linux/ia64/dl-static.c b/sysdeps/unix/sysv/linux/ia64/dl-static.c
index aaf09adc0c..3a5fb3a958 100644
--- a/sysdeps/unix/sysv/linux/ia64/dl-static.c
+++ b/sysdeps/unix/sysv/linux/ia64/dl-static.c
@@ -20,6 +20,14 @@ 
 
 #ifdef SHARED
 
+/* Update GLRO(dl_pagesize) and GLRO(dl_clktck).
+
+   After static dlopen, the constant initializer EXEC_PAGESIZE for
+   GLRO(dl_pagesize) in elf/rtld.c is not correct for implementations
+   which do not use EXEC_PAGESIZE as the page size.  (In the static
+   dlopen case, the ld.so initialization code never runs because the
+   inner dynamic loader is not active.)  Likewise for
+   GLRO(dl_clktck).  */
 void
 _dl_var_init (void *array[])
 {
diff --git a/sysdeps/unix/sysv/linux/m68k/dl-static.c b/sysdeps/unix/sysv/linux/m68k/dl-static.c
index 7ad0f0790f..8ab3abda68 100644
--- a/sysdeps/unix/sysv/linux/m68k/dl-static.c
+++ b/sysdeps/unix/sysv/linux/m68k/dl-static.c
@@ -20,6 +20,12 @@ 
 
 #ifdef SHARED
 
+/* Update GLRO(dl_pagesize) to the run-time page size.  After static
+   dlopen, the constant initializer EXEC_PAGESIZE for
+   GLRO(dl_pagesize) in elf/rtld.c is not correct for implementations
+   which do not use EXEC_PAGESIZE as the page size.  (In the static
+   dlopen case, the ld.so initialization code never runs because the
+   inner dynamic loader is not active.) */
 void
 _dl_var_init (void *array[])
 {
diff --git a/sysdeps/unix/sysv/linux/mips/dl-static.c b/sysdeps/unix/sysv/linux/mips/dl-static.c
index c71c18de71..4a606e42a2 100644
--- a/sysdeps/unix/sysv/linux/mips/dl-static.c
+++ b/sysdeps/unix/sysv/linux/mips/dl-static.c
@@ -20,6 +20,12 @@ 
 
 #ifdef SHARED
 
+/* Update GLRO(dl_pagesize) to the run-time page size.  After static
+   dlopen, the constant initializer EXEC_PAGESIZE for
+   GLRO(dl_pagesize) in elf/rtld.c is not correct for implementations
+   which do not use EXEC_PAGESIZE as the page size.  (In the static
+   dlopen case, the ld.so initialization code never runs because the
+   inner dynamic loader is not active.) */
 void
 _dl_var_init (void *array[])
 {
diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-static.c b/sysdeps/unix/sysv/linux/powerpc/dl-static.c
index d176f96495..ff0cdf46fa 100644
--- a/sysdeps/unix/sysv/linux/powerpc/dl-static.c
+++ b/sysdeps/unix/sysv/linux/powerpc/dl-static.c
@@ -20,6 +20,12 @@ 
 
 #ifdef SHARED
 
+/* Update GLRO(dl_pagesize) to the run-time page size.  After static
+   dlopen, the constant initializer EXEC_PAGESIZE for
+   GLRO(dl_pagesize) in elf/rtld.c is not correct for implementations
+   which do not use EXEC_PAGESIZE as the page size.  (In the static
+   dlopen case, the ld.so initialization code never runs because the
+   inner dynamic loader is not active.) */
 void
 _dl_var_init (void *array[])
 {