Date: Sun, 13 Jan 2008 00:03:02 GMT From: John Birrell <jb@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 133144 for review Message-ID: <200801130003.m0D032L3053611@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=133144 Change 133144 by jb@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) {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200801130003.m0D032L3053611>