[launchd-changes] [23754] trunk
source_changes at macosforge.org
source_changes at macosforge.org
Sat Nov 22 14:31:21 PST 2008
Revision: 23754
http://trac.macosforge.org/projects/launchd/changeset/23754
Author: dsorresso at apple.com
Date: 2008-11-22 14:31:20 -0800 (Sat, 22 Nov 2008)
Log Message:
-----------
<rdar://problem/5707328> launchd restarts user agent on log out/restart/shutdown
<rdar://problem/6003804> 1/3rd fewer threads
<rdar://problem/6046664> TASK: flatten per-user bootstrap namespaces
<rdar://problem/6350674> Remove old bootstrap_set_policy() bits from launchd
<rdar://problem/6351795> SnowLeopard: launchd_libs doesn't installhrds correctly
<rdar://problem/6363222> calling exit() from a signal handler considered harmful
<rdar://problem/6365078> SnowLeopard10A212: Shutdown was in a loop waiting for processes to stop
<rdar://problem/6378416> Execution of rc.boot differs in Embedded and SnowLeopard
<rdar://problem/6384805> launchd: using socket types requires sys/socket.h
<rdar://problem/6387285> There's no _vproc_transaction_count_for_pid(), bootstrap_lookup_children(), etc.
Removed INTERNAL_ABI.
Overall fixes to internal shutdown path having to do with sampling. Shutdown should hang much less often now.
Other assorted fixes.
Modified Paths:
--------------
trunk/launchd/src/bootstrap.h
trunk/launchd/src/bootstrap_priv.h
trunk/launchd/src/launch_priv.h
trunk/launchd/src/launchctl.c
trunk/launchd/src/launchd.c
trunk/launchd/src/launchd.h
trunk/launchd/src/launchd_core_logic.c
trunk/launchd/src/launchd_core_logic.h
trunk/launchd/src/launchd_internal.defs
trunk/launchd/src/launchd_ktrace.c
trunk/launchd/src/launchd_ktrace.h
trunk/launchd/src/launchd_mig_types.defs
trunk/launchd/src/launchd_runtime.c
trunk/launchd/src/launchd_runtime.h
trunk/launchd/src/launchd_unix_ipc.c
trunk/launchd/src/launchd_unix_ipc.h
trunk/launchd/src/libbootstrap.c
trunk/launchd/src/libvproc.c
trunk/launchd/src/protocol_job_reply.defs
trunk/launchd/src/protocol_vproc.defs
trunk/launchd/src/vproc_priv.h
trunk/launchd.xcodeproj/project.pbxproj
Removed Paths:
-------------
trunk/launchd/src/Makefile.am
trunk/launchd/src/Makefile.in
Deleted: trunk/launchd/src/Makefile.am
===================================================================
--- trunk/launchd/src/Makefile.am 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/Makefile.am 2008-11-22 22:31:20 UTC (rev 23754)
@@ -1,120 +0,0 @@
-CWARN = -Wall -Wextra -Waggregate-return -Wfloat-equal -Wshadow -Wpacked -Wmissing-prototypes -Wmissing-declarations -Werror -Wstrict-overflow=4 # -Wstrict-aliasing=2 -Wshorten-64-to-32 # -Wpadded -Wconversion
-CTUNE = -fvisibility=hidden -freorder-blocks -fdiagnostics-show-option # -fstrict-aliasing
-CMISC = -isysroot $(SDKROOT) -F$(SDKROOT)/System/Library/PrivateFrameworks -Dmig_external=__private_extern__ -D_DARWIN_USE_64_BIT_INODE=1
-AM_CFLAGS = $(CTUNE) $(CMISC) $(CWARN)
-AM_LDFLAGS = -Wl,-syslibroot,$(SDKROOT)
-
-CLEANFILES = protocol_vproc.h protocol_vprocServer.c protocol_vprocUser.c protocol_vprocServer.h \
- launchd_internal.h launchd_internalServer.h launchd_internalServer.c launchd_internalUser.c \
- notifyServer.c notifyServer.h job_replyUser.c job_reply.h __version.c mach_excServer.c mach_excServer.h
-
-protocol_vproc.h protocol_vprocServer.c protocol_vprocUser.c protocol_vprocServer.h: $(srcdir)/protocol_job.defs
- mig $(MIGFLAGS) -sheader protocol_vprocServer.h $(srcdir)/protocol_job.defs
-
-if LIBS_ONLY
-
-noinst_LIBRARIES = liblaunch.a liblaunch_profile.a
-
-liblaunch_a_CFLAGS = -D__DARWIN_NON_CANCELABLE=1 $(AM_CFLAGS)
-liblaunch_a_SOURCES = liblaunch.c libvproc.c libbootstrap.c protocol_vprocUser.c launchd_ktrace.c __version.c
-
-liblaunch_profile_a_CFLAGS = -pg -D__DARWIN_NON_CANCELABLE=1 $(AM_CFLAGS)
-liblaunch_profile_a_SOURCES = liblaunch.c libvproc.c libbootstrap.c protocol_vprocUser.c launchd_ktrace.c __version.c
-
-$(srcdir)/libvproc.c:: protocol_vproc.h
-
-$(srcdir)/protocol_vprocUser.c:: protocol_vproc.h
-
-__version.c:
- /Developer/Makefiles/bin/version.pl launchd_libs > $@
-
-
-install-data-hook:
- mkdir -p $(DESTDIR)/usr/local/lib/system
- cp liblaunch.a $(DESTDIR)/usr/local/lib/system
- cp liblaunch.a $(DESTDIR)/usr/local/lib/system/liblaunch_debug.a
- cp liblaunch_profile.a $(DESTDIR)/usr/local/lib/system/liblaunch_profile.a
-
-else
-
-bin_PROGRAMS = launchctl wait4path
-if DO_EMBEDDED_MAGIC
-sbin_PROGRAMS = launchd
-else
-sbin_PROGRAMS = launchd SystemStarter
-endif
-libexec_PROGRAMS = launchproxy
-
-sysconf_DATA = hostconfig rc.common rc.netboot
-
-launchctl_CFLAGS = $(AM_CFLAGS) -isystem $(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders
-launchctl_LDFLAGS = $(AM_LDFLAGS) -framework CoreFoundation -framework IOKit $(LIBS_SECURITY) -weak_library /usr/lib/libedit.dylib
-
-if DO_EMBEDDED_MAGIC
-else
-SystemStarter_CFLAGS = -mdynamic-no-pic $(AM_CFLAGS)
-SystemStarter_LDFLAGS = $(AM_LDFLAGS) -framework CoreFoundation -framework IOKit -framework DiskArbitration
-SystemStarter_SOURCES = StartupItems.c IPC.c SystemStarter.c
-endif
-
-launchd_CFLAGS = -mdynamic-no-pic $(AM_CFLAGS)
-launchd_LDFLAGS = $(AM_LDFLAGS) -lbsm
-launchd_SOURCES = launchd.c launchd_core_logic.c launchd_unix_ipc.c protocol_vprocServer.c notifyServer.c launchd_internalUser.c launchd_internalServer.c job_replyUser.c launchd_runtime.c launchd_runtime_kill.c job_forwardUser.c mach_excServer.c launchd_ktrace.c
-
-launchd_runtime.c:: notifyServer.h launchd_internal.h mach_excServer.h
-launchd_core_logic.c:: protocol_vproc.h job_reply.h protocol_vprocServer.h job_forward.h
-
-launchproxy_LDFLAGS = $(AM_LDFLAGS) $(LIBS_SECURITY)
-
-job_forwardUser.c job_forward.h: $(srcdir)/protocol_job_forward.defs
- mig $(MIGFLAGS) -sheader /dev/null -server /dev/null $(srcdir)/protocol_job_forward.defs
-
-notifyServer.c notifyServer.h: /usr/include/mach/notify.defs
- mig $(MIGFLAGS) -header /dev/null -user /dev/null -sheader notifyServer.h /usr/include/mach/notify.defs
-
-mach_excServer.c mach_excServer.h: /usr/include/mach/mach_exc.defs
- mig $(MIGFLAGS) -header /dev/null -user /dev/null -sheader mach_excServer.h /usr/include/mach/mach_exc.defs
-
-job_replyUser.c job_reply.h: $(srcdir)/protocol_job_reply.defs
- mig $(MIGFLAGS) -sheader /dev/null -server /dev/null $(srcdir)/protocol_job_reply.defs
-
-launchd_internal.h launchd_internalServer.c launchd_internalUser.c launchd_internalServer.h: $(srcdir)/launchd_internal.defs
- mig $(MIGFLAGS) -sheader launchd_internalServer.h $(srcdir)/launchd_internal.defs
-
-
-man1_MANS = wait4path.1 launchctl.1
-
-man5_MANS = launchd.plist.5 launchd.conf.5
-
-if DO_EMBEDDED_MAGIC
-man8_MANS = launchd.8 launchproxy.8
-else
-man8_MANS = StartupItemContext.8 SystemStarter.8 rc.8 launchd.8 launchproxy.8
-endif
-
-install-data-hook:
- mkdir -p $(DESTDIR)/usr/libexec
- mkdir -p $(DESTDIR)/usr/include/servers
- mkdir -p $(DESTDIR)/usr/local/include
- mkdir -p $(DESTDIR)/$(sysconfdir)/mach_init.d
- mkdir -p $(DESTDIR)/$(sysconfdir)/mach_init_per_user.d
- mkdir -p $(DESTDIR)/$(sysconfdir)/mach_init_per_login_session.d
- mkdir -p $(DESTDIR)/Library/LaunchDaemons
- mkdir -p $(DESTDIR)/Library/LaunchAgents
- mkdir -p $(DESTDIR)/System/Library/LaunchAgents
- mkdir -p $(DESTDIR)/System/Library/LaunchDaemons
- cp $(srcdir)/liblaunch_public.h $(DESTDIR)/usr/include/launch.h
- cp $(srcdir)/libvproc_public.h $(DESTDIR)/usr/include/vproc.h
- cp $(srcdir)/libbootstrap_public.h $(DESTDIR)/usr/include/servers/bootstrap.h
- cp $(srcdir)/libbootstrap_public.h $(DESTDIR)/usr/include/servers/bootstrap_defs.h
- cp $(srcdir)/libbootstrap_private.h $(DESTDIR)/usr/local/include/bootstrap_priv.h
- cp $(srcdir)/liblaunch_private.h $(DESTDIR)/usr/local/include/launch_priv.h
- cp $(srcdir)/libvproc_private.h $(DESTDIR)/usr/local/include/vproc_priv.h
- cp $(srcdir)/reboot2.h $(DESTDIR)/usr/local/include/reboot2.h
-if DO_EMBEDDED_MAGIC
-else
- cp $(srcdir)/StartupItemContext $(DESTDIR)/usr/libexec
- cp $(srcdir)/com.apple.SystemStarter.plist $(DESTDIR)/System/Library/LaunchDaemons
-endif
-
-endif
Deleted: trunk/launchd/src/Makefile.in
===================================================================
--- trunk/launchd/src/Makefile.in 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/Makefile.in 2008-11-22 22:31:20 UTC (rev 23754)
@@ -1,1283 +0,0 @@
-# Makefile.in generated by automake 1.10 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
- at LIBS_ONLY_FALSE@bin_PROGRAMS = launchctl$(EXEEXT) wait4path$(EXEEXT)
- at DO_EMBEDDED_MAGIC_FALSE@@LIBS_ONLY_FALSE at sbin_PROGRAMS = \
- at DO_EMBEDDED_MAGIC_FALSE@@LIBS_ONLY_FALSE@ launchd$(EXEEXT) \
- at DO_EMBEDDED_MAGIC_FALSE@@LIBS_ONLY_FALSE@ SystemStarter$(EXEEXT)
- at DO_EMBEDDED_MAGIC_TRUE@@LIBS_ONLY_FALSE at sbin_PROGRAMS = \
- at DO_EMBEDDED_MAGIC_TRUE@@LIBS_ONLY_FALSE@ launchd$(EXEEXT)
- at LIBS_ONLY_FALSE@libexec_PROGRAMS = launchproxy$(EXEEXT)
-subdir = src
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(srcdir)/config.h.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES =
-LIBRARIES = $(noinst_LIBRARIES)
-AR = ar
-ARFLAGS = cru
-liblaunch_a_AR = $(AR) $(ARFLAGS)
-liblaunch_a_LIBADD =
-am__liblaunch_a_SOURCES_DIST = liblaunch.c libvproc.c libbootstrap.c \
- protocol_vprocUser.c launchd_ktrace.c __version.c
- at LIBS_ONLY_TRUE@am_liblaunch_a_OBJECTS = \
- at LIBS_ONLY_TRUE@ liblaunch_a-liblaunch.$(OBJEXT) \
- at LIBS_ONLY_TRUE@ liblaunch_a-libvproc.$(OBJEXT) \
- at LIBS_ONLY_TRUE@ liblaunch_a-libbootstrap.$(OBJEXT) \
- at LIBS_ONLY_TRUE@ liblaunch_a-protocol_vprocUser.$(OBJEXT) \
- at LIBS_ONLY_TRUE@ liblaunch_a-launchd_ktrace.$(OBJEXT) \
- at LIBS_ONLY_TRUE@ liblaunch_a-__version.$(OBJEXT)
-liblaunch_a_OBJECTS = $(am_liblaunch_a_OBJECTS)
-liblaunch_profile_a_AR = $(AR) $(ARFLAGS)
-liblaunch_profile_a_LIBADD =
-am__liblaunch_profile_a_SOURCES_DIST = liblaunch.c libvproc.c \
- libbootstrap.c protocol_vprocUser.c launchd_ktrace.c \
- __version.c
- at LIBS_ONLY_TRUE@am_liblaunch_profile_a_OBJECTS = \
- at LIBS_ONLY_TRUE@ liblaunch_profile_a-liblaunch.$(OBJEXT) \
- at LIBS_ONLY_TRUE@ liblaunch_profile_a-libvproc.$(OBJEXT) \
- at LIBS_ONLY_TRUE@ liblaunch_profile_a-libbootstrap.$(OBJEXT) \
- at LIBS_ONLY_TRUE@ liblaunch_profile_a-protocol_vprocUser.$(OBJEXT) \
- at LIBS_ONLY_TRUE@ liblaunch_profile_a-launchd_ktrace.$(OBJEXT) \
- at LIBS_ONLY_TRUE@ liblaunch_profile_a-__version.$(OBJEXT)
-liblaunch_profile_a_OBJECTS = $(am_liblaunch_profile_a_OBJECTS)
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libexecdir)" \
- "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man1dir)" \
- "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)" \
- "$(DESTDIR)$(sysconfdir)"
-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-PROGRAMS = $(bin_PROGRAMS) $(libexec_PROGRAMS) $(sbin_PROGRAMS)
-am__SystemStarter_SOURCES_DIST = StartupItems.c IPC.c SystemStarter.c
- at DO_EMBEDDED_MAGIC_FALSE@@LIBS_ONLY_FALSE at am_SystemStarter_OBJECTS = SystemStarter-StartupItems.$(OBJEXT) \
- at DO_EMBEDDED_MAGIC_FALSE@@LIBS_ONLY_FALSE@ SystemStarter-IPC.$(OBJEXT) \
- at DO_EMBEDDED_MAGIC_FALSE@@LIBS_ONLY_FALSE@ SystemStarter-SystemStarter.$(OBJEXT)
-SystemStarter_OBJECTS = $(am_SystemStarter_OBJECTS)
-SystemStarter_LDADD = $(LDADD)
-SystemStarter_LINK = $(CCLD) $(SystemStarter_CFLAGS) $(CFLAGS) \
- $(SystemStarter_LDFLAGS) $(LDFLAGS) -o $@
-launchctl_SOURCES = launchctl.c
-launchctl_OBJECTS = launchctl-launchctl.$(OBJEXT)
-launchctl_LDADD = $(LDADD)
-launchctl_LINK = $(CCLD) $(launchctl_CFLAGS) $(CFLAGS) \
- $(launchctl_LDFLAGS) $(LDFLAGS) -o $@
-am__launchd_SOURCES_DIST = launchd.c launchd_core_logic.c \
- launchd_unix_ipc.c protocol_vprocServer.c notifyServer.c \
- launchd_internalUser.c launchd_internalServer.c \
- job_replyUser.c launchd_runtime.c launchd_runtime_kill.c \
- job_forwardUser.c mach_excServer.c launchd_ktrace.c
- at LIBS_ONLY_FALSE@am_launchd_OBJECTS = launchd-launchd.$(OBJEXT) \
- at LIBS_ONLY_FALSE@ launchd-launchd_core_logic.$(OBJEXT) \
- at LIBS_ONLY_FALSE@ launchd-launchd_unix_ipc.$(OBJEXT) \
- at LIBS_ONLY_FALSE@ launchd-protocol_vprocServer.$(OBJEXT) \
- at LIBS_ONLY_FALSE@ launchd-notifyServer.$(OBJEXT) \
- at LIBS_ONLY_FALSE@ launchd-launchd_internalUser.$(OBJEXT) \
- at LIBS_ONLY_FALSE@ launchd-launchd_internalServer.$(OBJEXT) \
- at LIBS_ONLY_FALSE@ launchd-job_replyUser.$(OBJEXT) \
- at LIBS_ONLY_FALSE@ launchd-launchd_runtime.$(OBJEXT) \
- at LIBS_ONLY_FALSE@ launchd-launchd_runtime_kill.$(OBJEXT) \
- at LIBS_ONLY_FALSE@ launchd-job_forwardUser.$(OBJEXT) \
- at LIBS_ONLY_FALSE@ launchd-mach_excServer.$(OBJEXT) \
- at LIBS_ONLY_FALSE@ launchd-launchd_ktrace.$(OBJEXT)
-launchd_OBJECTS = $(am_launchd_OBJECTS)
-launchd_LDADD = $(LDADD)
-launchd_LINK = $(CCLD) $(launchd_CFLAGS) $(CFLAGS) $(launchd_LDFLAGS) \
- $(LDFLAGS) -o $@
-launchproxy_SOURCES = launchproxy.c
-launchproxy_OBJECTS = launchproxy.$(OBJEXT)
-launchproxy_LDADD = $(LDADD)
-launchproxy_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(launchproxy_LDFLAGS) $(LDFLAGS) -o $@
-wait4path_SOURCES = wait4path.c
-wait4path_OBJECTS = wait4path.$(OBJEXT)
-wait4path_LDADD = $(LDADD)
-DEFAULT_INCLUDES = -I. at am__isrc@
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(liblaunch_a_SOURCES) $(liblaunch_profile_a_SOURCES) \
- $(SystemStarter_SOURCES) launchctl.c $(launchd_SOURCES) \
- launchproxy.c wait4path.c
-DIST_SOURCES = $(am__liblaunch_a_SOURCES_DIST) \
- $(am__liblaunch_profile_a_SOURCES_DIST) \
- $(am__SystemStarter_SOURCES_DIST) launchctl.c \
- $(am__launchd_SOURCES_DIST) launchproxy.c wait4path.c
-man1dir = $(mandir)/man1
-man5dir = $(mandir)/man5
-man8dir = $(mandir)/man8
-NROFF = nroff
-MANS = $(man1_MANS) $(man5_MANS) $(man8_MANS)
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-sysconfDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(sysconf_DATA)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBS_SECURITY = @LIBS_SECURITY@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WEAKLIBS_SECURITY = @WEAKLIBS_SECURITY@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-CWARN = -Wall -Wextra -Waggregate-return -Wfloat-equal -Wshadow -Wpacked -Wmissing-prototypes -Wmissing-declarations -Werror -Wstrict-overflow=4 # -Wstrict-aliasing=2 -Wshorten-64-to-32 # -Wpadded -Wconversion
-CTUNE = -fvisibility=hidden -freorder-blocks -fdiagnostics-show-option # -fstrict-aliasing
-CMISC = -isysroot $(SDKROOT) -F$(SDKROOT)/System/Library/PrivateFrameworks -Dmig_external=__private_extern__ -D_DARWIN_USE_64_BIT_INODE=1
-AM_CFLAGS = $(CTUNE) $(CMISC) $(CWARN)
-AM_LDFLAGS = -Wl,-syslibroot,$(SDKROOT)
-CLEANFILES = protocol_vproc.h protocol_vprocServer.c protocol_vprocUser.c protocol_vprocServer.h \
- launchd_internal.h launchd_internalServer.h launchd_internalServer.c launchd_internalUser.c \
- notifyServer.c notifyServer.h job_replyUser.c job_reply.h __version.c mach_excServer.c mach_excServer.h
-
- at LIBS_ONLY_TRUE@noinst_LIBRARIES = liblaunch.a liblaunch_profile.a
- at LIBS_ONLY_TRUE@liblaunch_a_CFLAGS = -D__DARWIN_NON_CANCELABLE=1 $(AM_CFLAGS)
- at LIBS_ONLY_TRUE@liblaunch_a_SOURCES = liblaunch.c libvproc.c libbootstrap.c protocol_vprocUser.c launchd_ktrace.c __version.c
- at LIBS_ONLY_TRUE@liblaunch_profile_a_CFLAGS = -pg -D__DARWIN_NON_CANCELABLE=1 $(AM_CFLAGS)
- at LIBS_ONLY_TRUE@liblaunch_profile_a_SOURCES = liblaunch.c libvproc.c libbootstrap.c protocol_vprocUser.c launchd_ktrace.c __version.c
- at LIBS_ONLY_FALSE@sysconf_DATA = hostconfig rc.common rc.netboot
- at LIBS_ONLY_FALSE@launchctl_CFLAGS = $(AM_CFLAGS) -isystem $(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders
- at LIBS_ONLY_FALSE@launchctl_LDFLAGS = $(AM_LDFLAGS) -framework CoreFoundation -framework IOKit $(LIBS_SECURITY) -weak_library /usr/lib/libedit.dylib
- at DO_EMBEDDED_MAGIC_FALSE@@LIBS_ONLY_FALSE at SystemStarter_CFLAGS = -mdynamic-no-pic $(AM_CFLAGS)
- at DO_EMBEDDED_MAGIC_FALSE@@LIBS_ONLY_FALSE at SystemStarter_LDFLAGS = $(AM_LDFLAGS) -framework CoreFoundation -framework IOKit -framework DiskArbitration
- at DO_EMBEDDED_MAGIC_FALSE@@LIBS_ONLY_FALSE at SystemStarter_SOURCES = StartupItems.c IPC.c SystemStarter.c
- at LIBS_ONLY_FALSE@launchd_CFLAGS = -mdynamic-no-pic $(AM_CFLAGS)
- at LIBS_ONLY_FALSE@launchd_LDFLAGS = $(AM_LDFLAGS) -lbsm
- at LIBS_ONLY_FALSE@launchd_SOURCES = launchd.c launchd_core_logic.c launchd_unix_ipc.c protocol_vprocServer.c notifyServer.c launchd_internalUser.c launchd_internalServer.c job_replyUser.c launchd_runtime.c launchd_runtime_kill.c job_forwardUser.c mach_excServer.c launchd_ktrace.c
- at LIBS_ONLY_FALSE@launchproxy_LDFLAGS = $(AM_LDFLAGS) $(LIBS_SECURITY)
- at LIBS_ONLY_FALSE@man1_MANS = wait4path.1 launchctl.1
- at LIBS_ONLY_FALSE@man5_MANS = launchd.plist.5 launchd.conf.5
- at DO_EMBEDDED_MAGIC_FALSE@@LIBS_ONLY_FALSE at man8_MANS = StartupItemContext.8 SystemStarter.8 rc.8 launchd.8 launchproxy.8
- at DO_EMBEDDED_MAGIC_TRUE@@LIBS_ONLY_FALSE at man8_MANS = launchd.8 launchproxy.8
-all: config.h
- $(MAKE) $(AM_MAKEFLAGS) all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu src/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-config.h: stamp-h1
- @if test ! -f $@; then \
- rm -f stamp-h1; \
- $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
- else :; fi
-
-stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
- @rm -f stamp-h1
- cd $(top_builddir) && $(SHELL) ./config.status src/config.h
-$(srcdir)/config.h.in: $(am__configure_deps)
- cd $(top_srcdir) && $(AUTOHEADER)
- rm -f stamp-h1
- touch $@
-
-distclean-hdr:
- -rm -f config.h stamp-h1
-
-clean-noinstLIBRARIES:
- -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-liblaunch.a: $(liblaunch_a_OBJECTS) $(liblaunch_a_DEPENDENCIES)
- -rm -f liblaunch.a
- $(liblaunch_a_AR) liblaunch.a $(liblaunch_a_OBJECTS) $(liblaunch_a_LIBADD)
- $(RANLIB) liblaunch.a
-liblaunch_profile.a: $(liblaunch_profile_a_OBJECTS) $(liblaunch_profile_a_DEPENDENCIES)
- -rm -f liblaunch_profile.a
- $(liblaunch_profile_a_AR) liblaunch_profile.a $(liblaunch_profile_a_OBJECTS) $(liblaunch_profile_a_LIBADD)
- $(RANLIB) liblaunch_profile.a
-install-binPROGRAMS: $(bin_PROGRAMS)
- @$(NORMAL_INSTALL)
- test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
- @list='$(bin_PROGRAMS)'; for p in $$list; do \
- p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
- if test -f $$p \
- ; then \
- f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
- $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
- else :; fi; \
- done
-
-uninstall-binPROGRAMS:
- @$(NORMAL_UNINSTALL)
- @list='$(bin_PROGRAMS)'; for p in $$list; do \
- f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
- rm -f "$(DESTDIR)$(bindir)/$$f"; \
- done
-
-clean-binPROGRAMS:
- -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
-install-libexecPROGRAMS: $(libexec_PROGRAMS)
- @$(NORMAL_INSTALL)
- test -z "$(libexecdir)" || $(MKDIR_P) "$(DESTDIR)$(libexecdir)"
- @list='$(libexec_PROGRAMS)'; for p in $$list; do \
- p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
- if test -f $$p \
- ; then \
- f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " $(INSTALL_PROGRAM_ENV) $(libexecPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(libexecdir)/$$f'"; \
- $(INSTALL_PROGRAM_ENV) $(libexecPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(libexecdir)/$$f" || exit 1; \
- else :; fi; \
- done
-
-uninstall-libexecPROGRAMS:
- @$(NORMAL_UNINSTALL)
- @list='$(libexec_PROGRAMS)'; for p in $$list; do \
- f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " rm -f '$(DESTDIR)$(libexecdir)/$$f'"; \
- rm -f "$(DESTDIR)$(libexecdir)/$$f"; \
- done
-
-clean-libexecPROGRAMS:
- -test -z "$(libexec_PROGRAMS)" || rm -f $(libexec_PROGRAMS)
-install-sbinPROGRAMS: $(sbin_PROGRAMS)
- @$(NORMAL_INSTALL)
- test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
- @list='$(sbin_PROGRAMS)'; for p in $$list; do \
- p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
- if test -f $$p \
- ; then \
- f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(sbindir)/$$f'"; \
- $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(sbindir)/$$f" || exit 1; \
- else :; fi; \
- done
-
-uninstall-sbinPROGRAMS:
- @$(NORMAL_UNINSTALL)
- @list='$(sbin_PROGRAMS)'; for p in $$list; do \
- f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \
- rm -f "$(DESTDIR)$(sbindir)/$$f"; \
- done
-
-clean-sbinPROGRAMS:
- -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS)
-SystemStarter$(EXEEXT): $(SystemStarter_OBJECTS) $(SystemStarter_DEPENDENCIES)
- @rm -f SystemStarter$(EXEEXT)
- $(SystemStarter_LINK) $(SystemStarter_OBJECTS) $(SystemStarter_LDADD) $(LIBS)
-launchctl$(EXEEXT): $(launchctl_OBJECTS) $(launchctl_DEPENDENCIES)
- @rm -f launchctl$(EXEEXT)
- $(launchctl_LINK) $(launchctl_OBJECTS) $(launchctl_LDADD) $(LIBS)
-launchd$(EXEEXT): $(launchd_OBJECTS) $(launchd_DEPENDENCIES)
- @rm -f launchd$(EXEEXT)
- $(launchd_LINK) $(launchd_OBJECTS) $(launchd_LDADD) $(LIBS)
-launchproxy$(EXEEXT): $(launchproxy_OBJECTS) $(launchproxy_DEPENDENCIES)
- @rm -f launchproxy$(EXEEXT)
- $(launchproxy_LINK) $(launchproxy_OBJECTS) $(launchproxy_LDADD) $(LIBS)
-wait4path$(EXEEXT): $(wait4path_OBJECTS) $(wait4path_DEPENDENCIES)
- @rm -f wait4path$(EXEEXT)
- $(LINK) $(wait4path_OBJECTS) $(wait4path_LDADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SystemStarter-IPC.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SystemStarter-StartupItems.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SystemStarter-SystemStarter.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchctl-launchctl.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchd-job_forwardUser.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchd-job_replyUser.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchd-launchd.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchd-launchd_core_logic.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchd-launchd_internalServer.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchd-launchd_internalUser.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchd-launchd_ktrace.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchd-launchd_runtime.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchd-launchd_runtime_kill.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchd-launchd_unix_ipc.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchd-mach_excServer.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchd-notifyServer.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchd-protocol_vprocServer.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchproxy.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liblaunch_a-__version.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liblaunch_a-launchd_ktrace.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liblaunch_a-libbootstrap.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liblaunch_a-liblaunch.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liblaunch_a-libvproc.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liblaunch_a-protocol_vprocUser.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liblaunch_profile_a-__version.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liblaunch_profile_a-launchd_ktrace.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liblaunch_profile_a-libbootstrap.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liblaunch_profile_a-liblaunch.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liblaunch_profile_a-libvproc.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liblaunch_profile_a-protocol_vprocUser.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/wait4path.Po at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-liblaunch_a-liblaunch.o: liblaunch.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -MT liblaunch_a-liblaunch.o -MD -MP -MF $(DEPDIR)/liblaunch_a-liblaunch.Tpo -c -o liblaunch_a-liblaunch.o `test -f 'liblaunch.c' || echo '$(srcdir)/'`liblaunch.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_a-liblaunch.Tpo $(DEPDIR)/liblaunch_a-liblaunch.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='liblaunch.c' object='liblaunch_a-liblaunch.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -c -o liblaunch_a-liblaunch.o `test -f 'liblaunch.c' || echo '$(srcdir)/'`liblaunch.c
-
-liblaunch_a-liblaunch.obj: liblaunch.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -MT liblaunch_a-liblaunch.obj -MD -MP -MF $(DEPDIR)/liblaunch_a-liblaunch.Tpo -c -o liblaunch_a-liblaunch.obj `if test -f 'liblaunch.c'; then $(CYGPATH_W) 'liblaunch.c'; else $(CYGPATH_W) '$(srcdir)/liblaunch.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_a-liblaunch.Tpo $(DEPDIR)/liblaunch_a-liblaunch.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='liblaunch.c' object='liblaunch_a-liblaunch.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -c -o liblaunch_a-liblaunch.obj `if test -f 'liblaunch.c'; then $(CYGPATH_W) 'liblaunch.c'; else $(CYGPATH_W) '$(srcdir)/liblaunch.c'; fi`
-
-liblaunch_a-libvproc.o: libvproc.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -MT liblaunch_a-libvproc.o -MD -MP -MF $(DEPDIR)/liblaunch_a-libvproc.Tpo -c -o liblaunch_a-libvproc.o `test -f 'libvproc.c' || echo '$(srcdir)/'`libvproc.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_a-libvproc.Tpo $(DEPDIR)/liblaunch_a-libvproc.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvproc.c' object='liblaunch_a-libvproc.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -c -o liblaunch_a-libvproc.o `test -f 'libvproc.c' || echo '$(srcdir)/'`libvproc.c
-
-liblaunch_a-libvproc.obj: libvproc.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -MT liblaunch_a-libvproc.obj -MD -MP -MF $(DEPDIR)/liblaunch_a-libvproc.Tpo -c -o liblaunch_a-libvproc.obj `if test -f 'libvproc.c'; then $(CYGPATH_W) 'libvproc.c'; else $(CYGPATH_W) '$(srcdir)/libvproc.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_a-libvproc.Tpo $(DEPDIR)/liblaunch_a-libvproc.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvproc.c' object='liblaunch_a-libvproc.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -c -o liblaunch_a-libvproc.obj `if test -f 'libvproc.c'; then $(CYGPATH_W) 'libvproc.c'; else $(CYGPATH_W) '$(srcdir)/libvproc.c'; fi`
-
-liblaunch_a-libbootstrap.o: libbootstrap.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -MT liblaunch_a-libbootstrap.o -MD -MP -MF $(DEPDIR)/liblaunch_a-libbootstrap.Tpo -c -o liblaunch_a-libbootstrap.o `test -f 'libbootstrap.c' || echo '$(srcdir)/'`libbootstrap.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_a-libbootstrap.Tpo $(DEPDIR)/liblaunch_a-libbootstrap.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libbootstrap.c' object='liblaunch_a-libbootstrap.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -c -o liblaunch_a-libbootstrap.o `test -f 'libbootstrap.c' || echo '$(srcdir)/'`libbootstrap.c
-
-liblaunch_a-libbootstrap.obj: libbootstrap.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -MT liblaunch_a-libbootstrap.obj -MD -MP -MF $(DEPDIR)/liblaunch_a-libbootstrap.Tpo -c -o liblaunch_a-libbootstrap.obj `if test -f 'libbootstrap.c'; then $(CYGPATH_W) 'libbootstrap.c'; else $(CYGPATH_W) '$(srcdir)/libbootstrap.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_a-libbootstrap.Tpo $(DEPDIR)/liblaunch_a-libbootstrap.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libbootstrap.c' object='liblaunch_a-libbootstrap.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -c -o liblaunch_a-libbootstrap.obj `if test -f 'libbootstrap.c'; then $(CYGPATH_W) 'libbootstrap.c'; else $(CYGPATH_W) '$(srcdir)/libbootstrap.c'; fi`
-
-liblaunch_a-protocol_vprocUser.o: protocol_vprocUser.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -MT liblaunch_a-protocol_vprocUser.o -MD -MP -MF $(DEPDIR)/liblaunch_a-protocol_vprocUser.Tpo -c -o liblaunch_a-protocol_vprocUser.o `test -f 'protocol_vprocUser.c' || echo '$(srcdir)/'`protocol_vprocUser.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_a-protocol_vprocUser.Tpo $(DEPDIR)/liblaunch_a-protocol_vprocUser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='protocol_vprocUser.c' object='liblaunch_a-protocol_vprocUser.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -c -o liblaunch_a-protocol_vprocUser.o `test -f 'protocol_vprocUser.c' || echo '$(srcdir)/'`protocol_vprocUser.c
-
-liblaunch_a-protocol_vprocUser.obj: protocol_vprocUser.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -MT liblaunch_a-protocol_vprocUser.obj -MD -MP -MF $(DEPDIR)/liblaunch_a-protocol_vprocUser.Tpo -c -o liblaunch_a-protocol_vprocUser.obj `if test -f 'protocol_vprocUser.c'; then $(CYGPATH_W) 'protocol_vprocUser.c'; else $(CYGPATH_W) '$(srcdir)/protocol_vprocUser.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_a-protocol_vprocUser.Tpo $(DEPDIR)/liblaunch_a-protocol_vprocUser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='protocol_vprocUser.c' object='liblaunch_a-protocol_vprocUser.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -c -o liblaunch_a-protocol_vprocUser.obj `if test -f 'protocol_vprocUser.c'; then $(CYGPATH_W) 'protocol_vprocUser.c'; else $(CYGPATH_W) '$(srcdir)/protocol_vprocUser.c'; fi`
-
-liblaunch_a-launchd_ktrace.o: launchd_ktrace.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -MT liblaunch_a-launchd_ktrace.o -MD -MP -MF $(DEPDIR)/liblaunch_a-launchd_ktrace.Tpo -c -o liblaunch_a-launchd_ktrace.o `test -f 'launchd_ktrace.c' || echo '$(srcdir)/'`launchd_ktrace.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_a-launchd_ktrace.Tpo $(DEPDIR)/liblaunch_a-launchd_ktrace.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchd_ktrace.c' object='liblaunch_a-launchd_ktrace.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -c -o liblaunch_a-launchd_ktrace.o `test -f 'launchd_ktrace.c' || echo '$(srcdir)/'`launchd_ktrace.c
-
-liblaunch_a-launchd_ktrace.obj: launchd_ktrace.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -MT liblaunch_a-launchd_ktrace.obj -MD -MP -MF $(DEPDIR)/liblaunch_a-launchd_ktrace.Tpo -c -o liblaunch_a-launchd_ktrace.obj `if test -f 'launchd_ktrace.c'; then $(CYGPATH_W) 'launchd_ktrace.c'; else $(CYGPATH_W) '$(srcdir)/launchd_ktrace.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_a-launchd_ktrace.Tpo $(DEPDIR)/liblaunch_a-launchd_ktrace.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchd_ktrace.c' object='liblaunch_a-launchd_ktrace.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -c -o liblaunch_a-launchd_ktrace.obj `if test -f 'launchd_ktrace.c'; then $(CYGPATH_W) 'launchd_ktrace.c'; else $(CYGPATH_W) '$(srcdir)/launchd_ktrace.c'; fi`
-
-liblaunch_a-__version.o: __version.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -MT liblaunch_a-__version.o -MD -MP -MF $(DEPDIR)/liblaunch_a-__version.Tpo -c -o liblaunch_a-__version.o `test -f '__version.c' || echo '$(srcdir)/'`__version.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_a-__version.Tpo $(DEPDIR)/liblaunch_a-__version.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='__version.c' object='liblaunch_a-__version.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -c -o liblaunch_a-__version.o `test -f '__version.c' || echo '$(srcdir)/'`__version.c
-
-liblaunch_a-__version.obj: __version.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -MT liblaunch_a-__version.obj -MD -MP -MF $(DEPDIR)/liblaunch_a-__version.Tpo -c -o liblaunch_a-__version.obj `if test -f '__version.c'; then $(CYGPATH_W) '__version.c'; else $(CYGPATH_W) '$(srcdir)/__version.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_a-__version.Tpo $(DEPDIR)/liblaunch_a-__version.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='__version.c' object='liblaunch_a-__version.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_a_CFLAGS) $(CFLAGS) -c -o liblaunch_a-__version.obj `if test -f '__version.c'; then $(CYGPATH_W) '__version.c'; else $(CYGPATH_W) '$(srcdir)/__version.c'; fi`
-
-liblaunch_profile_a-liblaunch.o: liblaunch.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -MT liblaunch_profile_a-liblaunch.o -MD -MP -MF $(DEPDIR)/liblaunch_profile_a-liblaunch.Tpo -c -o liblaunch_profile_a-liblaunch.o `test -f 'liblaunch.c' || echo '$(srcdir)/'`liblaunch.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_profile_a-liblaunch.Tpo $(DEPDIR)/liblaunch_profile_a-liblaunch.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='liblaunch.c' object='liblaunch_profile_a-liblaunch.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -c -o liblaunch_profile_a-liblaunch.o `test -f 'liblaunch.c' || echo '$(srcdir)/'`liblaunch.c
-
-liblaunch_profile_a-liblaunch.obj: liblaunch.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -MT liblaunch_profile_a-liblaunch.obj -MD -MP -MF $(DEPDIR)/liblaunch_profile_a-liblaunch.Tpo -c -o liblaunch_profile_a-liblaunch.obj `if test -f 'liblaunch.c'; then $(CYGPATH_W) 'liblaunch.c'; else $(CYGPATH_W) '$(srcdir)/liblaunch.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_profile_a-liblaunch.Tpo $(DEPDIR)/liblaunch_profile_a-liblaunch.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='liblaunch.c' object='liblaunch_profile_a-liblaunch.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -c -o liblaunch_profile_a-liblaunch.obj `if test -f 'liblaunch.c'; then $(CYGPATH_W) 'liblaunch.c'; else $(CYGPATH_W) '$(srcdir)/liblaunch.c'; fi`
-
-liblaunch_profile_a-libvproc.o: libvproc.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -MT liblaunch_profile_a-libvproc.o -MD -MP -MF $(DEPDIR)/liblaunch_profile_a-libvproc.Tpo -c -o liblaunch_profile_a-libvproc.o `test -f 'libvproc.c' || echo '$(srcdir)/'`libvproc.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_profile_a-libvproc.Tpo $(DEPDIR)/liblaunch_profile_a-libvproc.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvproc.c' object='liblaunch_profile_a-libvproc.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -c -o liblaunch_profile_a-libvproc.o `test -f 'libvproc.c' || echo '$(srcdir)/'`libvproc.c
-
-liblaunch_profile_a-libvproc.obj: libvproc.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -MT liblaunch_profile_a-libvproc.obj -MD -MP -MF $(DEPDIR)/liblaunch_profile_a-libvproc.Tpo -c -o liblaunch_profile_a-libvproc.obj `if test -f 'libvproc.c'; then $(CYGPATH_W) 'libvproc.c'; else $(CYGPATH_W) '$(srcdir)/libvproc.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_profile_a-libvproc.Tpo $(DEPDIR)/liblaunch_profile_a-libvproc.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvproc.c' object='liblaunch_profile_a-libvproc.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -c -o liblaunch_profile_a-libvproc.obj `if test -f 'libvproc.c'; then $(CYGPATH_W) 'libvproc.c'; else $(CYGPATH_W) '$(srcdir)/libvproc.c'; fi`
-
-liblaunch_profile_a-libbootstrap.o: libbootstrap.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -MT liblaunch_profile_a-libbootstrap.o -MD -MP -MF $(DEPDIR)/liblaunch_profile_a-libbootstrap.Tpo -c -o liblaunch_profile_a-libbootstrap.o `test -f 'libbootstrap.c' || echo '$(srcdir)/'`libbootstrap.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_profile_a-libbootstrap.Tpo $(DEPDIR)/liblaunch_profile_a-libbootstrap.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libbootstrap.c' object='liblaunch_profile_a-libbootstrap.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -c -o liblaunch_profile_a-libbootstrap.o `test -f 'libbootstrap.c' || echo '$(srcdir)/'`libbootstrap.c
-
-liblaunch_profile_a-libbootstrap.obj: libbootstrap.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -MT liblaunch_profile_a-libbootstrap.obj -MD -MP -MF $(DEPDIR)/liblaunch_profile_a-libbootstrap.Tpo -c -o liblaunch_profile_a-libbootstrap.obj `if test -f 'libbootstrap.c'; then $(CYGPATH_W) 'libbootstrap.c'; else $(CYGPATH_W) '$(srcdir)/libbootstrap.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_profile_a-libbootstrap.Tpo $(DEPDIR)/liblaunch_profile_a-libbootstrap.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libbootstrap.c' object='liblaunch_profile_a-libbootstrap.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -c -o liblaunch_profile_a-libbootstrap.obj `if test -f 'libbootstrap.c'; then $(CYGPATH_W) 'libbootstrap.c'; else $(CYGPATH_W) '$(srcdir)/libbootstrap.c'; fi`
-
-liblaunch_profile_a-protocol_vprocUser.o: protocol_vprocUser.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -MT liblaunch_profile_a-protocol_vprocUser.o -MD -MP -MF $(DEPDIR)/liblaunch_profile_a-protocol_vprocUser.Tpo -c -o liblaunch_profile_a-protocol_vprocUser.o `test -f 'protocol_vprocUser.c' || echo '$(srcdir)/'`protocol_vprocUser.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_profile_a-protocol_vprocUser.Tpo $(DEPDIR)/liblaunch_profile_a-protocol_vprocUser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='protocol_vprocUser.c' object='liblaunch_profile_a-protocol_vprocUser.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -c -o liblaunch_profile_a-protocol_vprocUser.o `test -f 'protocol_vprocUser.c' || echo '$(srcdir)/'`protocol_vprocUser.c
-
-liblaunch_profile_a-protocol_vprocUser.obj: protocol_vprocUser.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -MT liblaunch_profile_a-protocol_vprocUser.obj -MD -MP -MF $(DEPDIR)/liblaunch_profile_a-protocol_vprocUser.Tpo -c -o liblaunch_profile_a-protocol_vprocUser.obj `if test -f 'protocol_vprocUser.c'; then $(CYGPATH_W) 'protocol_vprocUser.c'; else $(CYGPATH_W) '$(srcdir)/protocol_vprocUser.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_profile_a-protocol_vprocUser.Tpo $(DEPDIR)/liblaunch_profile_a-protocol_vprocUser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='protocol_vprocUser.c' object='liblaunch_profile_a-protocol_vprocUser.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -c -o liblaunch_profile_a-protocol_vprocUser.obj `if test -f 'protocol_vprocUser.c'; then $(CYGPATH_W) 'protocol_vprocUser.c'; else $(CYGPATH_W) '$(srcdir)/protocol_vprocUser.c'; fi`
-
-liblaunch_profile_a-launchd_ktrace.o: launchd_ktrace.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -MT liblaunch_profile_a-launchd_ktrace.o -MD -MP -MF $(DEPDIR)/liblaunch_profile_a-launchd_ktrace.Tpo -c -o liblaunch_profile_a-launchd_ktrace.o `test -f 'launchd_ktrace.c' || echo '$(srcdir)/'`launchd_ktrace.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_profile_a-launchd_ktrace.Tpo $(DEPDIR)/liblaunch_profile_a-launchd_ktrace.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchd_ktrace.c' object='liblaunch_profile_a-launchd_ktrace.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -c -o liblaunch_profile_a-launchd_ktrace.o `test -f 'launchd_ktrace.c' || echo '$(srcdir)/'`launchd_ktrace.c
-
-liblaunch_profile_a-launchd_ktrace.obj: launchd_ktrace.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -MT liblaunch_profile_a-launchd_ktrace.obj -MD -MP -MF $(DEPDIR)/liblaunch_profile_a-launchd_ktrace.Tpo -c -o liblaunch_profile_a-launchd_ktrace.obj `if test -f 'launchd_ktrace.c'; then $(CYGPATH_W) 'launchd_ktrace.c'; else $(CYGPATH_W) '$(srcdir)/launchd_ktrace.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_profile_a-launchd_ktrace.Tpo $(DEPDIR)/liblaunch_profile_a-launchd_ktrace.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchd_ktrace.c' object='liblaunch_profile_a-launchd_ktrace.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -c -o liblaunch_profile_a-launchd_ktrace.obj `if test -f 'launchd_ktrace.c'; then $(CYGPATH_W) 'launchd_ktrace.c'; else $(CYGPATH_W) '$(srcdir)/launchd_ktrace.c'; fi`
-
-liblaunch_profile_a-__version.o: __version.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -MT liblaunch_profile_a-__version.o -MD -MP -MF $(DEPDIR)/liblaunch_profile_a-__version.Tpo -c -o liblaunch_profile_a-__version.o `test -f '__version.c' || echo '$(srcdir)/'`__version.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_profile_a-__version.Tpo $(DEPDIR)/liblaunch_profile_a-__version.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='__version.c' object='liblaunch_profile_a-__version.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -c -o liblaunch_profile_a-__version.o `test -f '__version.c' || echo '$(srcdir)/'`__version.c
-
-liblaunch_profile_a-__version.obj: __version.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -MT liblaunch_profile_a-__version.obj -MD -MP -MF $(DEPDIR)/liblaunch_profile_a-__version.Tpo -c -o liblaunch_profile_a-__version.obj `if test -f '__version.c'; then $(CYGPATH_W) '__version.c'; else $(CYGPATH_W) '$(srcdir)/__version.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/liblaunch_profile_a-__version.Tpo $(DEPDIR)/liblaunch_profile_a-__version.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='__version.c' object='liblaunch_profile_a-__version.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -c -o liblaunch_profile_a-__version.obj `if test -f '__version.c'; then $(CYGPATH_W) '__version.c'; else $(CYGPATH_W) '$(srcdir)/__version.c'; fi`
-
-SystemStarter-StartupItems.o: StartupItems.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(SystemStarter_CFLAGS) $(CFLAGS) -MT SystemStarter-StartupItems.o -MD -MP -MF $(DEPDIR)/SystemStarter-StartupItems.Tpo -c -o SystemStarter-StartupItems.o `test -f 'StartupItems.c' || echo '$(srcdir)/'`StartupItems.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/SystemStarter-StartupItems.Tpo $(DEPDIR)/SystemStarter-StartupItems.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='StartupItems.c' object='SystemStarter-StartupItems.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(SystemStarter_CFLAGS) $(CFLAGS) -c -o SystemStarter-StartupItems.o `test -f 'StartupItems.c' || echo '$(srcdir)/'`StartupItems.c
-
-SystemStarter-StartupItems.obj: StartupItems.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(SystemStarter_CFLAGS) $(CFLAGS) -MT SystemStarter-StartupItems.obj -MD -MP -MF $(DEPDIR)/SystemStarter-StartupItems.Tpo -c -o SystemStarter-StartupItems.obj `if test -f 'StartupItems.c'; then $(CYGPATH_W) 'StartupItems.c'; else $(CYGPATH_W) '$(srcdir)/StartupItems.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/SystemStarter-StartupItems.Tpo $(DEPDIR)/SystemStarter-StartupItems.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='StartupItems.c' object='SystemStarter-StartupItems.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(SystemStarter_CFLAGS) $(CFLAGS) -c -o SystemStarter-StartupItems.obj `if test -f 'StartupItems.c'; then $(CYGPATH_W) 'StartupItems.c'; else $(CYGPATH_W) '$(srcdir)/StartupItems.c'; fi`
-
-SystemStarter-IPC.o: IPC.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(SystemStarter_CFLAGS) $(CFLAGS) -MT SystemStarter-IPC.o -MD -MP -MF $(DEPDIR)/SystemStarter-IPC.Tpo -c -o SystemStarter-IPC.o `test -f 'IPC.c' || echo '$(srcdir)/'`IPC.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/SystemStarter-IPC.Tpo $(DEPDIR)/SystemStarter-IPC.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='IPC.c' object='SystemStarter-IPC.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(SystemStarter_CFLAGS) $(CFLAGS) -c -o SystemStarter-IPC.o `test -f 'IPC.c' || echo '$(srcdir)/'`IPC.c
-
-SystemStarter-IPC.obj: IPC.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(SystemStarter_CFLAGS) $(CFLAGS) -MT SystemStarter-IPC.obj -MD -MP -MF $(DEPDIR)/SystemStarter-IPC.Tpo -c -o SystemStarter-IPC.obj `if test -f 'IPC.c'; then $(CYGPATH_W) 'IPC.c'; else $(CYGPATH_W) '$(srcdir)/IPC.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/SystemStarter-IPC.Tpo $(DEPDIR)/SystemStarter-IPC.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='IPC.c' object='SystemStarter-IPC.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(SystemStarter_CFLAGS) $(CFLAGS) -c -o SystemStarter-IPC.obj `if test -f 'IPC.c'; then $(CYGPATH_W) 'IPC.c'; else $(CYGPATH_W) '$(srcdir)/IPC.c'; fi`
-
-SystemStarter-SystemStarter.o: SystemStarter.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(SystemStarter_CFLAGS) $(CFLAGS) -MT SystemStarter-SystemStarter.o -MD -MP -MF $(DEPDIR)/SystemStarter-SystemStarter.Tpo -c -o SystemStarter-SystemStarter.o `test -f 'SystemStarter.c' || echo '$(srcdir)/'`SystemStarter.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/SystemStarter-SystemStarter.Tpo $(DEPDIR)/SystemStarter-SystemStarter.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='SystemStarter.c' object='SystemStarter-SystemStarter.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(SystemStarter_CFLAGS) $(CFLAGS) -c -o SystemStarter-SystemStarter.o `test -f 'SystemStarter.c' || echo '$(srcdir)/'`SystemStarter.c
-
-SystemStarter-SystemStarter.obj: SystemStarter.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(SystemStarter_CFLAGS) $(CFLAGS) -MT SystemStarter-SystemStarter.obj -MD -MP -MF $(DEPDIR)/SystemStarter-SystemStarter.Tpo -c -o SystemStarter-SystemStarter.obj `if test -f 'SystemStarter.c'; then $(CYGPATH_W) 'SystemStarter.c'; else $(CYGPATH_W) '$(srcdir)/SystemStarter.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/SystemStarter-SystemStarter.Tpo $(DEPDIR)/SystemStarter-SystemStarter.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='SystemStarter.c' object='SystemStarter-SystemStarter.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(SystemStarter_CFLAGS) $(CFLAGS) -c -o SystemStarter-SystemStarter.obj `if test -f 'SystemStarter.c'; then $(CYGPATH_W) 'SystemStarter.c'; else $(CYGPATH_W) '$(srcdir)/SystemStarter.c'; fi`
-
-launchctl-launchctl.o: launchctl.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchctl_CFLAGS) $(CFLAGS) -MT launchctl-launchctl.o -MD -MP -MF $(DEPDIR)/launchctl-launchctl.Tpo -c -o launchctl-launchctl.o `test -f 'launchctl.c' || echo '$(srcdir)/'`launchctl.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchctl-launchctl.Tpo $(DEPDIR)/launchctl-launchctl.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchctl.c' object='launchctl-launchctl.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchctl_CFLAGS) $(CFLAGS) -c -o launchctl-launchctl.o `test -f 'launchctl.c' || echo '$(srcdir)/'`launchctl.c
-
-launchctl-launchctl.obj: launchctl.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchctl_CFLAGS) $(CFLAGS) -MT launchctl-launchctl.obj -MD -MP -MF $(DEPDIR)/launchctl-launchctl.Tpo -c -o launchctl-launchctl.obj `if test -f 'launchctl.c'; then $(CYGPATH_W) 'launchctl.c'; else $(CYGPATH_W) '$(srcdir)/launchctl.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchctl-launchctl.Tpo $(DEPDIR)/launchctl-launchctl.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchctl.c' object='launchctl-launchctl.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchctl_CFLAGS) $(CFLAGS) -c -o launchctl-launchctl.obj `if test -f 'launchctl.c'; then $(CYGPATH_W) 'launchctl.c'; else $(CYGPATH_W) '$(srcdir)/launchctl.c'; fi`
-
-launchd-launchd.o: launchd.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-launchd.o -MD -MP -MF $(DEPDIR)/launchd-launchd.Tpo -c -o launchd-launchd.o `test -f 'launchd.c' || echo '$(srcdir)/'`launchd.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-launchd.Tpo $(DEPDIR)/launchd-launchd.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchd.c' object='launchd-launchd.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-launchd.o `test -f 'launchd.c' || echo '$(srcdir)/'`launchd.c
-
-launchd-launchd.obj: launchd.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-launchd.obj -MD -MP -MF $(DEPDIR)/launchd-launchd.Tpo -c -o launchd-launchd.obj `if test -f 'launchd.c'; then $(CYGPATH_W) 'launchd.c'; else $(CYGPATH_W) '$(srcdir)/launchd.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-launchd.Tpo $(DEPDIR)/launchd-launchd.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchd.c' object='launchd-launchd.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-launchd.obj `if test -f 'launchd.c'; then $(CYGPATH_W) 'launchd.c'; else $(CYGPATH_W) '$(srcdir)/launchd.c'; fi`
-
-launchd-launchd_core_logic.o: launchd_core_logic.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-launchd_core_logic.o -MD -MP -MF $(DEPDIR)/launchd-launchd_core_logic.Tpo -c -o launchd-launchd_core_logic.o `test -f 'launchd_core_logic.c' || echo '$(srcdir)/'`launchd_core_logic.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-launchd_core_logic.Tpo $(DEPDIR)/launchd-launchd_core_logic.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchd_core_logic.c' object='launchd-launchd_core_logic.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-launchd_core_logic.o `test -f 'launchd_core_logic.c' || echo '$(srcdir)/'`launchd_core_logic.c
-
-launchd-launchd_core_logic.obj: launchd_core_logic.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-launchd_core_logic.obj -MD -MP -MF $(DEPDIR)/launchd-launchd_core_logic.Tpo -c -o launchd-launchd_core_logic.obj `if test -f 'launchd_core_logic.c'; then $(CYGPATH_W) 'launchd_core_logic.c'; else $(CYGPATH_W) '$(srcdir)/launchd_core_logic.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-launchd_core_logic.Tpo $(DEPDIR)/launchd-launchd_core_logic.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchd_core_logic.c' object='launchd-launchd_core_logic.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-launchd_core_logic.obj `if test -f 'launchd_core_logic.c'; then $(CYGPATH_W) 'launchd_core_logic.c'; else $(CYGPATH_W) '$(srcdir)/launchd_core_logic.c'; fi`
-
-launchd-launchd_unix_ipc.o: launchd_unix_ipc.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-launchd_unix_ipc.o -MD -MP -MF $(DEPDIR)/launchd-launchd_unix_ipc.Tpo -c -o launchd-launchd_unix_ipc.o `test -f 'launchd_unix_ipc.c' || echo '$(srcdir)/'`launchd_unix_ipc.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-launchd_unix_ipc.Tpo $(DEPDIR)/launchd-launchd_unix_ipc.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchd_unix_ipc.c' object='launchd-launchd_unix_ipc.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-launchd_unix_ipc.o `test -f 'launchd_unix_ipc.c' || echo '$(srcdir)/'`launchd_unix_ipc.c
-
-launchd-launchd_unix_ipc.obj: launchd_unix_ipc.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-launchd_unix_ipc.obj -MD -MP -MF $(DEPDIR)/launchd-launchd_unix_ipc.Tpo -c -o launchd-launchd_unix_ipc.obj `if test -f 'launchd_unix_ipc.c'; then $(CYGPATH_W) 'launchd_unix_ipc.c'; else $(CYGPATH_W) '$(srcdir)/launchd_unix_ipc.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-launchd_unix_ipc.Tpo $(DEPDIR)/launchd-launchd_unix_ipc.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchd_unix_ipc.c' object='launchd-launchd_unix_ipc.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-launchd_unix_ipc.obj `if test -f 'launchd_unix_ipc.c'; then $(CYGPATH_W) 'launchd_unix_ipc.c'; else $(CYGPATH_W) '$(srcdir)/launchd_unix_ipc.c'; fi`
-
-launchd-protocol_vprocServer.o: protocol_vprocServer.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-protocol_vprocServer.o -MD -MP -MF $(DEPDIR)/launchd-protocol_vprocServer.Tpo -c -o launchd-protocol_vprocServer.o `test -f 'protocol_vprocServer.c' || echo '$(srcdir)/'`protocol_vprocServer.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-protocol_vprocServer.Tpo $(DEPDIR)/launchd-protocol_vprocServer.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='protocol_vprocServer.c' object='launchd-protocol_vprocServer.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-protocol_vprocServer.o `test -f 'protocol_vprocServer.c' || echo '$(srcdir)/'`protocol_vprocServer.c
-
-launchd-protocol_vprocServer.obj: protocol_vprocServer.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-protocol_vprocServer.obj -MD -MP -MF $(DEPDIR)/launchd-protocol_vprocServer.Tpo -c -o launchd-protocol_vprocServer.obj `if test -f 'protocol_vprocServer.c'; then $(CYGPATH_W) 'protocol_vprocServer.c'; else $(CYGPATH_W) '$(srcdir)/protocol_vprocServer.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-protocol_vprocServer.Tpo $(DEPDIR)/launchd-protocol_vprocServer.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='protocol_vprocServer.c' object='launchd-protocol_vprocServer.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-protocol_vprocServer.obj `if test -f 'protocol_vprocServer.c'; then $(CYGPATH_W) 'protocol_vprocServer.c'; else $(CYGPATH_W) '$(srcdir)/protocol_vprocServer.c'; fi`
-
-launchd-notifyServer.o: notifyServer.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-notifyServer.o -MD -MP -MF $(DEPDIR)/launchd-notifyServer.Tpo -c -o launchd-notifyServer.o `test -f 'notifyServer.c' || echo '$(srcdir)/'`notifyServer.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-notifyServer.Tpo $(DEPDIR)/launchd-notifyServer.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='notifyServer.c' object='launchd-notifyServer.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-notifyServer.o `test -f 'notifyServer.c' || echo '$(srcdir)/'`notifyServer.c
-
-launchd-notifyServer.obj: notifyServer.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-notifyServer.obj -MD -MP -MF $(DEPDIR)/launchd-notifyServer.Tpo -c -o launchd-notifyServer.obj `if test -f 'notifyServer.c'; then $(CYGPATH_W) 'notifyServer.c'; else $(CYGPATH_W) '$(srcdir)/notifyServer.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-notifyServer.Tpo $(DEPDIR)/launchd-notifyServer.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='notifyServer.c' object='launchd-notifyServer.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-notifyServer.obj `if test -f 'notifyServer.c'; then $(CYGPATH_W) 'notifyServer.c'; else $(CYGPATH_W) '$(srcdir)/notifyServer.c'; fi`
-
-launchd-launchd_internalUser.o: launchd_internalUser.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-launchd_internalUser.o -MD -MP -MF $(DEPDIR)/launchd-launchd_internalUser.Tpo -c -o launchd-launchd_internalUser.o `test -f 'launchd_internalUser.c' || echo '$(srcdir)/'`launchd_internalUser.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-launchd_internalUser.Tpo $(DEPDIR)/launchd-launchd_internalUser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchd_internalUser.c' object='launchd-launchd_internalUser.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-launchd_internalUser.o `test -f 'launchd_internalUser.c' || echo '$(srcdir)/'`launchd_internalUser.c
-
-launchd-launchd_internalUser.obj: launchd_internalUser.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-launchd_internalUser.obj -MD -MP -MF $(DEPDIR)/launchd-launchd_internalUser.Tpo -c -o launchd-launchd_internalUser.obj `if test -f 'launchd_internalUser.c'; then $(CYGPATH_W) 'launchd_internalUser.c'; else $(CYGPATH_W) '$(srcdir)/launchd_internalUser.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-launchd_internalUser.Tpo $(DEPDIR)/launchd-launchd_internalUser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchd_internalUser.c' object='launchd-launchd_internalUser.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-launchd_internalUser.obj `if test -f 'launchd_internalUser.c'; then $(CYGPATH_W) 'launchd_internalUser.c'; else $(CYGPATH_W) '$(srcdir)/launchd_internalUser.c'; fi`
-
-launchd-launchd_internalServer.o: launchd_internalServer.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-launchd_internalServer.o -MD -MP -MF $(DEPDIR)/launchd-launchd_internalServer.Tpo -c -o launchd-launchd_internalServer.o `test -f 'launchd_internalServer.c' || echo '$(srcdir)/'`launchd_internalServer.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-launchd_internalServer.Tpo $(DEPDIR)/launchd-launchd_internalServer.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchd_internalServer.c' object='launchd-launchd_internalServer.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-launchd_internalServer.o `test -f 'launchd_internalServer.c' || echo '$(srcdir)/'`launchd_internalServer.c
-
-launchd-launchd_internalServer.obj: launchd_internalServer.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-launchd_internalServer.obj -MD -MP -MF $(DEPDIR)/launchd-launchd_internalServer.Tpo -c -o launchd-launchd_internalServer.obj `if test -f 'launchd_internalServer.c'; then $(CYGPATH_W) 'launchd_internalServer.c'; else $(CYGPATH_W) '$(srcdir)/launchd_internalServer.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-launchd_internalServer.Tpo $(DEPDIR)/launchd-launchd_internalServer.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchd_internalServer.c' object='launchd-launchd_internalServer.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-launchd_internalServer.obj `if test -f 'launchd_internalServer.c'; then $(CYGPATH_W) 'launchd_internalServer.c'; else $(CYGPATH_W) '$(srcdir)/launchd_internalServer.c'; fi`
-
-launchd-job_replyUser.o: job_replyUser.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-job_replyUser.o -MD -MP -MF $(DEPDIR)/launchd-job_replyUser.Tpo -c -o launchd-job_replyUser.o `test -f 'job_replyUser.c' || echo '$(srcdir)/'`job_replyUser.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-job_replyUser.Tpo $(DEPDIR)/launchd-job_replyUser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='job_replyUser.c' object='launchd-job_replyUser.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-job_replyUser.o `test -f 'job_replyUser.c' || echo '$(srcdir)/'`job_replyUser.c
-
-launchd-job_replyUser.obj: job_replyUser.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-job_replyUser.obj -MD -MP -MF $(DEPDIR)/launchd-job_replyUser.Tpo -c -o launchd-job_replyUser.obj `if test -f 'job_replyUser.c'; then $(CYGPATH_W) 'job_replyUser.c'; else $(CYGPATH_W) '$(srcdir)/job_replyUser.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-job_replyUser.Tpo $(DEPDIR)/launchd-job_replyUser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='job_replyUser.c' object='launchd-job_replyUser.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-job_replyUser.obj `if test -f 'job_replyUser.c'; then $(CYGPATH_W) 'job_replyUser.c'; else $(CYGPATH_W) '$(srcdir)/job_replyUser.c'; fi`
-
-launchd-launchd_runtime.o: launchd_runtime.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-launchd_runtime.o -MD -MP -MF $(DEPDIR)/launchd-launchd_runtime.Tpo -c -o launchd-launchd_runtime.o `test -f 'launchd_runtime.c' || echo '$(srcdir)/'`launchd_runtime.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-launchd_runtime.Tpo $(DEPDIR)/launchd-launchd_runtime.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchd_runtime.c' object='launchd-launchd_runtime.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-launchd_runtime.o `test -f 'launchd_runtime.c' || echo '$(srcdir)/'`launchd_runtime.c
-
-launchd-launchd_runtime.obj: launchd_runtime.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-launchd_runtime.obj -MD -MP -MF $(DEPDIR)/launchd-launchd_runtime.Tpo -c -o launchd-launchd_runtime.obj `if test -f 'launchd_runtime.c'; then $(CYGPATH_W) 'launchd_runtime.c'; else $(CYGPATH_W) '$(srcdir)/launchd_runtime.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-launchd_runtime.Tpo $(DEPDIR)/launchd-launchd_runtime.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchd_runtime.c' object='launchd-launchd_runtime.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-launchd_runtime.obj `if test -f 'launchd_runtime.c'; then $(CYGPATH_W) 'launchd_runtime.c'; else $(CYGPATH_W) '$(srcdir)/launchd_runtime.c'; fi`
-
-launchd-launchd_runtime_kill.o: launchd_runtime_kill.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-launchd_runtime_kill.o -MD -MP -MF $(DEPDIR)/launchd-launchd_runtime_kill.Tpo -c -o launchd-launchd_runtime_kill.o `test -f 'launchd_runtime_kill.c' || echo '$(srcdir)/'`launchd_runtime_kill.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-launchd_runtime_kill.Tpo $(DEPDIR)/launchd-launchd_runtime_kill.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchd_runtime_kill.c' object='launchd-launchd_runtime_kill.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-launchd_runtime_kill.o `test -f 'launchd_runtime_kill.c' || echo '$(srcdir)/'`launchd_runtime_kill.c
-
-launchd-launchd_runtime_kill.obj: launchd_runtime_kill.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-launchd_runtime_kill.obj -MD -MP -MF $(DEPDIR)/launchd-launchd_runtime_kill.Tpo -c -o launchd-launchd_runtime_kill.obj `if test -f 'launchd_runtime_kill.c'; then $(CYGPATH_W) 'launchd_runtime_kill.c'; else $(CYGPATH_W) '$(srcdir)/launchd_runtime_kill.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-launchd_runtime_kill.Tpo $(DEPDIR)/launchd-launchd_runtime_kill.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchd_runtime_kill.c' object='launchd-launchd_runtime_kill.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-launchd_runtime_kill.obj `if test -f 'launchd_runtime_kill.c'; then $(CYGPATH_W) 'launchd_runtime_kill.c'; else $(CYGPATH_W) '$(srcdir)/launchd_runtime_kill.c'; fi`
-
-launchd-job_forwardUser.o: job_forwardUser.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-job_forwardUser.o -MD -MP -MF $(DEPDIR)/launchd-job_forwardUser.Tpo -c -o launchd-job_forwardUser.o `test -f 'job_forwardUser.c' || echo '$(srcdir)/'`job_forwardUser.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-job_forwardUser.Tpo $(DEPDIR)/launchd-job_forwardUser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='job_forwardUser.c' object='launchd-job_forwardUser.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-job_forwardUser.o `test -f 'job_forwardUser.c' || echo '$(srcdir)/'`job_forwardUser.c
-
-launchd-job_forwardUser.obj: job_forwardUser.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-job_forwardUser.obj -MD -MP -MF $(DEPDIR)/launchd-job_forwardUser.Tpo -c -o launchd-job_forwardUser.obj `if test -f 'job_forwardUser.c'; then $(CYGPATH_W) 'job_forwardUser.c'; else $(CYGPATH_W) '$(srcdir)/job_forwardUser.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-job_forwardUser.Tpo $(DEPDIR)/launchd-job_forwardUser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='job_forwardUser.c' object='launchd-job_forwardUser.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-job_forwardUser.obj `if test -f 'job_forwardUser.c'; then $(CYGPATH_W) 'job_forwardUser.c'; else $(CYGPATH_W) '$(srcdir)/job_forwardUser.c'; fi`
-
-launchd-mach_excServer.o: mach_excServer.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-mach_excServer.o -MD -MP -MF $(DEPDIR)/launchd-mach_excServer.Tpo -c -o launchd-mach_excServer.o `test -f 'mach_excServer.c' || echo '$(srcdir)/'`mach_excServer.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-mach_excServer.Tpo $(DEPDIR)/launchd-mach_excServer.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mach_excServer.c' object='launchd-mach_excServer.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-mach_excServer.o `test -f 'mach_excServer.c' || echo '$(srcdir)/'`mach_excServer.c
-
-launchd-mach_excServer.obj: mach_excServer.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-mach_excServer.obj -MD -MP -MF $(DEPDIR)/launchd-mach_excServer.Tpo -c -o launchd-mach_excServer.obj `if test -f 'mach_excServer.c'; then $(CYGPATH_W) 'mach_excServer.c'; else $(CYGPATH_W) '$(srcdir)/mach_excServer.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-mach_excServer.Tpo $(DEPDIR)/launchd-mach_excServer.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mach_excServer.c' object='launchd-mach_excServer.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-mach_excServer.obj `if test -f 'mach_excServer.c'; then $(CYGPATH_W) 'mach_excServer.c'; else $(CYGPATH_W) '$(srcdir)/mach_excServer.c'; fi`
-
-launchd-launchd_ktrace.o: launchd_ktrace.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-launchd_ktrace.o -MD -MP -MF $(DEPDIR)/launchd-launchd_ktrace.Tpo -c -o launchd-launchd_ktrace.o `test -f 'launchd_ktrace.c' || echo '$(srcdir)/'`launchd_ktrace.c
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-launchd_ktrace.Tpo $(DEPDIR)/launchd-launchd_ktrace.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchd_ktrace.c' object='launchd-launchd_ktrace.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-launchd_ktrace.o `test -f 'launchd_ktrace.c' || echo '$(srcdir)/'`launchd_ktrace.c
-
-launchd-launchd_ktrace.obj: launchd_ktrace.c
- at am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-launchd_ktrace.obj -MD -MP -MF $(DEPDIR)/launchd-launchd_ktrace.Tpo -c -o launchd-launchd_ktrace.obj `if test -f 'launchd_ktrace.c'; then $(CYGPATH_W) 'launchd_ktrace.c'; else $(CYGPATH_W) '$(srcdir)/launchd_ktrace.c'; fi`
- at am__fastdepCC_TRUE@ mv -f $(DEPDIR)/launchd-launchd_ktrace.Tpo $(DEPDIR)/launchd-launchd_ktrace.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='launchd_ktrace.c' object='launchd-launchd_ktrace.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-launchd_ktrace.obj `if test -f 'launchd_ktrace.c'; then $(CYGPATH_W) 'launchd_ktrace.c'; else $(CYGPATH_W) '$(srcdir)/launchd_ktrace.c'; fi`
-install-man1: $(man1_MANS) $(man_MANS)
- @$(NORMAL_INSTALL)
- test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
- @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
- for i in $$l2; do \
- case "$$i" in \
- *.1*) list="$$list $$i" ;; \
- esac; \
- done; \
- for i in $$list; do \
- if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
- else file=$$i; fi; \
- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
- case "$$ext" in \
- 1*) ;; \
- *) ext='1' ;; \
- esac; \
- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
- inst=`echo $$inst | sed -e 's/^.*\///'`; \
- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
- done
-uninstall-man1:
- @$(NORMAL_UNINSTALL)
- @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
- for i in $$l2; do \
- case "$$i" in \
- *.1*) list="$$list $$i" ;; \
- esac; \
- done; \
- for i in $$list; do \
- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
- case "$$ext" in \
- 1*) ;; \
- *) ext='1' ;; \
- esac; \
- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
- inst=`echo $$inst | sed -e 's/^.*\///'`; \
- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
- echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
- rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
- done
-install-man5: $(man5_MANS) $(man_MANS)
- @$(NORMAL_INSTALL)
- test -z "$(man5dir)" || $(MKDIR_P) "$(DESTDIR)$(man5dir)"
- @list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \
- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
- for i in $$l2; do \
- case "$$i" in \
- *.5*) list="$$list $$i" ;; \
- esac; \
- done; \
- for i in $$list; do \
- if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
- else file=$$i; fi; \
- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
- case "$$ext" in \
- 5*) ;; \
- *) ext='5' ;; \
- esac; \
- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
- inst=`echo $$inst | sed -e 's/^.*\///'`; \
- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \
- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst"; \
- done
-uninstall-man5:
- @$(NORMAL_UNINSTALL)
- @list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \
- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
- for i in $$l2; do \
- case "$$i" in \
- *.5*) list="$$list $$i" ;; \
- esac; \
- done; \
- for i in $$list; do \
- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
- case "$$ext" in \
- 5*) ;; \
- *) ext='5' ;; \
- esac; \
- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
- inst=`echo $$inst | sed -e 's/^.*\///'`; \
- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
- echo " rm -f '$(DESTDIR)$(man5dir)/$$inst'"; \
- rm -f "$(DESTDIR)$(man5dir)/$$inst"; \
- done
-install-man8: $(man8_MANS) $(man_MANS)
- @$(NORMAL_INSTALL)
- test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)"
- @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \
- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
- for i in $$l2; do \
- case "$$i" in \
- *.8*) list="$$list $$i" ;; \
- esac; \
- done; \
- for i in $$list; do \
- if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
- else file=$$i; fi; \
- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
- case "$$ext" in \
- 8*) ;; \
- *) ext='8' ;; \
- esac; \
- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
- inst=`echo $$inst | sed -e 's/^.*\///'`; \
- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst"; \
- done
-uninstall-man8:
- @$(NORMAL_UNINSTALL)
- @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \
- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
- for i in $$l2; do \
- case "$$i" in \
- *.8*) list="$$list $$i" ;; \
- esac; \
- done; \
- for i in $$list; do \
- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
- case "$$ext" in \
- 8*) ;; \
- *) ext='8' ;; \
- esac; \
- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
- inst=`echo $$inst | sed -e 's/^.*\///'`; \
- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
- echo " rm -f '$(DESTDIR)$(man8dir)/$$inst'"; \
- rm -f "$(DESTDIR)$(man8dir)/$$inst"; \
- done
-install-sysconfDATA: $(sysconf_DATA)
- @$(NORMAL_INSTALL)
- test -z "$(sysconfdir)" || $(MKDIR_P) "$(DESTDIR)$(sysconfdir)"
- @list='$(sysconf_DATA)'; for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(sysconfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(sysconfdir)/$$f'"; \
- $(sysconfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(sysconfdir)/$$f"; \
- done
-
-uninstall-sysconfDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(sysconf_DATA)'; for p in $$list; do \
- f=$(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(sysconfdir)/$$f'"; \
- rm -f "$(DESTDIR)$(sysconfdir)/$$f"; \
- done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(CTAGS_ARGS)$$tags$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$tags $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && cd $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
- fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(MANS) $(DATA) config.h
-installdirs:
- for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(sysconfdir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-binPROGRAMS clean-generic clean-libexecPROGRAMS \
- clean-noinstLIBRARIES clean-sbinPROGRAMS mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-hdr distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am: install-man
- @$(NORMAL_INSTALL)
- $(MAKE) $(AM_MAKEFLAGS) install-data-hook
-
-install-dvi: install-dvi-am
-
-install-exec-am: install-binPROGRAMS install-libexecPROGRAMS \
- install-sbinPROGRAMS install-sysconfDATA
-
-install-html: install-html-am
-
-install-info: install-info-am
-
-install-man: install-man1 install-man5 install-man8
-
-install-pdf: install-pdf-am
-
-install-ps: install-ps-am
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-binPROGRAMS uninstall-libexecPROGRAMS \
- uninstall-man uninstall-sbinPROGRAMS uninstall-sysconfDATA
-
-uninstall-man: uninstall-man1 uninstall-man5 uninstall-man8
-
-.MAKE: install-am install-data-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
- clean-generic clean-libexecPROGRAMS clean-noinstLIBRARIES \
- clean-sbinPROGRAMS ctags distclean distclean-compile \
- distclean-generic distclean-hdr distclean-tags distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-binPROGRAMS install-data install-data-am \
- install-data-hook install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-libexecPROGRAMS install-man \
- install-man1 install-man5 install-man8 install-pdf \
- install-pdf-am install-ps install-ps-am install-sbinPROGRAMS \
- install-strip install-sysconfDATA installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
- ps ps-am tags uninstall uninstall-am uninstall-binPROGRAMS \
- uninstall-libexecPROGRAMS uninstall-man uninstall-man1 \
- uninstall-man5 uninstall-man8 uninstall-sbinPROGRAMS \
- uninstall-sysconfDATA
-
-
-protocol_vproc.h protocol_vprocServer.c protocol_vprocUser.c protocol_vprocServer.h: $(srcdir)/protocol_job.defs
- mig $(MIGFLAGS) -sheader protocol_vprocServer.h $(srcdir)/protocol_job.defs
-
- at LIBS_ONLY_TRUE@$(srcdir)/libvproc.c:: protocol_vproc.h
-
- at LIBS_ONLY_TRUE@$(srcdir)/protocol_vprocUser.c:: protocol_vproc.h
-
- at LIBS_ONLY_TRUE@__version.c:
- at LIBS_ONLY_TRUE@ /Developer/Makefiles/bin/version.pl launchd_libs > $@
-
- at LIBS_ONLY_TRUE@install-data-hook:
- at LIBS_ONLY_TRUE@ mkdir -p $(DESTDIR)/usr/local/lib/system
- at LIBS_ONLY_TRUE@ cp liblaunch.a $(DESTDIR)/usr/local/lib/system
- at LIBS_ONLY_TRUE@ cp liblaunch.a $(DESTDIR)/usr/local/lib/system/liblaunch_debug.a
- at LIBS_ONLY_TRUE@ cp liblaunch_profile.a $(DESTDIR)/usr/local/lib/system/liblaunch_profile.a
-
- at LIBS_ONLY_FALSE@launchd_runtime.c:: notifyServer.h launchd_internal.h mach_excServer.h
- at LIBS_ONLY_FALSE@launchd_core_logic.c:: protocol_vproc.h job_reply.h protocol_vprocServer.h job_forward.h
-
- at LIBS_ONLY_FALSE@job_forwardUser.c job_forward.h: $(srcdir)/protocol_job_forward.defs
- at LIBS_ONLY_FALSE@ mig $(MIGFLAGS) -sheader /dev/null -server /dev/null $(srcdir)/protocol_job_forward.defs
-
- at LIBS_ONLY_FALSE@notifyServer.c notifyServer.h: /usr/include/mach/notify.defs
- at LIBS_ONLY_FALSE@ mig $(MIGFLAGS) -header /dev/null -user /dev/null -sheader notifyServer.h /usr/include/mach/notify.defs
-
- at LIBS_ONLY_FALSE@mach_excServer.c mach_excServer.h: /usr/include/mach/mach_exc.defs
- at LIBS_ONLY_FALSE@ mig $(MIGFLAGS) -header /dev/null -user /dev/null -sheader mach_excServer.h /usr/include/mach/mach_exc.defs
-
- at LIBS_ONLY_FALSE@job_replyUser.c job_reply.h: $(srcdir)/protocol_job_reply.defs
- at LIBS_ONLY_FALSE@ mig $(MIGFLAGS) -sheader /dev/null -server /dev/null $(srcdir)/protocol_job_reply.defs
-
- at LIBS_ONLY_FALSE@launchd_internal.h launchd_internalServer.c launchd_internalUser.c launchd_internalServer.h: $(srcdir)/launchd_internal.defs
- at LIBS_ONLY_FALSE@ mig $(MIGFLAGS) -sheader launchd_internalServer.h $(srcdir)/launchd_internal.defs
-
- at LIBS_ONLY_FALSE@install-data-hook:
- at LIBS_ONLY_FALSE@ mkdir -p $(DESTDIR)/usr/libexec
- at LIBS_ONLY_FALSE@ mkdir -p $(DESTDIR)/usr/include/servers
- at LIBS_ONLY_FALSE@ mkdir -p $(DESTDIR)/usr/local/include
- at LIBS_ONLY_FALSE@ mkdir -p $(DESTDIR)/$(sysconfdir)/mach_init.d
- at LIBS_ONLY_FALSE@ mkdir -p $(DESTDIR)/$(sysconfdir)/mach_init_per_user.d
- at LIBS_ONLY_FALSE@ mkdir -p $(DESTDIR)/$(sysconfdir)/mach_init_per_login_session.d
- at LIBS_ONLY_FALSE@ mkdir -p $(DESTDIR)/Library/LaunchDaemons
- at LIBS_ONLY_FALSE@ mkdir -p $(DESTDIR)/Library/LaunchAgents
- at LIBS_ONLY_FALSE@ mkdir -p $(DESTDIR)/System/Library/LaunchAgents
- at LIBS_ONLY_FALSE@ mkdir -p $(DESTDIR)/System/Library/LaunchDaemons
- at LIBS_ONLY_FALSE@ cp $(srcdir)/liblaunch_public.h $(DESTDIR)/usr/include/launch.h
- at LIBS_ONLY_FALSE@ cp $(srcdir)/libvproc_public.h $(DESTDIR)/usr/include/vproc.h
- at LIBS_ONLY_FALSE@ cp $(srcdir)/libbootstrap_public.h $(DESTDIR)/usr/include/servers/bootstrap.h
- at LIBS_ONLY_FALSE@ cp $(srcdir)/libbootstrap_public.h $(DESTDIR)/usr/include/servers/bootstrap_defs.h
- at LIBS_ONLY_FALSE@ cp $(srcdir)/libbootstrap_private.h $(DESTDIR)/usr/local/include/bootstrap_priv.h
- at LIBS_ONLY_FALSE@ cp $(srcdir)/liblaunch_private.h $(DESTDIR)/usr/local/include/launch_priv.h
- at LIBS_ONLY_FALSE@ cp $(srcdir)/libvproc_private.h $(DESTDIR)/usr/local/include/vproc_priv.h
- at LIBS_ONLY_FALSE@ cp $(srcdir)/reboot2.h $(DESTDIR)/usr/local/include/reboot2.h
- at DO_EMBEDDED_MAGIC_FALSE@@LIBS_ONLY_FALSE@ cp $(srcdir)/StartupItemContext $(DESTDIR)/usr/libexec
- at DO_EMBEDDED_MAGIC_FALSE@@LIBS_ONLY_FALSE@ cp $(srcdir)/com.apple.SystemStarter.plist $(DESTDIR)/System/Library/LaunchDaemons
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
Modified: trunk/launchd/src/bootstrap.h
===================================================================
--- trunk/launchd/src/bootstrap.h 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/bootstrap.h 2008-11-22 22:31:20 UTC (rev 23754)
@@ -96,18 +96,21 @@
typedef name_t *name_array_t;
typedef int bootstrap_status_t;
typedef bootstrap_status_t *bootstrap_status_array_t;
+typedef unsigned int bootstrap_property_t;
+typedef bootstrap_property_t * bootstrap_property_array_t;
typedef boolean_t *bool_array_t;
#define BOOTSTRAP_MAX_LOOKUP_COUNT 20
-#define BOOTSTRAP_SUCCESS 0
+#define BOOTSTRAP_SUCCESS 0
#define BOOTSTRAP_NOT_PRIVILEGED 1100
#define BOOTSTRAP_NAME_IN_USE 1101
#define BOOTSTRAP_UNKNOWN_SERVICE 1102
#define BOOTSTRAP_SERVICE_ACTIVE 1103
-#define BOOTSTRAP_BAD_COUNT 1104
-#define BOOTSTRAP_NO_MEMORY 1105
+#define BOOTSTRAP_BAD_COUNT 1104
+#define BOOTSTRAP_NO_MEMORY 1105
+#define BOOTSTRAP_NO_CHILDREN 1106
#define BOOTSTRAP_STATUS_INACTIVE 0
#define BOOTSTRAP_STATUS_ACTIVE 1
Modified: trunk/launchd/src/bootstrap_priv.h
===================================================================
--- trunk/launchd/src/bootstrap_priv.h 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/bootstrap_priv.h 2008-11-22 22:31:20 UTC (rev 23754)
@@ -32,6 +32,9 @@
#define BOOTSTRAP_DENY_JOB_CREATION 0x4
#define BOOTSTRAP_PRIVILEGED_SERVER 0x8
+#define BOOTSTRAP_PROPERTY_SUBSET 1 << 1
+#define BOOTSTRAP_PROPERTY_PERUSER 1 << 2
+
kern_return_t bootstrap_register2(mach_port_t bp, name_t service_name, mach_port_t sp, uint64_t flags);
kern_return_t bootstrap_look_up2(mach_port_t bp, const name_t service_name, mach_port_t *sp, pid_t target_pid, uint64_t flags);
@@ -40,7 +43,7 @@
kern_return_t bootstrap_look_up_per_user(mach_port_t bp, const name_t service_name, uid_t target_user, mach_port_t *sp);
-kern_return_t bootstrap_set_policy(mach_port_t bp, pid_t target_pid, uint64_t flags, const char *target_service);
+kern_return_t bootstrap_lookup_children(mach_port_t bp, mach_port_array_t *children, name_array_t *names, bootstrap_property_array_t *properties, mach_msg_type_number_t *n_children);
#pragma GCC visibility pop
Modified: trunk/launchd/src/launch_priv.h
===================================================================
--- trunk/launchd/src/launch_priv.h 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/launch_priv.h 2008-11-22 22:31:20 UTC (rev 23754)
@@ -64,6 +64,7 @@
#define LAUNCH_JOBKEY_MACH_TASKSPECIALPORT "TaskSpecialPort"
#define LAUNCH_JOBKEY_MACH_HOSTSPECIALPORT "HostSpecialPort"
#define LAUNCH_JOBKEY_MACH_ENTERKERNELDEBUGGERONCLOSE "EnterKernelDebuggerOnClose"
+#define LAUNCH_JOBKEY_MACH_DRAINMESSAGESONCRASH "DrainMessagesOnCrash"
typedef struct _launch *launch_t;
Modified: trunk/launchd/src/launchctl.c
===================================================================
--- trunk/launchd/src/launchctl.c 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/launchctl.c 2008-11-22 22:31:20 UTC (rev 23754)
@@ -26,6 +26,7 @@
#include "vproc.h"
#include "vproc_priv.h"
#include "vproc_internal.h"
+#include "bootstrap_priv.h"
#include <CoreFoundation/CoreFoundation.h>
#include <CoreFoundation/CFPriv.h>
@@ -184,7 +185,10 @@
static int umask_cmd(int argc, char *const argv[]);
static int getrusage_cmd(int argc, char *const argv[]);
static int bsexec_cmd(int argc, char *const argv[]);
+static int _bslist_cmd(mach_port_t bport, unsigned int depth);
static int bslist_cmd(int argc, char *const argv[]);
+static int _bstree_cmd(mach_port_t bsport, unsigned int depth);
+static int bstree_cmd(int argc __attribute__((unused)), char * const argv[] __attribute__((unused)));
static int exit_cmd(int argc, char *const argv[]) __attribute__((noreturn));
static int help_cmd(int argc, char *const argv[]);
@@ -217,6 +221,7 @@
{ "umask", umask_cmd, "Change launchd's umask" },
{ "bsexec", bsexec_cmd, "Execute a process within a different Mach bootstrap subset" },
{ "bslist", bslist_cmd, "List Mach bootstrap services and optional servers" },
+ { "bstree", bstree_cmd, "Show the entire Mach bootstrap tree. Requires root privileges." },
{ "exit", exit_cmd, "Exit the interactive invocation of launchctl" },
{ "quit", exit_cmd, "Quit the interactive invocation of launchctl" },
{ "help", help_cmd, "This help output" },
@@ -1398,7 +1403,7 @@
exit_at_sigterm(int sig)
{
if( sig == SIGTERM ) {
- exit(EXIT_SUCCESS);
+ _exit(EXIT_SUCCESS);
}
}
@@ -1429,6 +1434,13 @@
apply_sysctls_from_file("/etc/sysctl.conf");
+#if TARGET_OS_EMBEDDED
+ if (path_check("/etc/rc.boot")) {
+ const char *rcboot_tool[] = { "/etc/rc.boot", NULL };
+ assumes(fwexec(rcboot_tool, NULL) != -1);
+ }
+#endif
+
if (path_check("/etc/rc.cdrom")) {
const char *rccdrom_tool[] = { _PATH_BSHELL, "/etc/rc.cdrom", "multiuser", NULL };
@@ -1454,13 +1466,6 @@
assumes(fwexec(rcserver_tool, NULL) != -1);
}
-#if TARGET_OS_EMBEDDED
- if (path_check("/etc/rc.boot")) {
- const char *rcboot_tool[] = { "/etc/rc.boot", NULL };
- assumes(fwexec(rcboot_tool, true) != -1);
- }
-#endif
-
read_launchd_conf();
if (path_check("/var/account/acct")) {
@@ -1635,11 +1640,9 @@
} else {
char *load_launchd_items[] = { "load", "-S", session_type, "-D", "all", NULL, NULL, NULL, NULL, NULL, NULL };
int the_argc = 5;
-
- /*
+
char *load_launchd_items_user[] = { "load", "-S", session_type, "-D", "user", NULL };
int the_argc_user = 0;
- */
if (is_safeboot()) {
load_launchd_items[4] = "system";
@@ -1656,6 +1659,7 @@
load_launchd_items[the_argc] = "/etc/mach_init_per_login_session.d";
the_argc += 1;
} else {
+ #if 0
/* If we're a per-user launchd initializing our Background session,
* don't forget about the user's launchd jobs that may be specified as
* LimitLoadToSessionType = Background. <rdar://problem/5279345> We also
@@ -1663,15 +1667,31 @@
* jobs in the local sessions may be responsible for mounting the home
* directory.
*/
- /*
if( getppid() != 1 ) {
+ #else
+ /* This deadlocks against mount_url when logging in with a network home
+ * directory. For now, we'll just load user Background agents when
+ * bootstrapping the Aqua or StandardIO sessions. This way, we can
+ * safely assume that the home directory is present. Yes it's a hack,
+ * but it satisfies the user expectation in 99% of cases.
+ */
+ if( 0 ) {
+ #endif
the_argc_user = 5;
}
- */
}
} else if (strcasecmp(session_type, VPROCMGR_SESSION_AQUA) == 0) {
load_launchd_items[5] = "/etc/mach_init_per_user.d";
the_argc += 1;
+ /* If we're bootstrapping the Aqua session, bootstrap the user's Background
+ * agents.
+ */
+ the_argc_user = 5;
+ } else if (strcasecmp(session_type, VPROCMGR_SESSION_AQUA) == 0) {
+ /* If we're bootstrapping the StandardIO session, bootstrap the user's Background
+ * agents.
+ */
+ the_argc_user = 5;
}
if (strcasecmp(session_type, VPROCMGR_SESSION_BACKGROUND) == 0) {
@@ -1682,20 +1702,17 @@
}
int retval = load_and_unload_cmd(the_argc, load_launchd_items);
- #if 0 /* Maybe someday. */
if( retval == 0 && the_argc_user != 0 ) {
optind = 1;
- /* Load user jobs. But first, we tell launchd to resume listening to
- * other clients, since this operation could potentially block if the user's
- * home directory is on a network volume or something.
- */
- int64_t junk = 0;
- vproc_err_t err = vproc_swap_integer(NULL, VPROC_GSK_WEIRD_BOOTSTRAP, &junk, NULL);
- if( !err ) {
- retval = load_and_unload_cmd(the_argc_user, load_launchd_items_user);
+ pid_t p = getpid();
+ if( sysctlbyname("vfs.generic.noremotehang", NULL, NULL, &p, sizeof(p)) == 0 ) {
+ int64_t junk = 0;
+ vproc_err_t err = vproc_swap_integer(NULL, VPROC_GSK_WEIRD_BOOTSTRAP, &junk, NULL);
+ if( !err ) {
+ retval = load_and_unload_cmd(the_argc_user, load_launchd_items_user);
+ }
}
}
- #endif
return retval;
}
@@ -2608,6 +2625,8 @@
return 1;
}
} while (getrootbs && last_bport != bport);
+ } else if( strcmp(s, "0") == 0 || strcmp(s, "NULL") == 0 ) {
+ bport = MACH_PORT_NULL;
} else {
int pid = atoi(s);
@@ -2661,37 +2680,101 @@
}
int
-bslist_cmd(int argc, char *const argv[])
+_bslist_cmd(mach_port_t bport, unsigned int depth)
{
kern_return_t result;
- mach_port_t bport = bootstrap_port;
name_array_t service_names;
mach_msg_type_number_t service_cnt, service_active_cnt;
bootstrap_status_array_t service_actives;
unsigned int i;
-
- if (argc == 2)
- bport = str2bsport(argv[1]);
-
+
if (bport == MACH_PORT_NULL) {
fprintf(stderr, "Invalid bootstrap port\n");
return 1;
}
-
+
result = bootstrap_info(bport, &service_names, &service_cnt, &service_actives, &service_active_cnt);
if (result != BOOTSTRAP_SUCCESS) {
fprintf(stderr, "bootstrap_info(): %d\n", result);
return 1;
}
+
+ #define bport_state(x) (((x) == BOOTSTRAP_STATUS_ACTIVE) ? "A" : ((x) == BOOTSTRAP_STATUS_ON_DEMAND) ? "D" : "I")
+
+ for (i = 0; i < service_cnt ; i++) {
+ fprintf(stdout, "%*s%-3s%s\n", depth, "", bport_state((service_actives[i])), service_names[i]);
+ }
+
+ return 0;
+}
-#define bport_state(x) (((x) == BOOTSTRAP_STATUS_ACTIVE) ? "A" : ((x) == BOOTSTRAP_STATUS_ON_DEMAND) ? "D" : "I")
+int
+bslist_cmd(int argc, char *const argv[])
+{
+ mach_port_t bport = bootstrap_port;
+ if( argc == 2 ) {
+ bport = str2bsport(argv[1]);
+ }
+
+ if( bport == MACH_PORT_NULL ) {
+ fprintf(stderr, "Invalid bootstrap port\n");
+ return 1;
+ }
+
+ return _bslist_cmd(bport, 0);
+}
- for (i = 0; i < service_cnt ; i++)
- fprintf(stdout, "%-3s%s\n", bport_state((service_actives[i])), service_names[i]);
+int
+_bstree_cmd(mach_port_t bsport, unsigned int depth)
+{
+ if( bsport == MACH_PORT_NULL ) {
+ fprintf(stderr, "No root port!\n");
+ return 1;
+ }
+
+ mach_port_array_t child_ports = NULL;
+ name_array_t child_names = NULL;
+ bootstrap_property_array_t child_props = NULL;
+ unsigned int cnt = 0;
+
+ kern_return_t kr = bootstrap_lookup_children(bsport, &child_ports, &child_names, &child_props, (mach_msg_type_number_t *)&cnt);
+ if( kr != BOOTSTRAP_SUCCESS && kr != BOOTSTRAP_NO_CHILDREN ) {
+ if( kr == BOOTSTRAP_NOT_PRIVILEGED ) {
+ fprintf(stderr, "You must be root to perform this operation.\n");
+ } else {
+ fprintf(stderr, "bootstrap_lookup_children(): %d\n", kr);
+ }
+ return 1;
+ }
+
+ unsigned int i = 0;
+ _bslist_cmd(bsport, depth);
+
+ for( i = 0; i < cnt; i++ ) {
+ char *type = ( child_props[i] & BOOTSTRAP_PROPERTY_PERUSER ) ? "Per-user" : "Subset";
+ fprintf(stdout, "%*s%s (%s)/\n", depth, "", child_names[i], type);
+ if( child_ports[i] != MACH_PORT_NULL ) {
+ _bstree_cmd(child_ports[i], depth + 4);
+ }
+ }
+
return 0;
}
+int
+bstree_cmd(int argc __attribute__((unused)), char * const argv[] __attribute__((unused)))
+{
+ if( geteuid() != 0 ) {
+ fprintf(stderr, "You must be root to perform this operation.\n");
+ return 1;
+ } else {
+ fprintf(stdout, "System/\n");
+ }
+
+ return _bstree_cmd(str2bsport("/"), 4);
+}
+
bool
is_legacy_mach_job(launch_data_t obj)
{
Modified: trunk/launchd/src/launchd.c
===================================================================
--- trunk/launchd/src/launchd.c 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/launchd.c 2008-11-22 22:31:20 UTC (rev 23754)
@@ -68,6 +68,7 @@
#include <spawn.h>
#include <sched.h>
#include <pthread.h>
+#include <sys/socket.h>
#include "bootstrap.h"
#include "vproc.h"
@@ -84,7 +85,7 @@
extern char **environ;
-INTERNAL_ABI static void pfsystem_callback(void *, struct kevent *);
+static void pfsystem_callback(void *, struct kevent *);
static kq_callback kqpfsystem_callback = pfsystem_callback;
@@ -296,7 +297,7 @@
}
-INTERNAL_ABI int
+int
_fd(int fd)
{
if (fd >= 0) {
@@ -305,7 +306,7 @@
return fd;
}
-INTERNAL_ABI void
+void
launchd_shutdown(void)
{
int64_t now;
@@ -336,7 +337,7 @@
launchd_assert(jobmgr_shutdown(root_jobmgr) != NULL);
}
-INTERNAL_ABI void
+void
launchd_single_user(void)
{
runtime_syslog(LOG_NOTICE, "Going to single-user mode");
@@ -350,7 +351,7 @@
runtime_kill(-1, SIGKILL);
}
-INTERNAL_ABI void
+void
launchd_SessionCreate(void)
{
#if HAVE_SECURITY
@@ -443,7 +444,7 @@
launchd_assumes(kevent_mod(pfs, EVFILT_READ, EV_ADD, 0, 0, &kqpfsystem_callback) != -1);
}
-INTERNAL_ABI void
+void
pfsystem_callback(void *obj __attribute__((unused)), struct kevent *kev)
{
bool new_networking_state;
@@ -459,7 +460,7 @@
}
}
-INTERNAL_ABI void
+void
_log_launchd_bug(const char *rcs_rev, const char *path, unsigned int line, const char *test)
{
int saved_errno = errno;
Modified: trunk/launchd/src/launchd.h
===================================================================
--- trunk/launchd/src/launchd.h 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/launchd.h 2008-11-22 22:31:20 UTC (rev 23754)
@@ -35,16 +35,16 @@
extern bool g_force_old_kill_path;
extern FILE *g_console;
-INTERNAL_ABI bool init_check_pid(pid_t);
+bool init_check_pid(pid_t);
-INTERNAL_ABI launch_data_t launchd_setstdio(int d, launch_data_t o);
-INTERNAL_ABI void launchd_SessionCreate(void);
-INTERNAL_ABI void launchd_shutdown(void);
-INTERNAL_ABI void launchd_single_user(void);
+launch_data_t launchd_setstdio(int d, launch_data_t o);
+void launchd_SessionCreate(void);
+void launchd_shutdown(void);
+void launchd_single_user(void);
boolean_t launchd_mach_ipc_demux(mach_msg_header_t *Request, mach_msg_header_t *Reply);
-INTERNAL_ABI void mach_start_shutdown(void);
+void mach_start_shutdown(void);
-INTERNAL_ABI int _fd(int fd);
+int _fd(int fd);
#endif
Modified: trunk/launchd/src/launchd_core_logic.c
===================================================================
--- trunk/launchd/src/launchd_core_logic.c 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/launchd_core_logic.c 2008-11-22 22:31:20 UTC (rev 23754)
@@ -99,6 +99,7 @@
#include "protocol_vprocServer.h"
#include "protocol_job_reply.h"
#include "protocol_job_forward.h"
+#include "mach_excServer.h"
/*
* LAUNCHD_SAMPLE_TIMEOUT
@@ -148,12 +149,22 @@
SLIST_ENTRY(machservice) special_port_sle;
LIST_ENTRY(machservice) name_hash_sle;
LIST_ENTRY(machservice) port_hash_sle;
- job_t job;
+ job_t job;
unsigned int gen_num;
mach_port_name_t port;
- unsigned int isActive:1, reset:1, recv:1, hide:1,
- kUNCServer:1, per_user_hack:1, debug_on_close:1, per_pid:1,
- delete_on_destruction:1, special_port_num:23;
+ unsigned int isActive :1,
+ reset :1,
+ recv :1,
+ hide :1,
+ kUNCServer :1,
+ per_user_hack :1,
+ debug_on_close :1,
+ per_pid :1,
+ delete_on_destruction :1,
+ drain_one :1,
+ drain_all :1,
+ special_port_num :22;
+
const char name[0];
};
@@ -178,6 +189,7 @@
static bool machservice_active(struct machservice *);
static const char *machservice_name(struct machservice *);
static bootstrap_status_t machservice_status(struct machservice *);
+void machservice_drain_port(struct machservice *);
struct socketgroup {
SLIST_ENTRY(socketgroup) sle;
@@ -285,6 +297,7 @@
#define ACTIVE_JOB_HASH_SIZE 32
#define ACTIVE_JOB_HASH(x) (IS_POWER_OF_TWO(ACTIVE_JOB_HASH_SIZE) ? (x & (ACTIVE_JOB_HASH_SIZE - 1)) : (x % ACTIVE_JOB_HASH_SIZE))
+
#define MACHSERVICE_HASH_SIZE 37
struct jobmgr_s {
@@ -295,7 +308,7 @@
LIST_HEAD(, job_s) active_jobs[ACTIVE_JOB_HASH_SIZE];
LIST_HEAD(, machservice) ms_hash[MACHSERVICE_HASH_SIZE];
LIST_HEAD(, job_s) global_env_jobs;
- LIST_HEAD(, job_s) pending_samples;
+ STAILQ_HEAD(, job_s) pending_samples;
mach_port_t jm_port;
mach_port_t req_port;
jobmgr_t parentmgr;
@@ -310,7 +323,7 @@
killed_hopefully_first_jobs :1,
killed_normal_jobs :1,
killed_hopefully_last_jobs :1,
- __junk :25;
+ created_via_subset :1;
char sample_log_file[PATH_MAX];
union {
const char name[0];
@@ -333,11 +346,12 @@
static void jobmgr_dispatch_all(jobmgr_t jm, bool newmounthack);
static void jobmgr_dequeue_next_sample(jobmgr_t jm);
static job_t jobmgr_init_session(jobmgr_t jm, const char *session_type, bool sflag);
+static job_t jobmgr_find_by_pid_deep(jobmgr_t jm, pid_t p);
static job_t jobmgr_find_by_pid(jobmgr_t jm, pid_t p, bool create_anon);
static jobmgr_t jobmgr_find_by_name(jobmgr_t jm, const char *where);
static job_t job_mig_intran2(jobmgr_t jm, mach_port_t mport, pid_t upid);
static void job_export_all2(jobmgr_t jm, launch_data_t where);
-INTERNAL_ABI static void jobmgr_callback(void *obj, struct kevent *kev);
+static void jobmgr_callback(void *obj, struct kevent *kev);
static void jobmgr_setup_env_from_other_jobs(jobmgr_t jm);
static void jobmgr_export_env_from_other_jobs(jobmgr_t jm, launch_data_t dict);
static struct machservice *jobmgr_lookup_service(jobmgr_t jm, const char *name, bool check_parent, pid_t target_pid);
@@ -354,7 +368,7 @@
LIST_ENTRY(job_s) pid_hash_sle;
LIST_ENTRY(job_s) label_hash_sle;
LIST_ENTRY(job_s) global_env_sle;
- LIST_ENTRY(job_s) pending_samples_sle;
+ STAILQ_ENTRY(job_s) pending_samples_sle;
SLIST_ENTRY(job_s) curious_jobs_sle;
SLIST_HEAD(, socketgroup) sockets;
SLIST_HEAD(, calendarinterval) cal_intervals;
@@ -459,7 +473,9 @@
pending_sample :1, /* This job needs to be sampled for some reason. */
kill_after_sample :1, /* The job is to be killed after sampling. */
reap_after_sample :1, /* The job exited before sample did, so we should reap it after sample is done. */
- nosy :1; /* The job has an OtherJobEnabled KeepAlive criterion. */
+ nosy :1, /* The job has an OtherJobEnabled KeepAlive criterion. */
+ crashed :1, /* The job is the default Mach exception handler, and it crashed. */
+ reaped :1; /* We've received NOTE_EXIT for the job. */
mode_t mask;
pid_t sample_pid;
const char label[0];
@@ -502,11 +518,8 @@
#endif
static void job_postfork_test_user(job_t j);
static void job_log_pids_with_weird_uids(job_t j);
-#if 0
-static void job_force_sampletool(job_t j);
-#endif
static void job_setup_exception_port(job_t j, task_t target_task);
-INTERNAL_ABI static void job_callback(void *obj, struct kevent *kev);
+static void job_callback(void *obj, struct kevent *kev);
static void job_callback_proc(job_t j, struct kevent *kev);
static void job_callback_timer(job_t j, void *ident);
static void job_callback_read(job_t j, int ident);
@@ -549,7 +562,6 @@
/* miscellaneous file local functions */
static size_t get_kern_max_proc(void);
-static void ensure_root_bkgd_setup(void);
static int dir_has_files(job_t j, const char *path);
static char **mach_cmd2argv(const char *string);
static size_t our_strhash(const char *s) __attribute__((pure));
@@ -563,7 +575,6 @@
static mach_port_t the_exception_server;
static bool did_first_per_user_launchd_BootCache_hack;
#define JOB_BOOTCACHE_HACK_CHECK(j) (unlikely(j->per_user && !did_first_per_user_launchd_BootCache_hack && (j->mach_uid >= 500) && (j->mach_uid != (uid_t)-2)))
-static jobmgr_t background_jobmgr;
static job_t workaround_5477111;
/* process wide globals */
@@ -631,7 +642,7 @@
}
}
-INTERNAL_ABI void
+void
job_stop(job_t j)
{
char extralog[100];
@@ -696,7 +707,7 @@
}
}
-INTERNAL_ABI launch_data_t
+launch_data_t
job_export(job_t j)
{
launch_data_t tmp, tmp2, tmp3, r = launch_data_alloc(LAUNCH_DATA_DICTIONARY);
@@ -846,7 +857,7 @@
}
-INTERNAL_ABI static void
+static void
jobmgr_still_alive_with_check(jobmgr_t jm)
{
jobmgr_log(jm, LOG_NOTICE | LOG_CONSOLE, "Still alive with %lu/%lu (normal/anonymous) children", total_children, total_anon_children);
@@ -927,7 +938,7 @@
runtime_closelog(); /* hack to flush logs */
}
-INTERNAL_ABI jobmgr_t
+jobmgr_t
jobmgr_shutdown(jobmgr_t jm)
{
jobmgr_t jmi, jmn;
@@ -991,10 +1002,6 @@
jobmgr_assumes(jm, launchd_mport_close_recv(jm->jm_port) == KERN_SUCCESS);
}
- if (jm == background_jobmgr) {
- background_jobmgr = NULL;
- }
-
if (jm->parentmgr) {
runtime_del_weak_ref();
SLIST_REMOVE(&jm->parentmgr->submgrs, jm, jobmgr_s, sle);
@@ -1017,7 +1024,7 @@
free(jm);
}
-INTERNAL_ABI void
+void
job_remove(job_t j, bool force)
{
struct waiting_for_removal *w4r;
@@ -1028,7 +1035,7 @@
struct limititem *li;
struct mspolicy *msp;
struct envitem *ei;
-
+
if (unlikely(j->p)) {
if (j->anonymous) {
job_reap(j);
@@ -1534,7 +1541,7 @@
return NULL;
}
-INTERNAL_ABI job_t
+job_t
job_import(launch_data_t pload)
{
job_t j = jobmgr_import2(root_jobmgr, pload);
@@ -1547,7 +1554,7 @@
return job_dispatch(j, false);
}
-INTERNAL_ABI launch_data_t
+launch_data_t
job_import_bulk(launch_data_t pload)
{
launch_data_t resp = launch_data_alloc(LAUNCH_DATA_ARRAY);
@@ -2246,7 +2253,7 @@
return true;
}
-INTERNAL_ABI job_t
+job_t
job_find(const char *label)
{
job_t ji;
@@ -2265,7 +2272,28 @@
return NULL;
}
+/* Should try and consolidate with job_mig_intran2() and jobmgr_find_by_pid(). */
job_t
+jobmgr_find_by_pid_deep(jobmgr_t jm, pid_t p)
+{
+ job_t ji = NULL;
+ LIST_FOREACH( ji, &jm->active_jobs[ACTIVE_JOB_HASH(p)], pid_hash_sle ) {
+ if (ji->p == p && !ji->anonymous) {
+ return ji;
+ }
+ }
+
+ jobmgr_t jmi = NULL;
+ SLIST_FOREACH( jmi, &jm->submgrs, sle ) {
+ if( (ji = jobmgr_find_by_pid_deep(jmi, p)) ) {
+ break;
+ }
+ }
+
+ return ji;
+}
+
+job_t
jobmgr_find_by_pid(jobmgr_t jm, pid_t p, bool create_anon)
{
job_t ji;
@@ -2306,7 +2334,7 @@
return NULL;
}
-INTERNAL_ABI job_t
+job_t
job_mig_intran(mach_port_t p)
{
struct ldcred *ldc = runtime_get_caller_creds();
@@ -2331,7 +2359,7 @@
return jr;
}
-INTERNAL_ABI job_t
+job_t
job_find_by_service_port(mach_port_t p)
{
struct machservice *ms;
@@ -2345,7 +2373,7 @@
return NULL;
}
-INTERNAL_ABI void
+void
job_mig_destructor(job_t j)
{
/*
@@ -2383,7 +2411,7 @@
}
}
-INTERNAL_ABI launch_data_t
+launch_data_t
job_export_all(void)
{
launch_data_t resp = launch_data_alloc(LAUNCH_DATA_DICTIONARY);
@@ -2526,6 +2554,12 @@
j->wait_reply_port = MACH_PORT_NULL;
}
+ if( j->pending_sample ) {
+ job_log(j, LOG_NOTICE | LOG_CONSOLE, "Job exited before we could sample it.");
+ STAILQ_REMOVE(&j->mgr->pending_samples, j, job_s, pending_samples_sle);
+ j->pending_sample = false;
+ }
+
if (j->sent_signal_time) {
uint64_t td_sec, td_usec, td = runtime_get_nanoseconds_since(j->sent_signal_time);
@@ -2561,10 +2595,39 @@
if (SIGKILL == s || SIGTERM == s) {
job_log(j, LOG_NOTICE, "Exited: %s", strsignal(s));
} else {
- job_log(j, LOG_WARNING, "Exited abnormally: %s", strsignal(s));
+ switch( s ) {
+ /* Signals which indicate a crash. */
+ case SIGILL :
+ case SIGABRT :
+ case SIGFPE :
+ case SIGBUS :
+ case SIGSEGV :
+ case SIGSYS :
+ /* If the kernel has posted NOTE_EXIT and the signal sent to the process was
+ * SIGTRAP, assume that it's a crash.
+ */
+ case SIGTRAP :
+ j->crashed = true;
+ job_log(j, LOG_WARNING, "Job appears to have crashed: %s", strsignal(s));
+ break;
+ default :
+ job_log(j, LOG_WARNING, "Exited abnormally: %s", strsignal(s));
+ break;
+ }
}
}
+ j->reaped = true;
+
+ struct machservice *msi = NULL;
+ if( j->crashed ) {
+ SLIST_FOREACH( msi, &j->machservices, sle ) {
+ if( !msi->isActive && (msi->drain_one || msi->drain_all) ) {
+ machservice_drain_port(msi);
+ }
+ }
+ }
+
if (j->hopefully_exits_first) {
j->mgr->hopefully_first_cnt--;
} else if (!j->anonymous && !j->hopefully_exits_last) {
@@ -2612,13 +2675,13 @@
void
jobmgr_dequeue_next_sample(jobmgr_t jm)
{
- if( LIST_EMPTY(&jm->pending_samples) ) {
+ if( STAILQ_EMPTY(&jm->pending_samples) ) {
jobmgr_log(jm, LOG_DEBUG | LOG_CONSOLE, "Sample queue is empty.");
return;
}
/* Dequeue the next in line. */
- job_t j = LIST_FIRST(&jm->pending_samples);
+ job_t j = STAILQ_FIRST(&jm->pending_samples);
if( j->sample_pid ) {
job_log(j, LOG_DEBUG | LOG_CONSOLE, "Sampling is in progress. Not dequeuing next job.");
return;
@@ -2642,27 +2705,32 @@
snprintf(pidstr, sizeof(pidstr), "%u", j->p);
snprintf(j->mgr->sample_log_file, sizeof(j->mgr->sample_log_file), SHUTDOWN_LOG_DIR "/%s-%u.sample.txt", j->label, j->p);
job_log(j, LOG_DEBUG | LOG_CONSOLE, "Going to write sample to %s.", j->mgr->sample_log_file);
- exception_mask_t exceptions = EXC_MASK_BAD_ACCESS |
- EXC_MASK_BAD_INSTRUCTION |
- EXC_MASK_ARITHMETIC |
- EXC_MASK_CRASH ;
if (job_assumes(j, unlink(jm->sample_log_file) != -1 || errno == ENOENT)) {
pid_t sp = 0;
char *sample_args[] = { "/usr/bin/sample", pidstr, "1", "-unsupportedShowArch", "-mayDie", "-file", j->mgr->sample_log_file, NULL };
+ thread_state_flavor_t f = 0;
+ #if defined (__ppc__) || defined(__ppc64__)
+ f = PPC_THREAD_STATE64;
+ #elif defined(__i386__) || defined(__x86_64__)
+ f = x86_THREAD_STATE;
+ #elif defined(__arm__)
+ f = ARM_THREAD_STATE;
+ #else
+ #error "unknown architecture"
+ #endif
+
#if NEEDS_MULTI_THREADED_EXEC
posix_spawnattr_t psattr;
posix_spawnattr_init(psattr);
- posix_spawnattr_setexceptionports_np(&psattr, exceptions, MACH_PORT_NULL, EXCEPTION_DEFAULT, 0);
+ posix_spawnattr_setexceptionports_np(&psattr, EXC_MASK_CRASH, runtime_get_kernel_port(), EXCEPTION_STATE_IDENTITY | MACH_EXCEPTION_CODES , f);
if (!job_assumes(j, (errno = posix_spawnp(&sp, sample_args[0], NULL, &psattr, sample_args, environ)) == 0)) {
- job_log(j, LOG_ERR | LOG_CONSOLE, "Sampling failed for job! Kill it! Kill it with fire!");
- LIST_REMOVE(j, pending_samples_sle);
- job_kill(j);
+ job_log(j, LOG_ERR | LOG_CONSOLE, "Sampling for job failed!");
+ STAILQ_REMOVE(&jm->pending_samples, j, job_s, pending_samples_sle);
jobmgr_dequeue_next_sample(jm);
} else {
j->sample_pid = sp;
- j->pending_sample = false;
/* Let us know when sample is done. ONESHOT is implicit if we're just interested in NOTE_EXIT. */
job_assumes(j, kevent_mod(sp, EVFILT_PROC, EV_ADD, NOTE_EXIT, 0, j) != -1);
@@ -2672,8 +2740,8 @@
#else
switch( (sp = vfork()) ) {
case 0 :
- /* Neuter the exception port so that crashes don't hang sample, making it unreapable. */
- task_set_exception_ports(mach_task_self(), exceptions, MACH_PORT_NULL, EXCEPTION_DEFAULT, 0);
+ /* Handle sample's exceptions directly, since ReportCrash may not be able to. */
+ task_set_exception_ports(mach_task_self(), EXC_MASK_CRASH, runtime_get_kernel_port(), EXCEPTION_STATE_IDENTITY | MACH_EXCEPTION_CODES, f);
execve(sample_args[0], sample_args, environ);
job_log(j, LOG_NOTICE | LOG_CONSOLE, "Could not exec(2): %d", errno);
_exit(EXIT_FAILURE);
@@ -2686,18 +2754,20 @@
if( sp != -1 ) {
j->sample_pid = sp;
- j->pending_sample = false;
/* Let us know when sample is done. ONESHOT is implicit if we're just interested in NOTE_EXIT. */
job_assumes(j, kevent_mod(sp, EVFILT_PROC, EV_ADD, NOTE_EXIT, 0, j) != -1);
} else {
- job_log(j, LOG_ERR | LOG_CONSOLE, "Sampling failed for job! Kill it! Kill it with fire!");
- LIST_REMOVE(j, pending_samples_sle);
- job_kill(j);
+ job_log(j, LOG_ERR | LOG_CONSOLE, "Sampling for job failed!");
+ STAILQ_REMOVE(&jm->pending_samples, j, job_s, pending_samples_sle);
jobmgr_dequeue_next_sample(jm);
}
#endif
+ } else {
+ STAILQ_REMOVE(&jm->pending_samples, j, job_s, pending_samples_sle);
}
+
+ j->pending_sample = false;
}
void
@@ -2718,7 +2788,7 @@
}
}
-INTERNAL_ABI job_t
+job_t
job_dispatch(job_t j, bool kickstart)
{
/*
@@ -2871,62 +2941,15 @@
void
job_reap_sample(job_t j)
{
- char *contents = NULL;
int wstatus = 0;
- int logfile_fd = -1;
if (!job_assumes(j, waitpid(j->sample_pid, &wstatus, 0) != -1)) {
goto out;
}
- /*
- * This won't work if the VFS or filesystems are sick:
- * sync();
- */
-
- if (!job_assumes(j, WIFEXITED(wstatus) && WEXITSTATUS(wstatus) == 0)) {
- goto out;
- }
-
- /* Echo our sample file contents to the console. */
- if (!job_assumes(j, (logfile_fd = open(root_jobmgr->sample_log_file, O_RDONLY|O_NOCTTY)) != -1)) {
- job_log(j, LOG_NOTICE | LOG_CONSOLE, "No sample present at %s.", j->mgr->sample_log_file);
- goto out;
- }
-
- struct stat sb;
- if (!job_assumes(j, fstat(logfile_fd, &sb) != -1)) {
- goto out;
- }
-
- if (sizeof(size_t) == 4 && !job_assumes(j, !(sb.st_size & 0xffffffff00000000llu))) {
- goto out;
- }
-
- size_t contents_sz = (size_t)sb.st_size;
- contents = (char *)malloc(contents_sz);
-
- if (!job_assumes(j, contents != NULL)) {
- goto out;
- }
-
- if (!job_assumes(j, read(logfile_fd, contents, contents_sz) == (ssize_t)contents_sz)) {
- goto out;
- }
-
- /* Special case here. We don't want any formatting, just the sample contents. */
- job_assumes(j, write(fileno(g_console), contents, contents_sz) == (ssize_t)contents_sz);
-
+ job_assumes(j, WIFEXITED(wstatus) && WEXITSTATUS(wstatus) == 0);
+
out:
- if (contents) {
- free(contents);
- }
-
- if (logfile_fd != -1) {
- job_assumes(j, runtime_fsync(logfile_fd) != -1);
- job_assumes(j, runtime_close(logfile_fd) != -1);
- }
-
if( j->kill_after_sample ) {
if (unlikely(j->debug_before_kill)) {
job_log(j, LOG_NOTICE, "Exit timeout elapsed. Entering the kernel debugger");
@@ -2939,7 +2962,7 @@
j->sample_pid = 0;
j->sampled = true;
- LIST_REMOVE(j, pending_samples_sle);
+ STAILQ_REMOVE(&j->mgr->pending_samples, j, job_s, pending_samples_sle);
if( j->reap_after_sample ) {
job_log(j, LOG_NOTICE | LOG_CONSOLE, "Sampling complete. Reaping.");
@@ -3053,24 +3076,29 @@
td -= j->exit_timeout;
job_log(j, LOG_WARNING | LOG_CONSOLE, "Did not die after sending SIGKILL %llu seconds ago...", td);
- } else if ((!j->sampled && !j->sample_pid) && (!j->exit_timeout || (LAUNCHD_SAMPLE_TIMEOUT < j->exit_timeout))) {
- /* This should work even if the job changes its exit_timeout midstream */
- job_log(j, LOG_NOTICE | LOG_CONSOLE, "Sampling timeout elapsed (%u seconds). Scheduling a sample...", LAUNCHD_SAMPLE_TIMEOUT);
- if (j->exit_timeout) {
- unsigned int ttk = (j->exit_timeout - LAUNCHD_SAMPLE_TIMEOUT);
- job_assumes(j, kevent_mod((uintptr_t)&j->exit_timeout, EVFILT_TIMER,
- EV_ADD|EV_ONESHOT, NOTE_SECONDS, ttk, j) != -1);
- job_log(j, LOG_NOTICE | LOG_CONSOLE, "Scheduled new exit timeout for %u seconds later", ttk);
+ } else if (!(j->sampled || j->sample_pid || j->pending_sample) && (!j->exit_timeout || (LAUNCHD_SAMPLE_TIMEOUT < j->exit_timeout))) {
+ if( do_apple_internal_logging ) {
+ /* This should work even if the job changes its exit_timeout midstream */
+ job_log(j, LOG_NOTICE | LOG_CONSOLE, "Sampling timeout elapsed (%u seconds). Scheduling a sample...", LAUNCHD_SAMPLE_TIMEOUT);
+ if (j->exit_timeout) {
+ unsigned int ttk = (j->exit_timeout - LAUNCHD_SAMPLE_TIMEOUT);
+ job_assumes(j, kevent_mod((uintptr_t)&j->exit_timeout, EVFILT_TIMER,
+ EV_ADD|EV_ONESHOT, NOTE_SECONDS, ttk, j) != -1);
+ job_log(j, LOG_NOTICE | LOG_CONSOLE, "Scheduled new exit timeout for %u seconds later", ttk);
+ }
+
+ STAILQ_INSERT_TAIL(&j->mgr->pending_samples, j, pending_samples_sle);
+ j->pending_sample = true;
+ jobmgr_dequeue_next_sample(j->mgr);
}
-
- LIST_INSERT_HEAD(&j->mgr->pending_samples, j, pending_samples_sle);
- jobmgr_dequeue_next_sample(j->mgr);
} else {
- if( !j->sampled ) {
+ if( !(j->sampled || j->sample_pid || j->pending_sample) && do_apple_internal_logging ) {
job_log(j, LOG_WARNING | LOG_CONSOLE, "Exit timeout elapsed (%u seconds). Will kill after sampling.", j->exit_timeout);
- LIST_INSERT_HEAD(&j->mgr->pending_samples, j, pending_samples_sle);
+ STAILQ_INSERT_TAIL(&j->mgr->pending_samples, j, pending_samples_sle);
+ j->pending_sample = true;
+ j->kill_after_sample = true;
+
jobmgr_dequeue_next_sample(j->mgr);
- j->kill_after_sample = true;
} else {
if (unlikely(j->debug_before_kill)) {
job_log(j, LOG_NOTICE, "Exit timeout elapsed. Entering the kernel debugger");
@@ -3113,7 +3141,7 @@
}
}
-INTERNAL_ABI void
+void
jobmgr_callback(void *obj, struct kevent *kev)
{
jobmgr_t jm = obj;
@@ -3174,7 +3202,7 @@
}
}
-INTERNAL_ABI void
+void
job_callback(void *obj, struct kevent *kev)
{
job_t j = obj;
@@ -3244,8 +3272,6 @@
sipc = (!SLIST_EMPTY(&j->sockets) || !SLIST_EMPTY(&j->machservices));
}
- j->checkedin = false;
-
if (sipc) {
job_assumes(j, socketpair(AF_UNIX, SOCK_STREAM, 0, spair) != -1);
}
@@ -3257,7 +3283,7 @@
job_assumes(j, fcntl(j->log_redirect_fd, F_SETFL, O_NONBLOCK) != -1);
job_assumes(j, kevent_mod(j->log_redirect_fd, EVFILT_READ, EV_ADD, 0, 0, j) != -1);
}
-
+
switch (c = runtime_fork(j->weird_bootstrap ? j->j_port : j->mgr->jm_port)) {
case -1:
job_log_error(j, LOG_ERR, "fork() failed, will try again in one second");
@@ -3299,6 +3325,8 @@
job_log(j, LOG_DEBUG, "Started as PID: %u", c);
j->start_pending = false;
+ j->reaped = false;
+ j->crashed = false;
runtime_add_ref();
total_children++;
@@ -4063,7 +4091,7 @@
va_end(ap);
}
-INTERNAL_ABI void
+void
job_log(job_t j, int pri, const char *msg, ...)
{
va_list ap;
@@ -4938,10 +4966,16 @@
}
SLIST_INSERT_HEAD(&j->machservices, ms, sle);
- LIST_INSERT_HEAD(&j->mgr->ms_hash[hash_ms(ms->name)], ms, name_hash_sle);
+
+ jobmgr_t jm_to_insert = j->mgr;
+ if( g_flat_mach_namespace ) {
+ jm_to_insert = j->mgr->created_via_subset ? j->mgr : root_jobmgr;
+ }
+
+ LIST_INSERT_HEAD(&jm_to_insert->ms_hash[hash_ms(ms->name)], ms, name_hash_sle);
LIST_INSERT_HEAD(&port_hash[HASH_PORT(ms->port)], ms, port_hash_sle);
- job_log(j, LOG_INFO, "Mach service added: %s", name);
+ job_log(j, LOG_DEBUG, "Mach service added%s: %s", j->mgr->created_via_subset ? " to private namespace" : "", name);
return ms;
out_bad2:
@@ -4994,12 +5028,10 @@
#endif
if (likely(target_task)) {
- job_assumes(j, task_set_exception_ports(target_task, EXC_MASK_CRASH, exc_port,
- EXCEPTION_STATE_IDENTITY | MACH_EXCEPTION_CODES, f) == KERN_SUCCESS);
+ job_assumes(j, task_set_exception_ports(target_task, EXC_MASK_CRASH, exc_port, EXCEPTION_STATE_IDENTITY | MACH_EXCEPTION_CODES, f) == KERN_SUCCESS);
} else if (pid1_magic && the_exception_server) {
mach_port_t mhp = mach_host_self();
- job_assumes(j, host_set_exception_ports(mhp, EXC_MASK_CRASH, the_exception_server,
- EXCEPTION_STATE_IDENTITY | MACH_EXCEPTION_CODES, f) == KERN_SUCCESS);
+ job_assumes(j, host_set_exception_ports(mhp, EXC_MASK_CRASH, the_exception_server, EXCEPTION_STATE_IDENTITY | MACH_EXCEPTION_CODES, f) == KERN_SUCCESS);
job_assumes(j, launchd_mport_deallocate(mhp) == KERN_SUCCESS);
}
}
@@ -5068,6 +5100,16 @@
job_assumes(ms->job, host_set_UNDServer(mhp, ms->port) == KERN_SUCCESS);
}
break;
+ case LAUNCH_DATA_STRING:
+ if( strcasecmp(key, LAUNCH_JOBKEY_MACH_DRAINMESSAGESONCRASH) == 0 ) {
+ const char *option = launch_data_get_string(obj);
+ if( strcasecmp(option, "One") == 0 ) {
+ ms->drain_one = true;
+ } else if( strcasecmp(option, "All") == 0 ) {
+ ms->drain_all = true;
+ }
+ }
+ break;
case LAUNCH_DATA_DICTIONARY:
job_set_exception_port(ms->job, ms->port);
break;
@@ -5408,6 +5450,7 @@
jmr->killed_hopefully_first_jobs = false;
jmr->killed_normal_jobs = false;
jmr->killed_hopefully_last_jobs = false;
+ STAILQ_INIT(&jmr->pending_samples);
jobmgr_log(jmr, LOG_DEBUG, "Created job manager%s%s", jm ? " with parent: " : ".", jm ? jm->name : "");
@@ -5453,7 +5496,7 @@
return bootstrapper;
}
-INTERNAL_ABI jobmgr_t
+jobmgr_t
jobmgr_delete_anything_with_port(jobmgr_t jm, mach_port_t port)
{
struct machservice *ms, *next_ms;
@@ -5504,7 +5547,6 @@
if (target_pid) {
//jobmgr_assumes(jm, !check_parent);
-
if (unlikely((target_j = jobmgr_find_by_pid(jm, target_pid, false)) == NULL)) {
return NULL;
}
@@ -5517,8 +5559,9 @@
return NULL;
}
-
- LIST_FOREACH(ms, &jm->ms_hash[hash_ms(name)], name_hash_sle) {
+
+ jobmgr_t jm_to_search = ( g_flat_mach_namespace && !jm->created_via_subset ) ? root_jobmgr : jm;
+ LIST_FOREACH(ms, &jm_to_search->ms_hash[hash_ms(name)], name_hash_sle) {
if (!ms->per_pid && strcmp(name, ms->name) == 0) {
return ms;
}
@@ -5562,6 +5605,54 @@
}
void
+machservice_drain_port(struct machservice *ms)
+{
+ if (!job_assumes(ms->job, ms->job->crashed == true)) {
+ return;
+ }
+
+ if( ms->drain_one == false && ms->drain_all == false ) {
+ return;
+ }
+
+ job_log(ms->job, LOG_NOTICE, "Draining %s...", ms->name);
+
+ char req_buff[sizeof(union __RequestUnion__catch_mach_exc_subsystem) * 2];
+ char rep_buff[sizeof(union __ReplyUnion__catch_mach_exc_subsystem)];
+ mig_reply_error_t *req_hdr = (mig_reply_error_t *)&req_buff;
+ mig_reply_error_t *rep_hdr = (mig_reply_error_t *)&rep_buff;
+
+ mach_msg_return_t mr = ~MACH_MSG_SUCCESS;
+
+ do {
+ /* This should be a direct check on the Mach service to see if it's an exception-handling
+ * port, and it will break things if ReportCrash or SafetyNet start advertising other
+ * Mach services. But for now, it should be okay.
+ */
+ if( ms->job->alt_exc_handler || ms->job->internal_exc_handler ) {
+ mr = launchd_exc_runtime_once(ms->port, sizeof(req_buff), sizeof(rep_buff), req_hdr, rep_hdr, 0);
+ } else {
+ mach_msg_options_t options = MACH_RCV_MSG |
+ MACH_RCV_TIMEOUT ;
+
+ mr = mach_msg((mach_msg_header_t *)req_hdr, options, 0, sizeof(req_buff), ms->port, 0, MACH_PORT_NULL);
+ switch( mr ) {
+ case MACH_MSG_SUCCESS :
+ mach_msg_destroy((mach_msg_header_t *)req_hdr);
+ break;
+ case MACH_RCV_TIMED_OUT :
+ break;
+ case MACH_RCV_TOO_LARGE :
+ runtime_syslog(LOG_WARNING, "Tried to receive message that was larger than %lu bytes", sizeof(req_buff));
+ break;
+ default :
+ break;
+ }
+ }
+ } while( ms->drain_all && mr != MACH_RCV_TIMED_OUT );
+}
+
+void
machservice_delete(job_t j, struct machservice *ms, bool port_died)
{
if (unlikely(ms->debug_on_close)) {
@@ -5570,6 +5661,7 @@
}
if (ms->recv && job_assumes(j, !machservice_active(ms))) {
+ job_log(j, LOG_NOTICE, "Closing receive right for %s", ms->name);
job_assumes(j, launchd_mport_close_recv(ms->port) == KERN_SUCCESS);
}
@@ -5579,7 +5671,7 @@
the_exception_server = 0;
}
- job_log(j, LOG_INFO, "Mach service deleted%s: %s", port_died ? " (port died)" : "", ms->name);
+ job_log(j, LOG_NOTICE, "Mach service deleted%s: %s", port_died ? " (port died)" : "", ms->name);
if (ms->special_port_num) {
SLIST_REMOVE(&special_ports, ms, machservice, special_port_sle);
@@ -5660,13 +5752,13 @@
return argv_ret;
}
-INTERNAL_ABI void
+void
job_checkin(job_t j)
{
j->checkedin = true;
}
-INTERNAL_ABI bool
+bool
job_ack_port_destruction(mach_port_t p)
{
struct machservice *ms;
@@ -5684,8 +5776,37 @@
j = ms->job;
- job_log(j, LOG_DEBUG, "Receive right returned to us: %s", ms->name);
-
+ jobmgr_log(root_jobmgr, LOG_DEBUG, "Receive right returned to us: %s", ms->name);
+
+ /* Without being the exception handler, NOTE_EXIT is our only way to tell if the job
+ * crashed, and we can't rely on NOTE_EXIT always being processed after all the job's
+ * receive rights have been returned.
+ *
+ * So when we get receive rights back, check to see if the job has been reaped yet. If
+ * not, then we add this service to a list of services to be drained on crash if it's
+ * requested that behavior. So, for a job with N receive rights all requesting that they
+ * be drained on crash, we can safely handle the following sequence of events.
+ *
+ * ReceiveRight0Returned
+ * ReceiveRight1Returned
+ * ReceiveRight2Returned
+ * NOTE_EXIT (reap, get exit status)
+ * ReceiveRight3Returned
+ * .
+ * .
+ * .
+ * ReceiveRight(N - 1)Returned
+ */
+
+ if( ms->drain_one || ms->drain_all ) {
+ if( j->crashed && j->reaped ) {
+ job_log(j, LOG_DEBUG, "Job has crashed. Draining port...");
+ machservice_drain_port(ms);
+ } else if( !(j->crashed || j->reaped) ) {
+ job_log(j, LOG_DEBUG, "Job's exit status is still unknown. Deferring drain.");
+ }
+ }
+
ms->isActive = false;
if (ms->delete_on_destruction) {
@@ -5693,7 +5814,7 @@
} else if (ms->reset) {
machservice_resetport(j, ms);
}
-
+
job_dispatch(j, false);
root_jobmgr = jobmgr_do_garbage_collection(root_jobmgr);
@@ -5701,7 +5822,7 @@
return true;
}
-INTERNAL_ABI void
+void
job_ack_no_senders(job_t j)
{
j->priv_port_has_senders = false;
@@ -5714,115 +5835,6 @@
job_dispatch(j, false);
}
-#if 0
-void
-job_force_sampletool(job_t j)
-{
- struct stat sb;
- char logfile[PATH_MAX];
- char pidstr[100];
- char *sample_args[] = { "sample", pidstr, "1", "-unsupportedShowArch", "-mayDie", "-file", logfile, NULL };
- char *contents = NULL;
- size_t contents_sz;
- int logfile_fd = -1;
- int console_fd = -1;
- int wstatus;
- pid_t sp;
-
- if (j->sampled || j->per_user) {
- return;
- }
-
- j->sampled = true;
-
- if (!job_assumes(j, do_apple_internal_logging)) {
- return;
- }
-
- if (!job_assumes(j, mkdir(SHUTDOWN_LOG_DIR, S_IRWXU) != -1 || errno == EEXIST)) {
- return;
- }
-
- snprintf(pidstr, sizeof(pidstr), "%u", j->p);
- snprintf(logfile, sizeof(logfile), SHUTDOWN_LOG_DIR "/%s-%u.sample.txt", j->label, j->p);
-
- if (!job_assumes(j, unlink(logfile) != -1 || errno == ENOENT)) {
- goto out;
- }
-
- /*
- * This will stall launchd for as long as the 'sample' tool runs.
- *
- * We didn't give the 'sample' tool a bootstrap port, so it therefore
- * can't deadlock against launchd.
- */
- if (!job_assumes(j, (errno = posix_spawnp(&sp, sample_args[0], NULL, NULL, sample_args, environ)) == 0)) {
- goto out;
- }
-
- job_log(j, LOG_DEBUG, "Waiting for 'sample' to finish.");
-
- if (!job_assumes(j, waitpid(sp, &wstatus, 0) != -1)) {
- goto out;
- }
-
- /*
- * This won't work if the VFS or filesystems are sick:
- * sync();
- */
-
- if (!job_assumes(j, WIFEXITED(wstatus) && WEXITSTATUS(wstatus) == 0)) {
- goto out;
- }
-
- if (!job_assumes(j, (logfile_fd = open(logfile, O_RDONLY|O_NOCTTY)) != -1)) {
- goto out;
- }
-
- if (!job_assumes(j, (console_fd = open(_PATH_CONSOLE, O_WRONLY|O_APPEND|O_NOCTTY)) != -1)) {
- goto out;
- }
-
- if (!job_assumes(j, fstat(logfile_fd, &sb) != -1)) {
- goto out;
- }
-
- if (sizeof (size_t) == 4 && !job_assumes(j, !(sb.st_size & 0xffffffff00000000llu))) {
- goto out;
- }
-
- contents_sz = (size_t) sb.st_size;
-
- contents = malloc(contents_sz);
-
- if (!job_assumes(j, contents != NULL)) {
- goto out;
- }
-
- if (!job_assumes(j, read(logfile_fd, contents, contents_sz) == (ssize_t) contents_sz)) {
- goto out;
- }
-
- job_assumes(j, write(console_fd, contents, contents_sz) == (ssize_t) contents_sz);
-
-out:
- if (contents) {
- free(contents);
- }
-
- if (logfile_fd != -1) {
- job_assumes(j, runtime_fsync(logfile_fd) != -1);
- job_assumes(j, runtime_close(logfile_fd) != -1);
- }
-
- if (console_fd != -1) {
- job_assumes(j, runtime_close(console_fd) != -1);
- }
-
- job_log(j, LOG_DEBUG, "Finished sampling.");
-}
-#endif
-
bool
semaphoreitem_new(job_t j, semaphore_reason_t why, const char *what)
{
@@ -5960,7 +5972,7 @@
}
}
-INTERNAL_ABI void
+void
jobmgr_dispatch_all_semaphores(jobmgr_t jm)
{
jobmgr_t jmi, jmn;
@@ -6418,7 +6430,7 @@
if (invalCnt) switch (inkey) {
case VPROC_GSK_ENVIRONMENT:
- job_assumes(j, false);
+
break;
case 0:
break;
@@ -6724,21 +6736,6 @@
return 0;
}
-void
-ensure_root_bkgd_setup(void)
-{
- if (likely(background_jobmgr) || !pid1_magic) {
- return;
- }
-
- if (!jobmgr_assumes(root_jobmgr, (background_jobmgr = jobmgr_new(root_jobmgr, mach_task_self(), MACH_PORT_NULL, false, VPROCMGR_SESSION_BACKGROUND)) != NULL)) {
- return;
- }
-
- background_jobmgr->req_port = 0;
- jobmgr_assumes(root_jobmgr, launchd_mport_make_send(background_jobmgr->jm_port) == KERN_SUCCESS);
-}
-
kern_return_t
job_mig_lookup_per_user_context(job_t j, uid_t which_user, mach_port_t *up_cont)
{
@@ -6762,14 +6759,6 @@
*up_cont = MACH_PORT_NULL;
- if (which_user == 0) {
- ensure_root_bkgd_setup();
-
- *up_cont = background_jobmgr->jm_port;
-
- return 0;
- }
-
LIST_FOREACH(ji, &root_jobmgr->jobs, sle) {
if (!ji->per_user) {
continue;
@@ -6844,7 +6833,7 @@
if (unlikely((ms = machservice_new(j, servicename, serviceportp, per_pid_service)) == NULL)) {
return BOOTSTRAP_NO_MEMORY;
}
-
+
/* Treat this like a legacy job. */
if( !j->legacy_mach_job ) {
ms->isActive = true;
@@ -6870,6 +6859,7 @@
job_log(j, LOG_WARNING, "Check-in of Mach service failed. Already active: %s", servicename);
return BOOTSTRAP_SERVICE_ACTIVE;
}
+
}
machservice_request_notifications(ms);
@@ -7051,21 +7041,19 @@
name_array_t service_names = NULL;
bootstrap_status_array_t service_actives = NULL;
unsigned int cnt = 0, cnt2 = 0;
- struct machservice *ms;
jobmgr_t jm;
- job_t ji;
if (!launchd_assumes(j != NULL)) {
return BOOTSTRAP_NO_MEMORY;
}
- jm = j->mgr;
+ jm = g_flat_mach_namespace ? root_jobmgr : j->mgr;
- LIST_FOREACH(ji, &jm->jobs, sle) {
- SLIST_FOREACH(ms, &ji->machservices, sle) {
- if (!ms->per_pid) {
- cnt++;
- }
+ unsigned int i = 0;
+ struct machservice *msi = NULL;
+ for( i = 0; i < MACHSERVICE_HASH_SIZE; i++ ) {
+ LIST_FOREACH( msi, &jm->ms_hash[i], name_hash_sle ) {
+ cnt += !msi->per_pid ? 1 : 0;
}
}
@@ -7083,11 +7071,11 @@
goto out_bad;
}
- LIST_FOREACH(ji, &jm->jobs, sle) {
- SLIST_FOREACH(ms, &ji->machservices, sle) {
- if (!ms->per_pid) {
- strlcpy(service_names[cnt2], machservice_name(ms), sizeof(service_names[0]));
- service_actives[cnt2] = machservice_status(ms);
+ for( i = 0; i < MACHSERVICE_HASH_SIZE; i++ ) {
+ LIST_FOREACH( msi, &jm->ms_hash[i], name_hash_sle ) {
+ if( !msi->per_pid ) {
+ strlcpy(service_names[cnt2], machservice_name(msi), sizeof(service_names[0]));
+ service_actives[cnt2] = machservice_status(msi);
cnt2++;
}
}
@@ -7113,13 +7101,193 @@
return BOOTSTRAP_NO_MEMORY;
}
+kern_return_t
+job_mig_lookup_children(job_t j, mach_port_array_t *child_ports, mach_msg_type_number_t *child_ports_cnt,
+ name_array_t *child_names, mach_msg_type_number_t *child_names_cnt,
+ bootstrap_property_array_t *child_properties, mach_msg_type_number_t *child_properties_cnt)
+{
+ kern_return_t kr = BOOTSTRAP_NO_MEMORY;
+ if( !launchd_assumes(j != NULL) ) {
+ return BOOTSTRAP_NO_MEMORY;
+ }
+
+ struct ldcred *ldc = runtime_get_caller_creds();
+
+ /* Only allow root processes to look up children, even if we're in the per-user laucnhd.
+ * Otherwise, this could be used to cross sessions, which counts as a security vulnerability
+ * in a non-flat namespace.
+ */
+ if( ldc->euid != 0 ) {
+ job_log(j, LOG_WARNING, "Attempt to look up children of bootstrap by unprivileged job.");
+ return BOOTSTRAP_NOT_PRIVILEGED;
+ }
+
+ unsigned int cnt = 0;
+
+ jobmgr_t jmr = j->mgr;
+ jobmgr_t jmi = NULL;
+ SLIST_FOREACH( jmi, &jmr->submgrs, sle ) {
+ cnt += g_flat_mach_namespace ? ( jmi->created_via_subset ? 1 : 0 ) : 1;
+ }
+
+ /* Find our per-user launchds if we're PID 1. */
+ job_t ji = NULL;
+ if( pid1_magic ) {
+ LIST_FOREACH( ji, &jmr->jobs, sle ) {
+ cnt += ji->per_user ? 1 : 0;
+ }
+ }
+
+ if( cnt == 0 ) {
+ return BOOTSTRAP_NO_CHILDREN;
+ }
+
+ mach_port_array_t _child_ports = NULL;
+ mig_allocate((vm_address_t *)&_child_ports, cnt * sizeof(_child_ports[0]));
+ if( !job_assumes(j, _child_ports != NULL) ) {
+ kr = BOOTSTRAP_NO_MEMORY;
+ goto out_bad;
+ }
+
+ name_array_t _child_names = NULL;
+ mig_allocate((vm_address_t *)&_child_names, cnt * sizeof(_child_names[0]));
+ if( !job_assumes(j, _child_names != NULL) ) {
+ kr = BOOTSTRAP_NO_MEMORY;
+ goto out_bad;
+ }
+
+ bootstrap_property_array_t _child_properties = NULL;
+ mig_allocate((vm_address_t *)&_child_properties, cnt * sizeof(_child_properties[0]));
+ if( !job_assumes(j, _child_properties != NULL) ) {
+ kr = BOOTSTRAP_NO_MEMORY;
+ goto out_bad;
+ }
+
+ unsigned int cnt2 = 0;
+ SLIST_FOREACH( jmi, &jmr->submgrs, sle ) {
+ if( (g_flat_mach_namespace && jmi->created_via_subset) || !g_flat_mach_namespace ) {
+ if( jobmgr_assumes(jmi, launchd_mport_make_send(jmi->jm_port)) == KERN_SUCCESS ) {
+ _child_ports[cnt2] = jmi->jm_port;
+ } else {
+ _child_ports[cnt2] = MACH_PORT_NULL;
+ }
+
+ strlcpy(_child_names[cnt2], jmi->name, sizeof(_child_names[0]));
+ _child_properties[cnt2] |= BOOTSTRAP_PROPERTY_SUBSET;
+
+ cnt2++;
+ }
+ }
+
+ if( pid1_magic ) {
+ LIST_FOREACH( ji, &jmr->jobs, sle ) {
+ if( ji->per_user ) {
+ if( job_assumes(ji, SLIST_FIRST(&ji->machservices)->per_user_hack == true) ) {
+ mach_port_t port = machservice_port(SLIST_FIRST(&ji->machservices));
+
+ if( job_assumes(ji, launchd_mport_copy_send(port)) == KERN_SUCCESS ) {
+ _child_ports[cnt2] = port;
+ } else {
+ _child_ports[cnt2] = MACH_PORT_NULL;
+ }
+ } else {
+ _child_ports[cnt2] = MACH_PORT_NULL;
+ }
+
+ strlcpy(_child_names[cnt2], ji->label, sizeof(_child_names[0]));
+ _child_properties[cnt2] |= BOOTSTRAP_PROPERTY_PERUSER;
+
+ cnt2++;
+ }
+ }
+ }
+
+ *child_names_cnt = cnt;
+ *child_ports_cnt = cnt;
+ *child_properties_cnt = cnt;
+
+ *child_names = _child_names;
+ *child_ports = _child_ports;
+ *child_properties = _child_properties;
+
+ unsigned int i = 0;
+ for( i = 0; i < cnt; i++ ) {
+ job_log(j, LOG_DEBUG, "child_names[%u] = %s", i, (char *)_child_names[i]);
+ }
+
+ return BOOTSTRAP_SUCCESS;
+out_bad:
+ if( _child_ports ) {
+ mig_deallocate((vm_address_t)_child_ports, cnt * sizeof(_child_ports[0]));
+ }
+
+ if( _child_names ) {
+ mig_deallocate((vm_address_t)_child_names, cnt * sizeof(_child_ports[0]));
+ }
+
+ if( _child_properties ) {
+ mig_deallocate((vm_address_t)_child_properties, cnt * sizeof(_child_properties[0]));
+ }
+
+ return kr;
+}
+
+kern_return_t
+job_mig_transaction_count_for_pid(job_t j, pid_t p, int32_t *cnt, boolean_t *condemned)
+{
+ kern_return_t kr = KERN_FAILURE;
+ struct ldcred *ldc = runtime_get_caller_creds();
+ if( (ldc->euid != geteuid()) && (ldc->euid != 0) ) {
+ return BOOTSTRAP_NOT_PRIVILEGED;
+ }
+
+ job_t j_for_pid = jobmgr_find_by_pid_deep(j->mgr, p);
+ if( j_for_pid ) {
+ if( j_for_pid->kill_via_shmem ) {
+ if( j_for_pid->shmem ) {
+ *cnt = j_for_pid->shmem->vp_shmem_transaction_cnt;
+ *condemned = j_for_pid->shmem->vp_shmem_flags & VPROC_SHMEM_EXITING;
+ *cnt += *condemned ? 1 : 0;
+ } else {
+ *cnt = 0;
+ *condemned = false;
+ }
+
+ kr = BOOTSTRAP_SUCCESS;
+ } else {
+ kr = BOOTSTRAP_NO_MEMORY;
+ }
+ } else {
+ kr = BOOTSTRAP_UNKNOWN_SERVICE;
+ }
+
+ return kr;
+}
+
+kern_return_t
+job_mig_pid_is_managed(job_t j __attribute__((unused)), pid_t p, boolean_t *managed)
+{
+ struct ldcred *ldc = runtime_get_caller_creds();
+ if( (ldc->euid != geteuid()) && (ldc->euid != 0) ) {
+ return BOOTSTRAP_NOT_PRIVILEGED;
+ }
+
+ /* This is so loginwindow doesn't try to quit GUI apps that have been launched
+ * directly by launchd as agents.
+ */
+ job_t j_for_pid = jobmgr_find_by_pid_deep(root_jobmgr, p);
+ if( j_for_pid && !j_for_pid->anonymous && !j_for_pid->legacy_LS_job ) {
+ *managed = true;
+ }
+
+ return BOOTSTRAP_SUCCESS;
+}
+
jobmgr_t
jobmgr_find_by_name(jobmgr_t jm, const char *where)
{
jobmgr_t jmi, jmi2;
- ensure_root_bkgd_setup();
-
/* NULL is only passed for our custom API for LaunchServices. If that is the case, we do magic. */
if (where == NULL) {
if (strcasecmp(jm->name, VPROCMGR_SESSION_LOGINWINDOW) == 0) {
@@ -7178,50 +7346,9 @@
job_t j2;
if (j->mgr->session_initialized) {
- if (ldc->uid == 0 && pid1_magic) {
- if (strcmp(j->mgr->name, VPROCMGR_SESSION_LOGINWINDOW) == 0) {
- job_t ji, jn;
-
- LIST_FOREACH_SAFE(ji, &j->mgr->jobs, sle, jn) {
- if (!ji->anonymous) {
- job_remove(ji, false);
- }
- }
-
- ensure_root_bkgd_setup();
-
- SLIST_REMOVE(&j->mgr->parentmgr->submgrs, j->mgr, jobmgr_s, sle);
- j->mgr->parentmgr = background_jobmgr;
- SLIST_INSERT_HEAD(&j->mgr->parentmgr->submgrs, j->mgr, sle);
-
- /*
- * We really should wait for all the jobs to die before proceeding. See 5351245 for more info.
- *
- * We have hacked around this in job_find() by ignoring jobs that are pending removal.
- */
-
- } else if (strcmp(j->mgr->name, VPROCMGR_SESSION_AQUA) == 0) {
- job_log(j, LOG_DEBUG, "Tried to move the Aqua session.");
- return 0;
- } else if (strcmp(j->mgr->name, VPROCMGR_SESSION_BACKGROUND) == 0) {
- job_log(j, LOG_DEBUG, "Tried to move the background session.");
- return 0;
- } else {
- job_log(j, LOG_ERR, "Tried to initialize an already setup session!");
- kr = BOOTSTRAP_NOT_PRIVILEGED;
- goto out;
- }
- } else {
- job_log(j, LOG_ERR, "Tried to initialize an already setup session!");
- kr = BOOTSTRAP_NOT_PRIVILEGED;
- goto out;
- }
- } else if (ldc->uid == 0 && pid1_magic && strcmp(session_type, VPROCMGR_SESSION_STANDARDIO) == 0) {
- ensure_root_bkgd_setup();
-
- SLIST_REMOVE(&j->mgr->parentmgr->submgrs, j->mgr, jobmgr_s, sle);
- j->mgr->parentmgr = background_jobmgr;
- SLIST_INSERT_HEAD(&j->mgr->parentmgr->submgrs, j->mgr, sle);
+ job_log(j, LOG_ERR, "Tried to initialize an already setup session!");
+ kr = BOOTSTRAP_NOT_PRIVILEGED;
+ goto out;
} else if (strcmp(session_type, VPROCMGR_SESSION_LOGINWINDOW) == 0) {
jobmgr_t jmi;
@@ -7332,6 +7459,55 @@
}
kern_return_t
+job_mig_detach_from_console(job_t j, mach_port_t *new_bsport)
+{
+ if( j->mgr == root_jobmgr ) {
+ return BOOTSTRAP_NOT_PRIVILEGED;
+ }
+
+ if( !j->anonymous ) {
+ job_log(j, LOG_NOTICE, "Non-anonymous job tried to move to Background session. Please set LimitLoadToSessionType in the launchd property list to \"Background\" instead.");
+ return BOOTSTRAP_NOT_PRIVILEGED;
+ }
+
+ job_log(j, LOG_NOTICE, "Detaching from console session.");
+
+ /* Remove the job from it's current job manager. */
+ LIST_REMOVE(j, sle);
+ LIST_REMOVE(j, pid_hash_sle);
+
+ job_t ji = NULL, jit = NULL;
+ LIST_FOREACH_SAFE( ji, &j->mgr->global_env_jobs, global_env_sle, jit ) {
+ if( ji == j ) {
+ LIST_REMOVE(ji, global_env_sle);
+ break;
+ }
+ }
+
+ /* Put the job into the background job manager. */
+ LIST_INSERT_HEAD(&root_jobmgr->jobs, j, sle);
+ LIST_INSERT_HEAD(&root_jobmgr->active_jobs[ACTIVE_JOB_HASH(j->p)], j, pid_hash_sle);
+
+ if( ji ) {
+ LIST_INSERT_HEAD(&root_jobmgr->global_env_jobs, j, global_env_sle);
+ }
+
+ /* Move our Mach services over. */
+ if( !g_flat_mach_namespace && !SLIST_EMPTY(&j->machservices) ) {
+ struct machservice *msi = NULL, *msit = NULL;
+ SLIST_FOREACH_SAFE( msi, &j->machservices, sle, msit ) {
+ LIST_REMOVE(msi, name_hash_sle);
+ LIST_INSERT_HEAD(&root_jobmgr->ms_hash[hash_ms(msi->name)], msi, name_hash_sle);
+ }
+ }
+
+ j->mgr = root_jobmgr;
+ *new_bsport = root_jobmgr->jm_port;
+
+ return KERN_SUCCESS;
+}
+
+kern_return_t
job_mig_take_subset(job_t j, mach_port_t *reqport, mach_port_t *rcvright,
vm_offset_t *outdata, mach_msg_type_number_t *outdataCnt,
mach_port_array_t *portsp, unsigned int *ports_cnt)
@@ -7501,6 +7677,9 @@
}
*subsetportp = jmr->jm_port;
+ jmr->created_via_subset = true;
+
+ job_log(j, LOG_NOTICE, "Job created a subset named \"%s\"", jmr->name);
return BOOTSTRAP_SUCCESS;
}
@@ -7523,7 +7702,7 @@
}
kern_return_t
-job_mig_kickstart(job_t j, name_t targetlabel, pid_t *out_pid, mach_port_t *out_name_port, mach_port_t *obsrvr_port)
+job_mig_kickstart(job_t j, name_t targetlabel, pid_t *out_pid, mach_port_t *out_name_port, mach_port_t *obsrvr_port, unsigned int flags)
{
struct ldcred *ldc = runtime_get_caller_creds();
job_t otherj;
@@ -7546,6 +7725,11 @@
return BOOTSTRAP_NOT_PRIVILEGED;
}
+ if( otherj->p && (flags & VPROCFLAG_STALL_JOB_EXEC) ) {
+ return BOOTSTRAP_SERVICE_ACTIVE;
+ }
+
+ otherj->stall_before_exec = ( flags & VPROCFLAG_STALL_JOB_EXEC );
otherj = job_dispatch(otherj, true);
if (!job_assumes(j, otherj && otherj->p)) {
@@ -7597,65 +7781,6 @@
}
kern_return_t
-job_mig_set_service_policy(job_t j, pid_t target_pid, uint64_t flags, name_t target_service)
-{
- struct ldcred *ldc = runtime_get_caller_creds();
- job_t target_j = NULL;
-
- if (!launchd_assumes(j != NULL)) {
- return BOOTSTRAP_NO_MEMORY;
- }
-
- target_j = jobmgr_find_by_pid(j->mgr, target_pid, true);
-
- if (ldc->euid && (ldc->euid != getuid())) {
- int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, target_pid };
- struct kinfo_proc kp;
- size_t len = sizeof(kp);
-
- job_assumes(j, sysctl(mib, 4, &kp, &len, NULL, 0) != -1);
- job_assumes(j, len == sizeof(kp));
-
- uid_t kp_euid = kp.kp_eproc.e_ucred.cr_uid;
- uid_t kp_uid = kp.kp_eproc.e_pcred.p_ruid;
-
- if( ldc->euid == kp_euid ) {
- job_log(j, LOG_WARNING, "Working around rdar://problem/5982485 and allowing job to set policy for PID %u. We should discuss having %s run under a per-user launchd.", target_pid, target_j->label);
- } else {
- job_log(j, LOG_ERR, "Denied Mach service policy update requested by UID/EUID %u/%u against PID %u with UID/EUID %u/%u due to mismatched credentials.", ldc->uid, ldc->euid, target_pid, kp_uid, kp_euid);
-
- return BOOTSTRAP_NOT_PRIVILEGED;
- }
- }
-
- if (unlikely(!SLIST_EMPTY(&j->mspolicies))) {
- job_log(j, LOG_WARNING, "Jobs that have policies assigned to them may not set policies.");
- return BOOTSTRAP_NOT_PRIVILEGED;
- }
-
- if (unlikely(target_j == NULL)) {
- if (job_assumes(j, errno == ESRCH)) {
- job_log(j, LOG_ERR, "Could not find PID %u while trying to set Mach bootstrap service policy: %s", target_pid, target_service);
- }
- return BOOTSTRAP_NO_MEMORY;
- }
-
- job_log(j, LOG_DEBUG, "Setting policy on job \"%s\" for Mach service: %s", target_j->label, target_service);
- if (target_service[0]) {
- bool r = mspolicy_new(target_j, target_service, flags & BOOTSTRAP_ALLOW_LOOKUP, flags & BOOTSTRAP_PER_PID_SERVICE, false);
-
- if (unlikely(!r) && job_assumes(j, errno == EEXIST)) {
- job_log(j, LOG_ERR, "Tried to update a known policy on PID %u: %s", target_pid, target_service);
- }
- } else {
- target_j->deny_unknown_mslookups = !(flags & BOOTSTRAP_ALLOW_LOOKUP);
- target_j->deny_job_creation = flags & BOOTSTRAP_DENY_JOB_CREATION;
- }
-
- return 0;
-}
-
-kern_return_t
job_mig_spawn(job_t j, vm_offset_t indata, mach_msg_type_number_t indataCnt, pid_t *child_pid, mach_port_t *obsvr_port)
{
launch_data_t input_obj = NULL;
@@ -7743,7 +7868,7 @@
return BOOTSTRAP_SUCCESS;
}
-INTERNAL_ABI void
+void
jobmgr_init(bool sflag)
{
const char *root_session_type = pid1_magic ? VPROCMGR_SESSION_SYSTEM : VPROCMGR_SESSION_BACKGROUND;
Modified: trunk/launchd/src/launchd_core_logic.h
===================================================================
--- trunk/launchd/src/launchd_core_logic.h 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/launchd_core_logic.h 2008-11-22 22:31:20 UTC (rev 23754)
@@ -29,29 +29,31 @@
extern jobmgr_t root_jobmgr;
extern mach_port_t inherited_bootstrap_port;
+extern bool g_flat_mach_namespace;
-INTERNAL_ABI void jobmgr_init(bool);
-INTERNAL_ABI jobmgr_t jobmgr_shutdown(jobmgr_t jm);
-INTERNAL_ABI void jobmgr_dispatch_all_semaphores(jobmgr_t jm);
+void jobmgr_init(bool);
+jobmgr_t jobmgr_shutdown(jobmgr_t jm);
+void jobmgr_dispatch_all_semaphores(jobmgr_t jm);
void jobmgr_dispatch_all_interested(jobmgr_t jm, job_t j);
-INTERNAL_ABI jobmgr_t jobmgr_delete_anything_with_port(jobmgr_t jm, mach_port_t port);
+jobmgr_t jobmgr_delete_anything_with_port(jobmgr_t jm, mach_port_t port);
-INTERNAL_ABI launch_data_t job_export_all(void);
+launch_data_t job_export_all(void);
-INTERNAL_ABI job_t job_dispatch(job_t j, bool kickstart); /* returns j on success, NULL on job removal */
-INTERNAL_ABI job_t job_find(const char *label);
-INTERNAL_ABI job_t job_find_by_service_port(mach_port_t p);
-INTERNAL_ABI bool job_ack_port_destruction(mach_port_t p);
-INTERNAL_ABI bool job_is_anonymous(job_t j);
-INTERNAL_ABI launch_data_t job_export(job_t j);
-INTERNAL_ABI void job_stop(job_t j);
-INTERNAL_ABI void job_checkin(job_t j);
-INTERNAL_ABI void job_remove(job_t j, bool force);
-INTERNAL_ABI job_t job_import(launch_data_t pload);
-INTERNAL_ABI launch_data_t job_import_bulk(launch_data_t pload);
-INTERNAL_ABI job_t job_mig_intran(mach_port_t mp);
-INTERNAL_ABI void job_mig_destructor(job_t j);
-INTERNAL_ABI void job_ack_no_senders(job_t j);
-INTERNAL_ABI void job_log(job_t j, int pri, const char *msg, ...) __attribute__((format(printf, 3, 4)));
+job_t job_dispatch(job_t j, bool kickstart); /* returns j on success, NULL on job removal */
+job_t job_find(const char *label);
+job_t job_find_by_service_port(mach_port_t p);
+bool job_ack_port_destruction(mach_port_t p);
+bool job_is_anonymous(job_t j);
+launch_data_t job_export(job_t j);
+void job_stop(job_t j);
+void job_checkin(job_t j);
+void job_remove(job_t j, bool force);
+job_t job_import(launch_data_t pload);
+launch_data_t job_import_bulk(launch_data_t pload);
+job_t job_mig_intran(mach_port_t mp);
+void job_mig_destructor(job_t j);
+void job_ack_no_senders(job_t j);
+void job_log(job_t j, int pri, const char *msg, ...) __attribute__((format(printf, 3, 4)));
+void job_set_pid_crashed(pid_t p);
#endif
Modified: trunk/launchd/src/launchd_internal.defs
===================================================================
--- trunk/launchd/src/launchd_internal.defs 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/launchd_internal.defs 2008-11-22 22:31:20 UTC (rev 23754)
@@ -28,6 +28,3 @@
routine handle_kqueue(
__port : mach_port_t;
__fd : integer_t);
-
-routine handle_mport(
- __port : mach_port_t);
\ No newline at end of file
Modified: trunk/launchd/src/launchd_ktrace.c
===================================================================
--- trunk/launchd/src/launchd_ktrace.c 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/launchd_ktrace.c 2008-11-22 22:31:20 UTC (rev 23754)
@@ -1,6 +1,6 @@
#include "launchd_ktrace.h"
-INTERNAL_ABI void
+void
runtime_ktrace1(runtime_ktrace_code_t code)
{
void *ra = __builtin_extract_return_addr(__builtin_return_address(1));
@@ -11,7 +11,7 @@
}
}
-INTERNAL_ABI void
+void
runtime_ktrace0(runtime_ktrace_code_t code)
{
void *ra = __builtin_extract_return_addr(__builtin_return_address(0));
@@ -22,7 +22,7 @@
}
}
-INTERNAL_ABI void
+void
runtime_ktrace(runtime_ktrace_code_t code, long a, long b, long c)
{
void *ra = __builtin_extract_return_addr(__builtin_return_address(0));
Modified: trunk/launchd/src/launchd_ktrace.h
===================================================================
--- trunk/launchd/src/launchd_ktrace.h 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/launchd_ktrace.h 2008-11-22 22:31:20 UTC (rev 23754)
@@ -6,14 +6,6 @@
extern bool do_apple_internal_logging;
-#ifndef INTERNAL_ABI
-#ifdef __i386__
- #define INTERNAL_ABI __attribute__((regparm(3))) /* Enable register-passing for the first 3 arguments on i386. */
-#else
- #define INTERNAL_ABI
-#endif
-#endif
-
#ifndef DBG_LAUNCHD
#define DBG_LAUNCHD 34
#endif
@@ -38,8 +30,8 @@
} runtime_ktrace_code_t;
/* All of these log the return address as "arg4" */
-INTERNAL_ABI void runtime_ktrace1(runtime_ktrace_code_t code);
-INTERNAL_ABI void runtime_ktrace0(runtime_ktrace_code_t code);
-INTERNAL_ABI void runtime_ktrace(runtime_ktrace_code_t code, long a, long b, long c);
+void runtime_ktrace1(runtime_ktrace_code_t code);
+void runtime_ktrace0(runtime_ktrace_code_t code);
+void runtime_ktrace(runtime_ktrace_code_t code, long a, long b, long c);
#endif /* __LAUNCHD_KTRACE_H__ */
Modified: trunk/launchd/src/launchd_mig_types.defs
===================================================================
--- trunk/launchd/src/launchd_mig_types.defs 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/launchd_mig_types.defs 2008-11-22 22:31:20 UTC (rev 23754)
@@ -25,13 +25,15 @@
type pid_t = integer_t;
type pid_array_t = ^array [] of pid_t;
-type uid_t = integer_t;
-type gid_t = integer_t;
+type uid_t = natural_t;
+type gid_t = natural_t;
type vproc_gsk_t = integer_t;
type logmsg_t = c_string[*:2048];
type cmd_t = c_string[512];
type name_t = c_string[128];
type name_array_t = ^array [] of name_t;
+type bootstrap_property_t = natural_t;
+type bootstrap_property_array_t = ^array [] of bootstrap_property_t;
type bootstrap_status_t = integer_t;
type bootstrap_status_array_t = ^array [] of bootstrap_status_t;
Modified: trunk/launchd/src/launchd_runtime.c
===================================================================
--- trunk/launchd/src/launchd_runtime.c 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/launchd_runtime.c 2008-11-22 22:31:20 UTC (rev 23754)
@@ -64,7 +64,7 @@
#include "launchd_internalServer.h"
#include "launchd_internal.h"
#include "notifyServer.h"
-#include "excServer.h"
+#include "mach_excServer.h"
/* We shouldn't be including these */
#include "launch.h"
@@ -86,13 +86,13 @@
static int bulk_kev_cnt;
static pthread_t kqueue_demand_thread;
-static pthread_t demand_thread;
-static void *mport_demand_loop(void *arg);
+static void mportset_callback(void);
+static kq_callback kqmportset_callback = (kq_callback)mportset_callback;
static void *kqueue_demand_loop(void *arg);
static void log_kevent_struct(int level, struct kevent *kev_base, int indx);
-static boolean_t launchd_internal_demux(mach_msg_header_t *Request, mach_msg_header_t *Reply);
+boolean_t launchd_internal_demux(mach_msg_header_t *Request, mach_msg_header_t *Reply);
static void record_caller_creds(mach_msg_header_t *mh);
static void launchd_runtime2(mach_msg_size_t msg_size, mig_reply_error_t *bufRequest, mig_reply_error_t *bufReply);
static mach_msg_size_t max_msg_size;
@@ -131,8 +131,9 @@
bool do_apple_internal_logging;
bool low_level_debug;
bool g_force_old_kill_path = false;
+bool g_flat_mach_namespace = false;
-INTERNAL_ABI mach_port_t
+mach_port_t
runtime_get_kernel_port(void)
{
return launchd_internal_port;
@@ -143,7 +144,7 @@
static int internal_mask_pri = LOG_UPTO(LOG_NOTICE);
-INTERNAL_ABI void
+void
launchd_runtime_init(void)
{
mach_msg_size_t mxmsgsz;
@@ -155,6 +156,8 @@
launchd_assert((errno = mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_PORT_SET, &demand_port_set)) == KERN_SUCCESS);
launchd_assert((errno = mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_PORT_SET, &ipc_port_set)) == KERN_SUCCESS);
+ launchd_assert(kevent_mod(demand_port_set, EVFILT_MACHPORT, EV_ADD, 0, 0, &kqmportset_callback) != -1);
+
launchd_assert(launchd_mport_create_recv(&launchd_internal_port) == KERN_SUCCESS);
launchd_assert(launchd_mport_make_send(launchd_internal_port) == KERN_SUCCESS);
@@ -172,16 +175,10 @@
launchd_assert(pthread_create(&kqueue_demand_thread, &attr, kqueue_demand_loop, NULL) == 0);
pthread_attr_destroy(&attr);
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
- pthread_attr_setstacksize(&attr, PTHREAD_STACK_MIN);
- launchd_assert(pthread_create(&demand_thread, &attr, mport_demand_loop, NULL) == 0);
- pthread_attr_destroy(&attr);
-
launchd_assumes(sysctlbyname("vfs.generic.noremotehang", NULL, NULL, &p, sizeof(p)) != -1);
}
-INTERNAL_ABI void
+void
launchd_runtime_init2(void)
{
size_t i;
@@ -192,26 +189,7 @@
}
}
-void *
-mport_demand_loop(void *arg __attribute__((unused)))
-{
- mach_msg_empty_rcv_t dummy;
- kern_return_t kr;
-
- for (;;) {
- kr = mach_msg(&dummy.header, MACH_RCV_MSG|MACH_RCV_LARGE, 0, 0, demand_port_set, 0, MACH_PORT_NULL);
- if (unlikely(kr == MACH_RCV_PORT_CHANGED)) {
- break;
- } else if (!launchd_assumes(kr == MACH_RCV_TOO_LARGE)) {
- continue;
- }
- launchd_assumes(handle_mport(launchd_internal_port) == 0);
- }
-
- return NULL;
-}
-
-INTERNAL_ABI const char *
+const char *
proc_flags_to_C_names(unsigned int flags)
{
#define MAX_PFLAG_STR "P_ADVLOCK|P_CONTROLT|P_LP64|P_NOCLDSTOP|P_PPWAIT|P_PROFIL|P_SELECT|P_CONTINUED|P_SUGID|P_SYSTEM|P_TIMEOUT|P_TRACED|P_RESV3|P_WEXIT|P_EXEC|P_OWEUPC|P_AFFINITY|P_TRANSLATED|P_RESV5|P_CHECKOPENEVT|P_DEPENDENCY_CAPABLE|P_REBOOT|P_TBE|P_RESV7|P_THCWD|P_RESV9|P_RESV10|P_RESV11|P_NOSHLIB|P_FORCEQUOTA|P_NOCLDWAIT|P_NOREMOTEHANG|0xdeadbeeffeedface"
@@ -275,7 +253,7 @@
return flags_buf;
}
-INTERNAL_ABI const char *
+const char *
reboot_flags_to_C_names(unsigned int flags)
{
#define MAX_RB_STR "RB_ASKNAME|RB_SINGLE|RB_NOSYNC|RB_HALT|RB_INITNAME|RB_DFLTROOT|RB_ALTBOOT|RB_UNIPROC|RB_SAFEBOOT|RB_UPSDELAY|0xdeadbeeffeedface"
@@ -314,7 +292,7 @@
return flags_buf;
}
-INTERNAL_ABI const char *
+const char *
signal_to_C_name(unsigned int sig)
{
static char unknown[25];
@@ -531,8 +509,8 @@
indx, kev->udata, kev->data, ident_buf, filter_str, flags_buf, fflags_buf);
}
-kern_return_t
-x_handle_mport(mach_port_t junk __attribute__((unused)))
+void
+mportset_callback(void)
{
mach_port_name_array_t members;
mach_msg_type_number_t membersCnt;
@@ -542,7 +520,7 @@
unsigned int i;
if (!launchd_assumes((errno = mach_port_get_set_status(mach_task_self(), demand_port_set, &members, &membersCnt)) == KERN_SUCCESS)) {
- return 1;
+ return;
}
for (i = 0; i < membersCnt; i++) {
@@ -570,8 +548,6 @@
launchd_assumes(vm_deallocate(mach_task_self(), (vm_address_t)members,
(vm_size_t) membersCnt * sizeof(mach_port_name_t)) == KERN_SUCCESS);
-
- return 0;
}
void *
@@ -646,7 +622,7 @@
-INTERNAL_ABI void
+void
launchd_runtime(void)
{
mig_reply_error_t *req = NULL, *resp = NULL;
@@ -678,19 +654,19 @@
}
}
-INTERNAL_ABI kern_return_t
+kern_return_t
launchd_set_bport(mach_port_t name)
{
return errno = task_set_bootstrap_port(mach_task_self(), name);
}
-INTERNAL_ABI kern_return_t
+kern_return_t
launchd_get_bport(mach_port_t *name)
{
return errno = task_get_bootstrap_port(mach_task_self(), name);
}
-INTERNAL_ABI kern_return_t
+kern_return_t
launchd_mport_notify_req(mach_port_t name, mach_msg_id_t which)
{
mach_port_mscount_t msgc = (which == MACH_NOTIFY_PORT_DESTROYED) ? 0 : 1;
@@ -714,7 +690,7 @@
return errno;
}
-INTERNAL_ABI pid_t
+pid_t
runtime_fork(mach_port_t bsport)
{
sigset_t emptyset, oset;
@@ -755,7 +731,7 @@
}
-INTERNAL_ABI void
+void
runtime_set_timeout(timeout_callback to_cb, unsigned int sec)
{
if (sec == 0 || to_cb == NULL) {
@@ -767,7 +743,7 @@
runtime_idle_timeout = sec * 1000;
}
-INTERNAL_ABI kern_return_t
+kern_return_t
runtime_add_mport(mach_port_t name, mig_callback demux, mach_msg_size_t msg_size)
{
size_t needed_table_sz = (MACH_PORT_INDEX(name) + 1) * sizeof(mig_callback);
@@ -801,7 +777,7 @@
return errno = mach_port_move_member(mach_task_self(), name, target_set);
}
-INTERNAL_ABI kern_return_t
+kern_return_t
runtime_remove_mport(mach_port_t name)
{
mig_cb_table[MACH_PORT_INDEX(name)] = NULL;
@@ -809,31 +785,37 @@
return errno = mach_port_move_member(mach_task_self(), name, MACH_PORT_NULL);
}
-INTERNAL_ABI kern_return_t
+kern_return_t
launchd_mport_make_send(mach_port_t name)
{
return errno = mach_port_insert_right(mach_task_self(), name, name, MACH_MSG_TYPE_MAKE_SEND);
}
-INTERNAL_ABI kern_return_t
+kern_return_t
+launchd_mport_copy_send(mach_port_t name)
+{
+ return errno = mach_port_insert_right(mach_task_self(), name, name, MACH_MSG_TYPE_COPY_SEND);
+}
+
+kern_return_t
launchd_mport_close_recv(mach_port_t name)
{
return errno = mach_port_mod_refs(mach_task_self(), name, MACH_PORT_RIGHT_RECEIVE, -1);
}
-INTERNAL_ABI kern_return_t
+kern_return_t
launchd_mport_create_recv(mach_port_t *name)
{
return errno = mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, name);
}
-INTERNAL_ABI kern_return_t
+kern_return_t
launchd_mport_deallocate(mach_port_t name)
{
return errno = mach_port_deallocate(mach_task_self(), name);
}
-INTERNAL_ABI int
+int
kevent_bulk_mod(struct kevent *kev, size_t kev_cnt)
{
size_t i;
@@ -845,7 +827,7 @@
return kevent(mainkq, kev, kev_cnt, kev, kev_cnt, NULL);
}
-INTERNAL_ABI int
+int
kevent_mod(uintptr_t ident, short filter, u_short flags, u_int fflags, intptr_t data, void *udata)
{
struct kevent kev;
@@ -901,7 +883,7 @@
} else if (notify_server_routine(Request)) {
return notify_server(Request, Reply);
} else {
- return exc_server(Request, Reply);
+ return mach_exc_server(Request, Reply);
}
}
@@ -1000,12 +982,65 @@
}
-INTERNAL_ABI struct ldcred *
+struct ldcred *
runtime_get_caller_creds(void)
{
return &ldc;
}
+mach_msg_return_t
+launchd_exc_runtime_once(mach_port_t port, mach_msg_size_t rcv_msg_size, mach_msg_size_t send_msg_size, mig_reply_error_t *bufRequest, mig_reply_error_t *bufReply, mach_msg_timeout_t to)
+{
+ mach_msg_return_t mr = ~MACH_MSG_SUCCESS;
+ mach_msg_option_t rcv_options = MACH_RCV_MSG |
+ MACH_RCV_TIMEOUT |
+ MACH_RCV_TRAILER_ELEMENTS(MACH_RCV_TRAILER_AUDIT) |
+ MACH_RCV_TRAILER_TYPE(MACH_MSG_TRAILER_FORMAT_0) ;
+
+ do {
+ mr = mach_msg(&bufRequest->Head, rcv_options, 0, rcv_msg_size, port, to, MACH_PORT_NULL);
+ switch( mr ) {
+ case MACH_RCV_TIMED_OUT :
+ runtime_syslog(LOG_NOTICE, "Message queue is empty.");
+ break;
+ case MACH_RCV_TOO_LARGE :
+ runtime_syslog(LOG_NOTICE, "Message is larger than %u bytes.", rcv_msg_size);
+ break;
+ default :
+ launchd_assumes(mr == MACH_MSG_SUCCESS);
+ }
+
+ if( mr == MACH_MSG_SUCCESS ) {
+ if( !launchd_assumes(mach_exc_server(&bufRequest->Head, &bufReply->Head) == TRUE) ) {
+ runtime_syslog(LOG_WARNING, "Exception server routine failed.");
+ break;
+ }
+
+ mach_msg_return_t smr = ~MACH_MSG_SUCCESS;
+ mach_msg_option_t send_options = MACH_SEND_MSG |
+ MACH_SEND_TIMEOUT ;
+
+ launchd_assumes(bufReply->Head.msgh_size <= send_msg_size);
+ smr = mach_msg(&bufReply->Head, send_options, bufReply->Head.msgh_size, 0, MACH_PORT_NULL, to + 100, MACH_PORT_NULL);
+ switch( smr ) {
+ case MACH_SEND_TIMED_OUT :
+ runtime_syslog(LOG_WARNING, "Timed out while trying to send reply to exception message.");
+ break;
+ case MACH_SEND_INVALID_DEST :
+ runtime_syslog(LOG_WARNING, "Tried sending a message to a port that we don't possess a send right to.");
+ break;
+ default :
+ if( !launchd_assumes(smr == MACH_MSG_SUCCESS) ) {
+ runtime_syslog(LOG_WARNING, "Couldn't deliver exception reply: 0x%x", smr);
+ }
+ break;
+ }
+ }
+ } while( 0 );
+
+ return mr;
+}
+
void
launchd_runtime2(mach_msg_size_t msg_size, mig_reply_error_t *bufRequest, mig_reply_error_t *bufReply)
{
@@ -1026,7 +1061,7 @@
to = MACH_MSG_TIMEOUT_NONE;
if (unlikely(msg_size != max_msg_size)) {
- /* The buffer isn't big enougth to receive messages anymore... */
+ /* The buffer isn't big enough to receive messages anymore... */
tmp_options &= ~MACH_RCV_MSG;
options &= ~MACH_RCV_MSG;
if (!(tmp_options & MACH_SEND_MSG)) {
@@ -1143,7 +1178,7 @@
}
}
-INTERNAL_ABI int
+int
runtime_close(int fd)
{
int i;
@@ -1165,7 +1200,7 @@
return close(fd);
}
-INTERNAL_ABI void
+void
runtime_closelog(void)
{
runtime_log_push();
@@ -1176,7 +1211,7 @@
}
}
-INTERNAL_ABI int
+int
runtime_fsync(int fd)
{
#if 0
@@ -1190,7 +1225,7 @@
#endif
}
-INTERNAL_ABI int
+int
runtime_setlogmask(int maskpri)
{
internal_mask_pri = maskpri;
@@ -1198,7 +1233,7 @@
return internal_mask_pri;
}
-INTERNAL_ABI void
+void
runtime_syslog(int pri, const char *message, ...)
{
bool log_to_console = pri & LOG_CONSOLE;
@@ -1217,7 +1252,7 @@
va_end(ap);
}
-INTERNAL_ABI void
+void
runtime_vsyslog(struct runtime_syslog_attr *attr, bool echo_to_console, const char *message, va_list args)
{
int saved_errno = errno;
@@ -1357,7 +1392,7 @@
mig_deallocate(outval, outvalCnt);
}
-INTERNAL_ABI void
+void
runtime_log_push(void)
{
static pthread_mutex_t ourlock = PTHREAD_MUTEX_INITIALIZER;
@@ -1411,7 +1446,7 @@
}
}
-INTERNAL_ABI kern_return_t
+kern_return_t
runtime_log_forward(uid_t forward_uid, gid_t forward_gid, vm_offset_t inval, mach_msg_type_number_t invalCnt)
{
struct logmsg_s *lm, *lm_walk;
@@ -1447,7 +1482,7 @@
return 0;
}
-INTERNAL_ABI kern_return_t
+kern_return_t
runtime_log_drain(mach_port_t srp, vm_offset_t *outval, mach_msg_type_number_t *outvalCnt)
{
launchd_assumes(drain_reply_port == 0);
@@ -1471,7 +1506,7 @@
* In the long run, reference counting should completely automate when a
* process can and should exit.
*/
-INTERNAL_ABI void
+void
runtime_add_ref(void)
{
if (!pid1_magic) {
@@ -1480,7 +1515,7 @@
runtime_busy_cnt++;
}
-INTERNAL_ABI void
+void
runtime_del_ref(void)
{
if (!pid1_magic) {
@@ -1489,7 +1524,7 @@
runtime_busy_cnt--;
}
-INTERNAL_ABI void
+void
runtime_add_weak_ref(void)
{
if (!pid1_magic) {
@@ -1498,7 +1533,7 @@
runtime_standby_cnt++;
}
-INTERNAL_ABI void
+void
runtime_del_weak_ref(void)
{
if (!pid1_magic) {
@@ -1508,40 +1543,40 @@
}
kern_return_t
-catch_exception_raise(mach_port_t exception_port __attribute__((unused)), mach_port_t thread, mach_port_t task,
- exception_type_t exception, exception_data_t code, mach_msg_type_number_t codeCnt)
+catch_mach_exception_raise(mach_port_t exception_port __attribute__((unused)), mach_port_t thread, mach_port_t task,
+ exception_type_t exception, mach_exception_data_t code, mach_msg_type_number_t codeCnt)
{
pid_t p4t = -1;
launchd_assumes(pid_for_task(task, &p4t) == 0);
-
+
runtime_syslog(LOG_NOTICE, "%s(): PID: %u thread: 0x%x type: 0x%x code: %p codeCnt: 0x%x",
__func__, p4t, thread, exception, code, codeCnt);
-
+
launchd_assumes(launchd_mport_deallocate(thread) == KERN_SUCCESS);
launchd_assumes(launchd_mport_deallocate(task) == KERN_SUCCESS);
- return 0;
+ return KERN_SUCCESS;
}
kern_return_t
-catch_exception_raise_state(mach_port_t exception_port __attribute__((unused)),
- exception_type_t exception, const exception_data_t code, mach_msg_type_number_t codeCnt,
+catch_mach_exception_raise_state(mach_port_t exception_port __attribute__((unused)),
+ exception_type_t exception, const mach_exception_data_t code, mach_msg_type_number_t codeCnt,
int *flavor, const thread_state_t old_state, mach_msg_type_number_t old_stateCnt,
thread_state_t new_state, mach_msg_type_number_t *new_stateCnt)
{
runtime_syslog(LOG_NOTICE, "%s(): type: 0x%x code: %p codeCnt: 0x%x flavor: %p old_state: %p old_stateCnt: 0x%x new_state: %p new_stateCnt: %p",
__func__, exception, code, codeCnt, flavor, old_state, old_stateCnt, new_state, new_stateCnt);
-
+
memcpy(new_state, old_state, old_stateCnt * sizeof(old_state[0]));
*new_stateCnt = old_stateCnt;
- return 0;
+ return KERN_SUCCESS;
}
kern_return_t
-catch_exception_raise_state_identity(mach_port_t exception_port __attribute__((unused)), mach_port_t thread, mach_port_t task,
- exception_type_t exception, exception_data_t code, mach_msg_type_number_t codeCnt,
+catch_mach_exception_raise_state_identity(mach_port_t exception_port __attribute__((unused)), mach_port_t thread, mach_port_t task,
+ exception_type_t exception, mach_exception_data_t code, mach_msg_type_number_t codeCnt,
int *flavor, thread_state_t old_state, mach_msg_type_number_t old_stateCnt,
thread_state_t new_state, mach_msg_type_number_t *new_stateCnt)
{
@@ -1551,17 +1586,17 @@
runtime_syslog(LOG_NOTICE, "%s(): PID: %u thread: 0x%x type: 0x%x code: %p codeCnt: 0x%x flavor: %p old_state: %p old_stateCnt: 0x%x new_state: %p new_stateCnt: %p",
__func__, p4t, thread, exception, code, codeCnt, flavor, old_state, old_stateCnt, new_state, new_stateCnt);
-
+
memcpy(new_state, old_state, old_stateCnt * sizeof(old_state[0]));
*new_stateCnt = old_stateCnt;
launchd_assumes(launchd_mport_deallocate(thread) == KERN_SUCCESS);
launchd_assumes(launchd_mport_deallocate(task) == KERN_SUCCESS);
- return 0;
+ return KERN_SUCCESS;
}
-INTERNAL_ABI void
+void
launchd_log_vm_stats(void)
{
static struct vm_statistics orig_stats;
@@ -1609,7 +1644,7 @@
launchd_mport_deallocate(mhs);
}
-INTERNAL_ABI int64_t
+int64_t
runtime_get_wall_time(void)
{
struct timeval tv;
@@ -1624,25 +1659,25 @@
return r;
}
-INTERNAL_ABI uint64_t
+uint64_t
runtime_get_opaque_time(void)
{
return mach_absolute_time();
}
-INTERNAL_ABI uint64_t
+uint64_t
runtime_get_opaque_time_of_event(void)
{
return time_of_mach_msg_return;
}
-INTERNAL_ABI uint64_t
+uint64_t
runtime_get_nanoseconds_since(uint64_t o)
{
return runtime_opaque_time_to_nano(runtime_get_opaque_time_of_event() - o);
}
-INTERNAL_ABI uint64_t
+uint64_t
runtime_opaque_time_to_nano(uint64_t o)
{
#if defined(__i386__) || defined(__x86_64__)
@@ -1698,4 +1733,8 @@
if( stat("/var/db/.launchd_disable_sudden_termination", &sb) == 0 ) {
g_force_old_kill_path = true;
}
+
+ if( !pid1_magic && stat("/var/db/.launchd_flat_per_user_namespace", &sb) == 0 ) {
+ g_flat_mach_namespace = true;
+ }
}
Modified: trunk/launchd/src/launchd_runtime.h
===================================================================
--- trunk/launchd/src/launchd_runtime.h 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/launchd_runtime.h 2008-11-22 22:31:20 UTC (rev 23754)
@@ -71,14 +71,6 @@
#endif
-#ifndef INTERNAL_ABI
-#ifdef __i386__
-#define INTERNAL_ABI __attribute__((regparm(3)))
-#else
-#define INTERNAL_ABI
-#endif
-#endif
-
#define likely(x) __builtin_expect((bool)(x), true)
#define unlikely(x) __builtin_expect((bool)(x), false)
@@ -100,51 +92,54 @@
#define launchd_assert(e) if (__builtin_constant_p(e)) { char __compile_time_assert__[e ? 1 : -1] __attribute__((unused)); } else if (!launchd_assumes(e)) { abort(); }
-INTERNAL_ABI void _log_launchd_bug(const char *rcs_rev, const char *path, unsigned int line, const char *test);
+void _log_launchd_bug(const char *rcs_rev, const char *path, unsigned int line, const char *test);
-typedef INTERNAL_ABI void (*kq_callback)(void *, struct kevent *);
+typedef void (*kq_callback)(void *, struct kevent *);
typedef boolean_t (*mig_callback)(mach_msg_header_t *, mach_msg_header_t *);
-typedef INTERNAL_ABI void (*timeout_callback)(void);
+typedef void (*timeout_callback)(void);
extern bool pid1_magic;
extern bool low_level_debug;
extern char g_username[128];
-INTERNAL_ABI mach_port_t runtime_get_kernel_port(void);
+mach_port_t runtime_get_kernel_port(void);
+extern boolean_t launchd_internal_demux(mach_msg_header_t *Request, mach_msg_header_t *Reply);
-INTERNAL_ABI void runtime_add_ref(void);
-INTERNAL_ABI void runtime_del_ref(void);
-INTERNAL_ABI void runtime_add_weak_ref(void);
-INTERNAL_ABI void runtime_del_weak_ref(void);
+void runtime_add_ref(void);
+void runtime_del_ref(void);
+void runtime_add_weak_ref(void);
+void runtime_del_weak_ref(void);
-INTERNAL_ABI void launchd_runtime_init(void);
-INTERNAL_ABI void launchd_runtime_init2(void);
-INTERNAL_ABI void launchd_runtime(void) __attribute__((noreturn));
+void launchd_runtime_init(void);
+void launchd_runtime_init2(void);
+void launchd_runtime(void) __attribute__((noreturn));
-INTERNAL_ABI void launchd_log_vm_stats(void);
+void launchd_log_vm_stats(void);
-INTERNAL_ABI int runtime_close(int fd);
-INTERNAL_ABI int runtime_fsync(int fd);
+int runtime_close(int fd);
+int runtime_fsync(int fd);
#define RUNTIME_ADVISABLE_IDLE_TIMEOUT 30
-INTERNAL_ABI void runtime_set_timeout(timeout_callback to_cb, unsigned int sec);
-INTERNAL_ABI kern_return_t runtime_add_mport(mach_port_t name, mig_callback demux, mach_msg_size_t msg_size);
-INTERNAL_ABI kern_return_t runtime_remove_mport(mach_port_t name);
-INTERNAL_ABI struct ldcred *runtime_get_caller_creds(void);
+void runtime_set_timeout(timeout_callback to_cb, unsigned int sec);
+kern_return_t runtime_add_mport(mach_port_t name, mig_callback demux, mach_msg_size_t msg_size);
+kern_return_t runtime_remove_mport(mach_port_t name);
+struct ldcred *runtime_get_caller_creds(void);
-INTERNAL_ABI const char *signal_to_C_name(unsigned int sig);
-INTERNAL_ABI const char *reboot_flags_to_C_names(unsigned int flags);
-INTERNAL_ABI const char *proc_flags_to_C_names(unsigned int flags);
+const char *signal_to_C_name(unsigned int sig);
+const char *reboot_flags_to_C_names(unsigned int flags);
+const char *proc_flags_to_C_names(unsigned int flags);
-INTERNAL_ABI int kevent_bulk_mod(struct kevent *kev, size_t kev_cnt);
-INTERNAL_ABI int kevent_mod(uintptr_t ident, short filter, u_short flags, u_int fflags, intptr_t data, void *udata);
+int kevent_bulk_mod(struct kevent *kev, size_t kev_cnt);
+int kevent_mod(uintptr_t ident, short filter, u_short flags, u_int fflags, intptr_t data, void *udata);
-INTERNAL_ABI pid_t runtime_fork(mach_port_t bsport);
+pid_t runtime_fork(mach_port_t bsport);
-INTERNAL_ABI kern_return_t runtime_log_forward(uid_t forward_uid, gid_t forward_gid, vm_offset_t inval, mach_msg_type_number_t invalCnt);
-INTERNAL_ABI kern_return_t runtime_log_drain(mach_port_t srp, vm_offset_t *outval, mach_msg_type_number_t *outvalCnt);
+mach_msg_return_t launchd_exc_runtime_once(mach_port_t port, mach_msg_size_t rcv_msg_size, mach_msg_size_t send_msg_size, mig_reply_error_t *bufRequest, mig_reply_error_t *bufReply, mach_msg_timeout_t to);
+kern_return_t runtime_log_forward(uid_t forward_uid, gid_t forward_gid, vm_offset_t inval, mach_msg_type_number_t invalCnt);
+kern_return_t runtime_log_drain(mach_port_t srp, vm_offset_t *outval, mach_msg_type_number_t *outvalCnt);
+
#define LOG_APPLEONLY 0x4141504c /* AAPL in hex */
#define LOG_CONSOLE (1 << 31)
@@ -158,25 +153,26 @@
pid_t about_pid;
};
-INTERNAL_ABI int runtime_setlogmask(int maskpri);
-INTERNAL_ABI void runtime_closelog(void);
-INTERNAL_ABI void runtime_syslog(int pri, const char *message, ...) __attribute__((format(printf, 2, 3)));
-INTERNAL_ABI void runtime_vsyslog(struct runtime_syslog_attr *attr, bool log_to_console, const char *message, va_list args) __attribute__((format(printf, 3, 0)));
-INTERNAL_ABI void runtime_log_push(void);
+int runtime_setlogmask(int maskpri);
+void runtime_closelog(void);
+void runtime_syslog(int pri, const char *message, ...) __attribute__((format(printf, 2, 3)));
+void runtime_vsyslog(struct runtime_syslog_attr *attr, bool log_to_console, const char *message, va_list args) __attribute__((format(printf, 3, 0)));
+void runtime_log_push(void);
-INTERNAL_ABI int64_t runtime_get_wall_time(void) __attribute__((warn_unused_result));
-INTERNAL_ABI uint64_t runtime_get_opaque_time(void) __attribute__((warn_unused_result));
-INTERNAL_ABI uint64_t runtime_get_opaque_time_of_event(void) __attribute__((pure, warn_unused_result));
-INTERNAL_ABI uint64_t runtime_opaque_time_to_nano(uint64_t o) __attribute__((const, warn_unused_result));
-INTERNAL_ABI uint64_t runtime_get_nanoseconds_since(uint64_t o) __attribute__((pure, warn_unused_result));
+int64_t runtime_get_wall_time(void) __attribute__((warn_unused_result));
+uint64_t runtime_get_opaque_time(void) __attribute__((warn_unused_result));
+uint64_t runtime_get_opaque_time_of_event(void) __attribute__((pure, warn_unused_result));
+uint64_t runtime_opaque_time_to_nano(uint64_t o) __attribute__((const, warn_unused_result));
+uint64_t runtime_get_nanoseconds_since(uint64_t o) __attribute__((pure, warn_unused_result));
-INTERNAL_ABI kern_return_t launchd_set_bport(mach_port_t name);
-INTERNAL_ABI kern_return_t launchd_get_bport(mach_port_t *name);
-INTERNAL_ABI kern_return_t launchd_mport_notify_req(mach_port_t name, mach_msg_id_t which);
-INTERNAL_ABI kern_return_t launchd_mport_notify_cancel(mach_port_t name, mach_msg_id_t which);
-INTERNAL_ABI kern_return_t launchd_mport_create_recv(mach_port_t *name);
-INTERNAL_ABI kern_return_t launchd_mport_deallocate(mach_port_t name);
-INTERNAL_ABI kern_return_t launchd_mport_make_send(mach_port_t name);
-INTERNAL_ABI kern_return_t launchd_mport_close_recv(mach_port_t name);
+kern_return_t launchd_set_bport(mach_port_t name);
+kern_return_t launchd_get_bport(mach_port_t *name);
+kern_return_t launchd_mport_notify_req(mach_port_t name, mach_msg_id_t which);
+kern_return_t launchd_mport_notify_cancel(mach_port_t name, mach_msg_id_t which);
+kern_return_t launchd_mport_create_recv(mach_port_t *name);
+kern_return_t launchd_mport_deallocate(mach_port_t name);
+kern_return_t launchd_mport_make_send(mach_port_t name);
+kern_return_t launchd_mport_copy_send(mach_port_t name);
+kern_return_t launchd_mport_close_recv(mach_port_t name);
#endif
Modified: trunk/launchd/src/launchd_unix_ipc.c
===================================================================
--- trunk/launchd/src/launchd_unix_ipc.c 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/launchd_unix_ipc.c 2008-11-22 22:31:20 UTC (rev 23754)
@@ -62,7 +62,7 @@
static void ipc_readmsg2(launch_data_t data, const char *cmd, void *context);
static void ipc_readmsg(launch_data_t msg, void *context);
-INTERNAL_ABI static void ipc_listen_callback(void *obj __attribute__((unused)), struct kevent *kev);
+static void ipc_listen_callback(void *obj __attribute__((unused)), struct kevent *kev);
static kq_callback kqipc_listen_callback = ipc_listen_callback;
@@ -87,7 +87,7 @@
}
}
-INTERNAL_ABI void
+void
ipc_server_init(void)
{
struct sockaddr_un sun;
@@ -177,7 +177,7 @@
}
}
-INTERNAL_ABI void
+void
ipc_open(int fd, job_t j)
{
struct conncb *c = calloc(1, sizeof(struct conncb));
@@ -191,7 +191,7 @@
kevent_mod(fd, EVFILT_READ, EV_ADD, 0, 0, &c->kqconn_callback);
}
-INTERNAL_ABI void
+void
ipc_listen_callback(void *obj __attribute__((unused)), struct kevent *kev)
{
struct sockaddr_un sun;
@@ -205,7 +205,7 @@
ipc_open(cfd, NULL);
}
-INTERNAL_ABI void
+void
ipc_callback(void *obj, struct kevent *kev)
{
struct conncb *c = obj;
@@ -239,7 +239,7 @@
setenv(key, launch_data_get_string(obj), 1);
}
-INTERNAL_ABI void
+void
ipc_close_all_with_job(job_t j)
{
struct conncb *ci, *cin;
@@ -251,7 +251,7 @@
}
}
-INTERNAL_ABI void
+void
ipc_close_fds(launch_data_t o)
{
size_t i;
@@ -274,7 +274,7 @@
}
}
-INTERNAL_ABI void
+void
ipc_revoke_fds(launch_data_t o)
{
size_t i;
@@ -425,7 +425,7 @@
return runtime_close(fd);
}
-INTERNAL_ABI void
+void
ipc_close(struct conncb *c)
{
LIST_REMOVE(c, sle);
Modified: trunk/launchd/src/launchd_unix_ipc.h
===================================================================
--- trunk/launchd/src/launchd_unix_ipc.h 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/launchd_unix_ipc.h 2008-11-22 22:31:20 UTC (rev 23754)
@@ -35,12 +35,12 @@
extern char *sockpath;
-INTERNAL_ABI void ipc_open(int fd, job_t j);
-INTERNAL_ABI void ipc_close_all_with_job(job_t j);
-INTERNAL_ABI void ipc_close(struct conncb *c);
-INTERNAL_ABI void ipc_callback(void *, struct kevent *);
-INTERNAL_ABI void ipc_revoke_fds(launch_data_t o);
-INTERNAL_ABI void ipc_close_fds(launch_data_t o);
-INTERNAL_ABI void ipc_server_init(void);
+void ipc_open(int fd, job_t j);
+void ipc_close_all_with_job(job_t j);
+void ipc_close(struct conncb *c);
+void ipc_callback(void *, struct kevent *);
+void ipc_revoke_fds(launch_data_t o);
+void ipc_close_fds(launch_data_t o);
+void ipc_server_init(void);
#endif
Modified: trunk/launchd/src/libbootstrap.c
===================================================================
--- trunk/launchd/src/libbootstrap.c 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/libbootstrap.c 2008-11-22 22:31:20 UTC (rev 23754)
@@ -82,12 +82,6 @@
}
kern_return_t
-bootstrap_set_policy(mach_port_t bp, pid_t target_pid, uint64_t flags, const char *target_service)
-{
- return vproc_mig_set_service_policy(bp, target_pid, flags, target_service ? (char *)target_service : "");
-}
-
-kern_return_t
bootstrap_register(mach_port_t bp, name_t service_name, mach_port_t sp)
{
return bootstrap_register2(bp, service_name, sp, 0);
@@ -154,12 +148,22 @@
return kr;
}
- kr = vproc_mig_look_up2(puc, (char *)service_name, sp, &au_tok, 0, 0);
- mach_port_deallocate(mach_task_self(), puc);
+ if( !service_name ) {
+ *sp = puc;
+ } else {
+ kr = vproc_mig_look_up2(puc, (char *)service_name, sp, &au_tok, 0, 0);
+ mach_port_deallocate(mach_task_self(), puc);
+ }
return kr;
}
+kern_return_t
+bootstrap_lookup_children(mach_port_t bp, mach_port_array_t *children, name_array_t *names, bootstrap_property_array_t *properties, mach_msg_type_number_t *n_children)
+{
+ mach_msg_type_number_t junk = 0;
+ return vproc_mig_lookup_children(bp, children, &junk, names, n_children, properties, &junk);
+}
kern_return_t
bootstrap_look_up(mach_port_t bp, const name_t service_name, mach_port_t *sp)
@@ -211,16 +215,13 @@
mach_port_deallocate(mach_task_self(), puc);
out:
- if (!per_pid_lookup && kr == 0 && prev_sp == 0
- && mach_port_mod_refs(mach_task_self(), *sp, MACH_PORT_RIGHT_SEND, 1) == 0) {
+ if (!per_pid_lookup && kr == 0 && prev_sp == 0 && mach_port_mod_refs(mach_task_self(), *sp, MACH_PORT_RIGHT_SEND, 1) == 0) {
/* We're going to hold on to a send right as a MRU cache */
prev_bp = bp;
prev_sp = *sp;
strlcpy(prev_name, service_name, sizeof(name_t));
}
- pthread_mutex_unlock(&bslu2_lock);
-
if ((kr == 0) && (flags & BOOTSTRAP_PRIVILEGED_SERVER) && !privileged_server_okay) {
uid_t server_euid;
@@ -243,7 +244,9 @@
}
}
-
+ /* If performance becomes a problem, we should restructure this. */
+ pthread_mutex_unlock(&bslu2_lock);
+
return kr;
}
Modified: trunk/launchd/src/libvproc.c
===================================================================
--- trunk/launchd/src/libvproc.c 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/libvproc.c 2008-11-22 22:31:20 UTC (rev 23754)
@@ -157,6 +157,22 @@
return likely(vproc_shmem) ? vproc_shmem->vp_shmem_standby_timeout : 0;
}
+bool
+_vproc_pid_is_managed(pid_t p)
+{
+ boolean_t result = false;
+ vproc_mig_pid_is_managed(bootstrap_port, p, &result);
+
+ return result;
+}
+
+kern_return_t
+_vproc_transaction_count_for_pid(pid_t p, int32_t *count, bool *condemned)
+{
+ boolean_t _condemned = false;
+ return vproc_mig_transaction_count_for_pid(bootstrap_port, p, count, (boolean_t *)condemned ? : &_condemned);
+}
+
void
_vproc_transaction_try_exit(int status)
{
@@ -356,25 +372,21 @@
return (vproc_err_t)_vprocmgr_move_subset_to_user;
}
- if (is_bkgd || target_user) {
- mach_port_t puc = 0, rootbs = get_root_bootstrap_port();
-
- if (vproc_mig_lookup_per_user_context(rootbs, target_user, &puc) != 0) {
- return (vproc_err_t)_vprocmgr_move_subset_to_user;
- }
-
- if (is_bkgd) {
- task_set_bootstrap_port(mach_task_self(), puc);
- mach_port_deallocate(mach_task_self(), bootstrap_port);
- bootstrap_port = puc;
- } else {
- kr = vproc_mig_move_subset(puc, bootstrap_port, (char *)session_type);
- mach_port_deallocate(mach_task_self(), puc);
- }
+ mach_port_t puc = 0, rootbs = get_root_bootstrap_port();
+
+ if (vproc_mig_lookup_per_user_context(rootbs, target_user, &puc) != 0) {
+ return (vproc_err_t)_vprocmgr_move_subset_to_user;
+ }
+
+ if( is_bkgd ) {
+ task_set_bootstrap_port(mach_task_self(), puc);
+ mach_port_deallocate(mach_task_self(), bootstrap_port);
+ bootstrap_port = puc;
} else {
- kr = _vprocmgr_init(session_type) ? 1 : 0;
+ kr = vproc_mig_move_subset(puc, bootstrap_port, (char *)session_type);
+ mach_port_deallocate(mach_task_self(), puc);
}
-
+
cached_pid = -1;
if (kr) {
@@ -402,6 +414,20 @@
return !issetugid() ? _vproc_post_fork_ping() : NULL;
}
+vproc_err_t
+_vprocmgr_detach_from_console(uint32_t flags __attribute__((unused)))
+{
+ mach_port_t new_bsport = MACH_PORT_NULL;
+ if( vproc_mig_detach_from_console(bootstrap_port, &new_bsport) != KERN_SUCCESS ) {
+ return (vproc_err_t)_vprocmgr_detach_from_console;
+ }
+
+ task_set_bootstrap_port(mach_task_self(), new_bsport);
+ mach_port_deallocate(mach_task_self(), bootstrap_port);
+ bootstrap_port = new_bsport;
+
+ return !issetugid() ? _vproc_post_fork_ping() : NULL;
+}
pid_t
_spawn_via_launchd(const char *label, const char *const *argv, const struct spawn_via_launchd_attr *spawn_attrs, int struct_version)
@@ -822,12 +848,13 @@
}
vproc_err_t
-_vproc_kickstart_by_label(const char *label, pid_t *out_pid, mach_port_t *out_port_name, mach_port_t *out_obsrvr_port)
+_vproc_kickstart_by_label(const char *label, pid_t *out_pid, mach_port_t *out_port_name, mach_port_t *out_obsrvr_port, vproc_flags_t flags)
{
mach_port_t junk = MACH_PORT_NULL;
mach_port_t junk2 = MACH_PORT_NULL;
- if( vproc_mig_kickstart(bootstrap_port, (char *)label, out_pid, out_port_name ?: &junk, out_obsrvr_port ?: &junk2) == 0 ) {
+ kern_return_t kr = vproc_mig_kickstart(bootstrap_port, (char *)label, out_pid, out_port_name ?: &junk, out_obsrvr_port ?: &junk2, flags);
+ if( kr == KERN_SUCCESS ) {
if( !out_port_name ) {
mach_port_mod_refs(mach_task_self(), junk, MACH_PORT_RIGHT_SEND, -1);
}
Modified: trunk/launchd/src/protocol_job_reply.defs
===================================================================
--- trunk/launchd/src/protocol_job_reply.defs 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/protocol_job_reply.defs 2008-11-22 22:31:20 UTC (rev 23754)
@@ -66,8 +66,6 @@
skip; /* swap_integer */
-skip; /* set_service_policy */
-
skip; /* log */
skip; /* lookup_per_user_context */
@@ -79,4 +77,4 @@
simpleroutine job_mig_log_drain_reply(
__r_port : mach_port_move_send_once_t;
__result : kern_return_t, RetCode;
- __outval : pointer_t);
+ __outval : pointer_t);
Modified: trunk/launchd/src/protocol_vproc.defs
===================================================================
--- trunk/launchd/src/protocol_vproc.defs 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/protocol_vproc.defs 2008-11-22 22:31:20 UTC (rev 23754)
@@ -35,7 +35,6 @@
type mach_port_move_send_array_t = array[] of mach_port_move_send_t
ctype: mach_port_array_t;
-
userprefix vproc_mig_;
serverprefix job_mig_;
@@ -132,12 +131,6 @@
__inval : int64_t;
out __outval : int64_t);
-routine set_service_policy(
- __bs_port : job_t;
- __target_pid : pid_t;
- __flags : uint64_t;
- __service : name_t);
-
routine log(
__bs_port : job_t;
__pri : integer_t;
@@ -175,9 +168,32 @@
__label : name_t;
out __pid : pid_t;
out __name_port : mach_port_t;
-out __obsrvr_port : mach_port_make_send_t);
+out __obsrvr_port : mach_port_make_send_t;
+ __flags : natural_t);
routine embedded_wait(
__bs_port : job_t;
__label : name_t;
out __waitval : integer_t);
+
+routine lookup_children(
+ __bs_port : job_t;
+out __child_ports : mach_port_move_send_array_t, dealloc;
+out __child_names : name_array_t, dealloc;
+out __child_properties : bootstrap_property_array_t, dealloc);
+
+routine detach_from_console(
+ __bs_port : job_t;
+out __new_bs_port : mach_port_make_send_t);
+
+routine transaction_count_for_pid(
+ __bs_port : job_t;
+ __pid : pid_t;
+out __cnt : integer_t;
+out __condemend : boolean_t);
+
+routine pid_is_managed(
+ __bs_port : job_t;
+ __pid : pid_t;
+out __managed : boolean_t);
+
Modified: trunk/launchd/src/vproc_priv.h
===================================================================
--- trunk/launchd/src/vproc_priv.h 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd/src/vproc_priv.h 2008-11-22 22:31:20 UTC (rev 23754)
@@ -61,6 +61,10 @@
VPROC_GSK_WEIRD_BOOTSTRAP,
} vproc_gsk_t;
+typedef unsigned int vproc_flags_t;
+/* For _vproc_kickstart_by_label() -- instructs launchd to kickstart the job to stall before exec(2). */
+#define VPROCFLAG_STALL_JOB_EXEC 1 << 1
+
vproc_err_t vproc_swap_integer(vproc_t vp, vproc_gsk_t key, int64_t *inval, int64_t *outval);
vproc_err_t vproc_swap_complex(vproc_t vp, vproc_gsk_t key, launch_data_t inval, launch_data_t *outval);
@@ -72,7 +76,7 @@
vproc_err_t _vprocmgr_log_drain(vproc_t vp, pthread_mutex_t *optional_mutex_around_callback, _vprocmgr_log_drain_callback_t func);
vproc_err_t _vproc_send_signal_by_label(const char *label, int sig);
-vproc_err_t _vproc_kickstart_by_label(const char *label, pid_t *out_pid, mach_port_t *out_port_name, mach_port_t *out_obsrvr_port);
+vproc_err_t _vproc_kickstart_by_label(const char *label, pid_t *out_pid, mach_port_t *out_port_name, mach_port_t *out_obsrvr_port, vproc_flags_t flags);
vproc_err_t _vproc_wait_by_label(const char *label, int *out_wstatus);
void _vproc_log(int pri, const char *msg, ...) __attribute__((format(printf, 2, 3)));
@@ -86,16 +90,19 @@
#define VPROCMGR_SESSION_SYSTEM "System"
vproc_err_t _vprocmgr_move_subset_to_user(uid_t target_user, const char *session_type);
+vproc_err_t _vprocmgr_detach_from_console(vproc_flags_t flags);
-void _vproc_standby_begin(void) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_NA);
-void _vproc_standby_end(void) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_NA);
-size_t _vproc_standby_count(void) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_NA);
-size_t _vproc_standby_timeout(void) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_NA);
+void _vproc_standby_begin(void) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_NA);
+void _vproc_standby_end(void) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_NA);
+size_t _vproc_standby_count(void) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_NA);
+size_t _vproc_standby_timeout(void) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_NA);
-void _vproc_transaction_try_exit(int status) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_NA);
-void _vproc_transaction_begin(void) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_NA);
-void _vproc_transaction_end(void) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_NA);
-size_t _vproc_transaction_count(void) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_NA);
+kern_return_t _vproc_transaction_count_for_pid(pid_t p, int32_t *count, bool *condemned) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_NA);
+bool _vproc_pid_is_managed(pid_t p) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_NA);
+void _vproc_transaction_try_exit(int status) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_NA);
+void _vproc_transaction_begin(void) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_NA);
+void _vproc_transaction_end(void) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_NA);
+size_t _vproc_transaction_count(void) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_NA);
#pragma GCC visibility pop
Modified: trunk/launchd.xcodeproj/project.pbxproj
===================================================================
--- trunk/launchd.xcodeproj/project.pbxproj 2008-11-10 21:30:04 UTC (rev 23753)
+++ trunk/launchd.xcodeproj/project.pbxproj 2008-11-22 22:31:20 UTC (rev 23754)
@@ -52,7 +52,7 @@
/* Begin PBXBuildFile section */
4B9EDCA20EAFC77E00A78496 /* DiskArbitration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B9EDCA10EAFC77E00A78496 /* DiskArbitration.framework */; };
721FBEBC0EA7AE2F0057462B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 721FBEBB0EA7AE2F0057462B /* Security.framework */; };
- 726055EC0EA7EC2400D65FE7 /* exc.defs in Sources */ = {isa = PBXBuildFile; fileRef = FC36291F0E9349410054F1A3 /* exc.defs */; settings = {ATTRIBUTES = (Server, ); }; };
+ 726055EC0EA7EC2400D65FE7 /* mach_exc.defs in Sources */ = {isa = PBXBuildFile; fileRef = FC36291F0E9349410054F1A3 /* mach_exc.defs */; settings = {ATTRIBUTES = (Server, ); }; };
726056090EA7FCF200D65FE7 /* launchd_ktrace.c in Sources */ = {isa = PBXBuildFile; fileRef = 72FDB15D0EA7D7B200B2AC84 /* launchd_ktrace.c */; };
72FDB15F0EA7D7B200B2AC84 /* launchd_ktrace.c in Sources */ = {isa = PBXBuildFile; fileRef = 72FDB15D0EA7D7B200B2AC84 /* launchd_ktrace.c */; };
72FDB1C00EA7E21C00B2AC84 /* protocol_job_forward.defs in Sources */ = {isa = PBXBuildFile; fileRef = 72FDB1BF0EA7E21C00B2AC84 /* protocol_job_forward.defs */; };
@@ -298,7 +298,7 @@
FC36283E0E93463C0054F1A3 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; };
FC36290C0E93475F0054F1A3 /* notify.defs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.mig; name = notify.defs; path = /usr/include/mach/notify.defs; sourceTree = "<absolute>"; };
FC3629160E9348390054F1A3 /* protocol_job_reply.defs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.mig; name = protocol_job_reply.defs; path = launchd/src/protocol_job_reply.defs; sourceTree = "<group>"; };
- FC36291F0E9349410054F1A3 /* exc.defs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.mig; name = exc.defs; path = /usr/include/mach/exc.defs; sourceTree = "<absolute>"; };
+ FC36291F0E9349410054F1A3 /* mach_exc.defs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.mig; name = mach_exc.defs; path = /usr/include/mach/mach_exc.defs; sourceTree = "<absolute>"; };
FC36292C0E934AA40054F1A3 /* libbsm.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libbsm.dylib; path = /usr/lib/libbsm.dylib; sourceTree = "<absolute>"; };
FC59A0540E8C884700D41150 /* launchd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = launchd; sourceTree = BUILT_PRODUCTS_DIR; };
FC59A0600E8C885100D41150 /* liblaunch.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = liblaunch.a; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -419,7 +419,7 @@
FC3629160E9348390054F1A3 /* protocol_job_reply.defs */,
FC3627DF0E9344BF0054F1A3 /* protocol_vproc.defs */,
FC59A0BD0E8C8A2A00D41150 /* launchd_internal.defs */,
- FC36291F0E9349410054F1A3 /* exc.defs */,
+ FC36291F0E9349410054F1A3 /* mach_exc.defs */,
FC36290C0E93475F0054F1A3 /* notify.defs */,
);
name = MIG;
@@ -837,7 +837,7 @@
FC59A0BF0E8C8A2A00D41150 /* launchd_internal.defs in Sources */,
FC3627E10E9344BF0054F1A3 /* protocol_vproc.defs in Sources */,
FC3629170E9348390054F1A3 /* protocol_job_reply.defs in Sources */,
- 726055EC0EA7EC2400D65FE7 /* exc.defs in Sources */,
+ 726055EC0EA7EC2400D65FE7 /* mach_exc.defs in Sources */,
FC36290D0E93475F0054F1A3 /* notify.defs in Sources */,
FC59A0C50E8C8A4700D41150 /* launchd.c in Sources */,
FC59A0BA0E8C8A1F00D41150 /* launchd_runtime.c in Sources */,
@@ -998,6 +998,7 @@
INSTALL_PATH = /sbin;
PREBINDING = NO;
PRODUCT_NAME = launchd;
+ STRIP_STYLE = debugging;
ZERO_LINK = NO;
};
name = Release;
@@ -1014,6 +1015,7 @@
COPY_PHASE_STRIP = YES;
CURRENT_PROJECT_VERSION = "$(RC_ProjectSourceVersion)";
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ INSTALLHDRS_SCRIPT_PHASE = YES;
INSTALL_PATH = /usr/local/lib/system;
OTHER_CFLAGS = (
"-D__MigTypeCheck=1",
@@ -1039,6 +1041,7 @@
INSTALL_PATH = /bin;
PREBINDING = NO;
PRODUCT_NAME = launchctl;
+ STRIP_STYLE = debugging;
ZERO_LINK = NO;
};
name = Release;
@@ -1075,6 +1078,7 @@
INSTALL_PATH = /sbin;
PREBINDING = NO;
PRODUCT_NAME = SystemStarter;
+ STRIP_STYLE = debugging;
ZERO_LINK = NO;
};
name = Release;
@@ -1089,6 +1093,7 @@
INSTALL_PATH = /usr/libexec;
PREBINDING = NO;
PRODUCT_NAME = launchproxy;
+ STRIP_STYLE = debugging;
ZERO_LINK = NO;
};
name = Release;
@@ -1103,6 +1108,7 @@
INSTALL_PATH = /bin;
PREBINDING = NO;
PRODUCT_NAME = wait4path;
+ STRIP_STYLE = debugging;
ZERO_LINK = NO;
};
name = Release;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/launchd-changes/attachments/20081122/655dcf1a/attachment-0001.html>
More information about the launchd-changes
mailing list