I am using lsof together with objdump -T executable to determine what
systemd functions are imported by essential XFCE4 executables.
For instance, this is for /usr/lib/gvfs/gvfs-udisks2-volume-monitor:
0000000000000000 DF *UND* 0000000000000000 LIBSYSTEMD_209
sd_session_get_seat
0000000000000000 DF *UND* 0000000000000000
udisks_object_get_type
0000000000000000 DF *UND* 0000000000000000
g_dbus_interface_get_type
0000000000000000 DF *UND* 0000000000000000 g_object_set_data
0000000000000000 DF *UND* 0000000000000000 g_value_set_variant
0000000000000000 DF *UND* 0000000000000000 g_volume_get_drive
0000000000000000 DF *UND* 0000000000000000
g_drive_is_media_check_automatic
0000000000000000 DF *UND* 0000000000000000
udisks_block_get_id_label
0000000000000000 DF *UND* 0000000000000000 g_error_new_literal
0000000000000000 DF *UND* 0000000000000000
udisks_filesystem_get_mount_points
0000000000000000 DF *UND* 0000000000000000
g_timeout_source_new_seconds
0000000000000000 DF *UND* 0000000000000000
udisks_object_info_get_description
0000000000000000 DF *UND* 0000000000000000
g_io_channel_set_flags
0000000000000000 DF *UND* 0000000000000000 g_variant_iter_free
0000000000000000 DF *UND* 0000000000000000
g_drive_get_identifier
0000000000000000 DF *UND* 0000000000000000
g_main_context_ref_thread_default
0000000000000000 DF *UND* 0000000000000000
udisks_client_peek_object
0000000000000000 DF *UND* 0000000000000000 g_type_class_peek
0000000000000000 DF *UND* 0000000000000000 g_variant_lookup
0000000000000000 DF *UND* 0000000000000000 g_strdup_vprintf
0000000000000000 DF *UND* 0000000000000000
udisks_block_dup_id_uuid
0000000000000000 DF *UND* 0000000000000000
g_unix_mount_get_fs_type
0000000000000000 DF *UND* 0000000000000000
g_unix_mount_point_get_options
0000000000000000 DF *UND* 0000000000000000
g_signal_accumulator_true_handled
0000000000000000 DF *UND* 0000000000000000
g_mount_get_symbolic_icon
0000000000000000 DF *UND* 0000000000000000 g_quark_try_string
0000000000000000 DF *UND* 0000000000000000
udisks_drive_call_eject_finish
0000000000000000 DF *UND* 0000000000000000 LIBSYSTEMD_209
sd_pid_get_session
0000000000000000 DF *UND* 0000000000000000 g_file_get_type
The exercise is to search for these functions in systemd's source code
and create a .so file with only the required functions. The functions
can also be reimplemented, but that takes more time than simply
stripping the required functions.
Edward