- if (MH_MAGIC_KERNEL != _mh_execute_header.magic) {
- g_sdt_kernctl.mod_address = (vm_address_t)NULL;
- g_sdt_kernctl.mod_size = 0;
- } else {
- kernel_mach_header_t *mh;
- struct load_command *cmd;
- kernel_segment_command_t *orig_ts = NULL, *orig_le = NULL;
- struct symtab_command *orig_st = NULL;
- kernel_nlist_t *sym = NULL;
- char *strings;
- unsigned int i;
-
- g_sdt_mach_module.sdt_nprobes = 0;
- g_sdt_mach_module.sdt_probes = NULL;
-
- g_sdt_kernctl.mod_address = (vm_address_t)&g_sdt_mach_module;
- g_sdt_kernctl.mod_size = 0;
- strncpy((char *)&(g_sdt_kernctl.mod_modname), "mach_kernel", KMOD_MAX_NAME);
-
- g_sdt_kernctl.mod_next = NULL;
- g_sdt_kernctl.mod_stale = NULL;
- g_sdt_kernctl.mod_id = 0;
- g_sdt_kernctl.mod_loadcnt = 1;
- g_sdt_kernctl.mod_loaded = 1;
- g_sdt_kernctl.mod_flags = 0;
- g_sdt_kernctl.mod_nenabled = 0;
-
- mh = &_mh_execute_header;
- cmd = (struct load_command*) &mh[1];
- for (i = 0; i < mh->ncmds; i++) {
- if (cmd->cmd == LC_SEGMENT_KERNEL) {
- kernel_segment_command_t *orig_sg = (kernel_segment_command_t *) cmd;
-
- if (LIT_STRNEQL(orig_sg->segname, SEG_TEXT))
- orig_ts = orig_sg;
- else if (LIT_STRNEQL(orig_sg->segname, SEG_LINKEDIT))
- orig_le = orig_sg;
- else if (LIT_STRNEQL(orig_sg->segname, ""))
- orig_ts = orig_sg; /* kexts have a single unnamed segment */
+ nname[i] = '\0';
+ return nname;
+}
+
+void
+sdt_early_init( void )
+{
+ if (dtrace_sdt_probes_restricted()) {
+ return;
+ }
+ if (MH_MAGIC_KERNEL != _mh_execute_header.magic) {
+ g_sdt_kernctl.mod_address = (vm_address_t)NULL;
+ g_sdt_kernctl.mod_size = 0;
+ } else {
+ kernel_mach_header_t *mh;
+ struct load_command *cmd;
+ kernel_segment_command_t *orig_ts = NULL, *orig_le = NULL;
+ kernel_section_t *orig_dt = NULL;
+ struct symtab_command *orig_st = NULL;
+ kernel_nlist_t *sym = NULL;
+ char *strings;
+ unsigned int i;
+ unsigned int len;
+
+ g_sdt_mach_module.sdt_nprobes = 0;
+ g_sdt_mach_module.sdt_probes = NULL;
+
+ g_sdt_kernctl.mod_address = (vm_address_t)&g_sdt_mach_module;
+ g_sdt_kernctl.mod_size = 0;
+ strncpy((char *)&(g_sdt_kernctl.mod_modname), "mach_kernel", KMOD_MAX_NAME);
+
+ g_sdt_kernctl.mod_next = NULL;
+ g_sdt_kernctl.mod_stale = NULL;
+ g_sdt_kernctl.mod_id = 0;
+ g_sdt_kernctl.mod_loadcnt = 1;
+ g_sdt_kernctl.mod_loaded = 1;
+ g_sdt_kernctl.mod_flags = 0;
+ g_sdt_kernctl.mod_nenabled = 0;
+
+ mh = &_mh_execute_header;
+ cmd = (struct load_command*) &mh[1];
+ for (i = 0; i < mh->ncmds; i++) {
+ if (cmd->cmd == LC_SEGMENT_KERNEL) {
+ kernel_segment_command_t *orig_sg = (kernel_segment_command_t *) cmd;
+
+ if (LIT_STRNEQL(orig_sg->segname, SEG_TEXT)) {
+ orig_ts = orig_sg;
+ } else if (LIT_STRNEQL(orig_sg->segname, SEG_LINKEDIT)) {
+ orig_le = orig_sg;
+ } else if (LIT_STRNEQL(orig_sg->segname, "")) {
+ orig_ts = orig_sg; /* kexts have a single unnamed segment */