Page MenuHomeFreeBSD

D17117.id47910.diff
No OneTemporary

D17117.id47910.diff

Index: libexec/rtld-elf/rtld.c
===================================================================
--- libexec/rtld-elf/rtld.c
+++ libexec/rtld-elf/rtld.c
@@ -1477,13 +1477,15 @@
if (nsegs == 0) { /* First load segment */
obj->vaddrbase = trunc_page(ph->p_vaddr);
obj->mapbase = obj->vaddrbase + obj->relocbase;
- obj->textsize = round_page(ph->p_vaddr + ph->p_memsz) -
- obj->vaddrbase;
} else { /* Last load segment */
obj->mapsize = round_page(ph->p_vaddr + ph->p_memsz) -
obj->vaddrbase;
}
nsegs++;
+ if ((ph->p_flags & PF_X) == PF_X) {
+ obj->textsize = MAX(obj->textsize,
+ round_page(ph->p_vaddr + ph->p_memsz) - obj->vaddrbase);
+ }
if (!(ph->p_flags & PF_W)) {
Elf_Addr start_addr = ph->p_vaddr;
obj->text_rodata_start = MIN(start_addr, obj->text_rodata_start);

File Metadata

Mime Type
text/plain
Expires
Sun, Oct 12, 12:58 PM (1 h, 32 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23623970
Default Alt Text
D17117.id47910.diff (840 B)

Event Timeline