about summary refs log tree commit diff
path: root/elf/setup-vdso.h
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2023-10-18 14:22:59 +0200
committerFlorian Weimer <fweimer@redhat.com>2023-10-18 14:22:59 +0200
commite0b6c9706c91a642c781918eea52588ee8dc9f09 (patch)
tree0c15b9fd30f9f43e7267ef039ea75df4c45d7842 /elf/setup-vdso.h
parent750a45a783906a19591fb8ff6b7841470f1f5701 (diff)
downloadglibc-e0b6c9706c91a642c781918eea52588ee8dc9f09.tar.gz
glibc-e0b6c9706c91a642c781918eea52588ee8dc9f09.tar.xz
glibc-e0b6c9706c91a642c781918eea52588ee8dc9f09.zip
Revert "elf: Remove unused l_text_end field from struct link_map"
This reverts commit 750f19526ae71aac801c77a3f7ef5374890c09b7.

Reason for revert: Restore ABI after revert of commit a3189f66a5f.
Diffstat (limited to 'elf/setup-vdso.h')
-rw-r--r--elf/setup-vdso.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/elf/setup-vdso.h b/elf/setup-vdso.h
index d92b12a7aa..0079842d1f 100644
--- a/elf/setup-vdso.h
+++ b/elf/setup-vdso.h
@@ -51,6 +51,9 @@ setup_vdso (struct link_map *main_map __attribute__ ((unused)),
 		l->l_addr = ph->p_vaddr;
 	      if (ph->p_vaddr + ph->p_memsz >= l->l_map_end)
 		l->l_map_end = ph->p_vaddr + ph->p_memsz;
+	      if ((ph->p_flags & PF_X)
+		  && ph->p_vaddr + ph->p_memsz >= l->l_text_end)
+		l->l_text_end = ph->p_vaddr + ph->p_memsz;
 	    }
 	  else
 	    /* There must be no TLS segment.  */
@@ -59,6 +62,7 @@ setup_vdso (struct link_map *main_map __attribute__ ((unused)),
       l->l_map_start = (ElfW(Addr)) GLRO(dl_sysinfo_dso);
       l->l_addr = l->l_map_start - l->l_addr;
       l->l_map_end += l->l_addr;
+      l->l_text_end += l->l_addr;
       l->l_ld = (void *) ((ElfW(Addr)) l->l_ld + l->l_addr);
       elf_get_dynamic_info (l, false, false);
       _dl_setup_hash (l);