The branch main has been updated by jrtc27:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=6118587172babee538fb8e461b9a607ea987e342

commit 6118587172babee538fb8e461b9a607ea987e342
Author:     Jessica Clarke <jrt...@freebsd.org>
AuthorDate: 2025-08-15 22:21:35 +0000
Commit:     Jessica Clarke <jrt...@freebsd.org>
CommitDate: 2025-08-15 22:21:35 +0000

    rtld-elf: Fix VDSO Obj_Entry mapsize and report in utrace(2)
    
    Subtracing addr is only appropriate for position-dependent objects,
    where vaddrbase would also be the same value. For position-independent
    objects, like the VDSO (which we already assume due to setting vaddrbase
    to 0), the segments start at 0, not addr.
    
    Reviewed by:    kib
    Differential Revision:  https://reviews.freebsd.org/D51924
---
 libexec/rtld-elf/rtld.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c
index 17196f55c271..8977d5947010 100644
--- a/libexec/rtld-elf/rtld.c
+++ b/libexec/rtld-elf/rtld.c
@@ -3031,7 +3031,7 @@ load_kpreload(const void *addr)
        }
 
        obj->mapbase = __DECONST(caddr_t, addr);
-       obj->mapsize = segn->p_vaddr + segn->p_memsz - (Elf_Addr)addr;
+       obj->mapsize = segn->p_vaddr + segn->p_memsz;
        obj->vaddrbase = 0;
        obj->relocbase = obj->mapbase;
 
@@ -3060,7 +3060,8 @@ load_kpreload(const void *addr)
        linkmap_add(obj); /* for GDB & dlinfo() */
        max_stack_flags |= obj->stack_flags;
 
-       LD_UTRACE(UTRACE_LOAD_OBJECT, obj, obj->mapbase, 0, 0, obj->path);
+       LD_UTRACE(UTRACE_LOAD_OBJECT, obj, obj->mapbase, obj->mapsize, 0,
+           obj->path);
        return (0);
 }
 

Reply via email to