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:32:12 +0200
committerFlorian Weimer <fweimer@redhat.com>2023-10-18 14:32:12 +0200
commit6aa8380cf5c17d533285cbd575c3eb33c020800a (patch)
tree7e0be6fc79277174a8cd5dc2b19d04f66058a227 /elf/setup-vdso.h
parentc84018a05aec80f5ee6f682db0da1130b0196aef (diff)
downloadglibc-6aa8380cf5c17d533285cbd575c3eb33c020800a.tar.gz
glibc-6aa8380cf5c17d533285cbd575c3eb33c020800a.tar.xz
glibc-6aa8380cf5c17d533285cbd575c3eb33c020800a.zip
Revert "elf: Remove unused l_text_end field from struct link_map"
This reverts commit 34b07bdbdd69121d6e7d3ccf51a61cc4fa2c408d.

Reason for revert: Preserve ABI after revert of commit 02a67e102f0.
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 6838615b30..db639b0d4f 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);