Index: head/libexec/rtld-elf/rtld.c =================================================================== --- head/libexec/rtld-elf/rtld.c +++ head/libexec/rtld-elf/rtld.c @@ -2272,8 +2272,10 @@ parse_rtld_phdr(&obj_rtld); obj_enforce_relro(&obj_rtld); + r_debug.r_version = R_DEBUG_VERSION; r_debug.r_brk = r_debug_state; r_debug.r_state = RT_CONSISTENT; + r_debug.r_ldbase = obj_rtld.relocbase; } /* Index: head/sys/sys/link_elf.h =================================================================== --- head/sys/sys/link_elf.h +++ head/sys/sys/link_elf.h @@ -69,7 +69,7 @@ } Link_map; struct r_debug { - int r_version; /* not used */ + int r_version; /* Currently '1' */ struct link_map *r_map; /* list of loaded images */ void (*r_brk)(struct r_debug *, struct link_map *); /* pointer to break point */ @@ -78,7 +78,10 @@ RT_ADD, /* adding a shared library */ RT_DELETE /* removing a shared library */ } r_state; + void *r_ldbase; /* Base address of rtld */ }; + +#define R_DEBUG_VERSION 1 struct dl_phdr_info {