PERFORCE change 133144 for review
John Birrell
jb at FreeBSD.org
Sat Jan 12 16:03:03 PST 2008
http://perforce.freebsd.org/chv.cgi?CH=133144
Change 133144 by jb at jb_freebsd1 on 2008/01/13 00:02:57
Build the DTrace runtime initialisation object which gets linked to
the object generated by "dtrace -G".
Affected files ...
.. //depot/projects/dtrace/src/cddl/lib/Makefile#11 edit
.. //depot/projects/dtrace/src/cddl/lib/drti/Makefile#1 add
.. //depot/projects/dtrace/src/contrib/opensolaris/lib/libdtrace/common/drti.c#7 edit
Differences ...
==== //depot/projects/dtrace/src/cddl/lib/Makefile#11 (text+ko) ====
@@ -2,7 +2,8 @@
.include <bsd.own.mk>
-SUBDIR= libavl \
+SUBDIR= drti \
+ libavl \
libctf \
libdtrace \
libnvpair \
==== //depot/projects/dtrace/src/contrib/opensolaris/lib/libdtrace/common/drti.c#7 (text) ====
@@ -85,7 +85,11 @@
va_end(ap);
}
+#if defined(sun)
#pragma init(dtrace_dof_init)
+#else
+static void dtrace_dof_init(void) __attribute__ ((constructor));
+#endif
static void
dtrace_dof_init(void)
@@ -97,8 +101,13 @@
Elf32_Ehdr *elf;
#endif
dof_helper_t dh;
+#if defined(sun)
Link_map *lmp;
Lmid_t lmid;
+#else
+ struct link_map *lmp;
+ u_long lmid = 0;
+#endif
int fd;
const char *p;
@@ -110,10 +119,12 @@
return;
}
+#if defined(sun)
if (dlinfo(RTLD_SELF, RTLD_DI_LMID, &lmid) == -1) {
dprintf(1, "couldn't discover link map ID\n");
return;
}
+#endif
if ((modname = strrchr(lmp->l_name, '/')) == NULL)
modname = lmp->l_name;
@@ -131,7 +142,7 @@
elf = (void *)lmp->l_addr;
dh.dofhp_dof = (uintptr_t)dof;
- dh.dofhp_addr = elf->e_type == ET_DYN ? lmp->l_addr : 0;
+ dh.dofhp_addr = elf->e_type == ET_DYN ? (uintptr_t) lmp->l_addr : 0;
if (lmid == 0) {
(void) snprintf(dh.dofhp_mod, sizeof (dh.dofhp_mod),
@@ -170,7 +181,12 @@
(void) close(fd);
}
+#if defined(sun)
#pragma fini(dtrace_dof_fini)
+#else
+static void dtrace_dof_fini(void) __attribute__ ((destructor));
+#endif
+
static void
dtrace_dof_fini(void)
{
More information about the p4-projects
mailing list