Page MenuHomeFreeBSD

D24946.id72096.diff
No OneTemporary

D24946.id72096.diff

Index: head/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c
===================================================================
--- head/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c
+++ head/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c
@@ -143,12 +143,18 @@
return;
}
+#ifdef __FreeBSD__
+ elf = (void *)lmp->l_base;
+#else
elf = (void *)lmp->l_addr;
+#endif
dh.dofhp_dof = (uintptr_t)dof;
- dh.dofhp_addr = elf->e_type == ET_DYN ? (uintptr_t) lmp->l_addr : 0;
#ifdef __FreeBSD__
+ dh.dofhp_addr = elf->e_type == ET_DYN ? (uintptr_t) lmp->l_base : 0;
dh.dofhp_pid = getpid();
+#else
+ dh.dofhp_addr = elf->e_type == ET_DYN ? (uintptr_t) lmp->l_addr : 0;
#endif
if (lmid == 0) {
Index: head/lib/libc/gen/dlinfo.3
===================================================================
--- head/lib/libc/gen/dlinfo.3
+++ head/lib/libc/gen/dlinfo.3
@@ -105,17 +105,16 @@
.In link.h
and has the following members:
.Bd -literal -offset indent
-caddr_t l_addr; /* Load Offset of library */
+caddr_t l_base; /* Base Address of library */
const char *l_name; /* Absolute Path to Library */
const void *l_ld; /* Pointer to .dynamic in memory */
struct link_map *l_next, /* linked list of mapped libs */
*l_prev;
+caddr_t l_addr; /* Load Offset of library */
.Ed
.Bl -tag -width ".Va l_addr"
-.It Va l_addr
-The load offset of the object, that is, the difference between
-the actual load address and the base virtual address the object
-was linked at.
+.It Va l_base
+The base address of the object loaded into memory.
.It Va l_name
The full name of the loaded shared object.
.It Va l_ld
@@ -130,6 +129,10 @@
The previous
.Vt Link_map
structure on the link-map list.
+.It Va l_addr
+The load offset of the object, that is, the difference between
+the actual load address and the base virtual address the object
+was linked at.
.El
.It Dv RTLD_DI_SERINFO
Retrieve the library search paths associated with the given
Index: head/libexec/rtld-elf/rtld.c
===================================================================
--- head/libexec/rtld-elf/rtld.c
+++ head/libexec/rtld-elf/rtld.c
@@ -4032,8 +4032,9 @@
struct link_map *prev;
obj->linkmap.l_name = obj->path;
- obj->linkmap.l_addr = obj->relocbase;
+ obj->linkmap.l_base = obj->mapbase;
obj->linkmap.l_ld = obj->dynamic;
+ obj->linkmap.l_addr = obj->relocbase;
if (r_debug.r_map == NULL) {
r_debug.r_map = l;
Index: head/sys/sys/link_elf.h
===================================================================
--- head/sys/sys/link_elf.h
+++ head/sys/sys/link_elf.h
@@ -57,13 +57,14 @@
#define LA_SER_SECURE 0x80 /* default (secure) path prepended */
typedef struct link_map {
- caddr_t l_addr; /* Load Offset of library */
+ caddr_t l_base; /* Base Address of library */
#ifdef __mips__
caddr_t l_xxx; /* unused */
#endif
const char *l_name; /* Absolute Path to Library */
const void *l_ld; /* Pointer to .dynamic in memory */
struct link_map *l_next, *l_prev; /* linked list of of mapped libs */
+ caddr_t l_addr; /* Load Offset of library */
} Link_map;
struct r_debug {

File Metadata

Mime Type
text/plain
Expires
Thu, Dec 26, 10:17 AM (10 h, 55 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15599161
Default Alt Text
D24946.id72096.diff (3 KB)

Event Timeline