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); }