diff --git a/include/glib/glibconfig.h b/include/glib/glibconfig.h
new file mode 100644
index 0000000..6ae9f0f
--- /dev/null
+++ b/include/glib/glibconfig.h
@@ -0,0 +1,119 @@
+#ifndef __G_LIBCONFIG_H__
+#define __G_LIBCONFIG_H__
+
+/* Genode includes */
+#include
+
+/* Libc includes */
+//#include
+#include
+
+/* Glib includes */
+#include
+
+G_BEGIN_DECLS
+
+#define G_MINFLOAT FLT_MIN
+#define G_MAXFLOAT FLT_MAX
+#define G_MINDOUBLE DBL_MIN
+#define G_MAXDOUBLE DBL_MAX
+#define G_MINSHORT SHRT_MIN
+#define G_MAXSHORT SHRT_MAX
+#define G_MAXUSHORT USHRT_MAX
+#define G_MININT INT_MIN
+#define G_MAXINT INT_MAX
+#define G_MAXUINT UINT_MAX
+#define G_MINLONG LONG_MIN
+#define G_MAXLONG LONG_MAX
+#define G_MAXULONG ULONG_MAX
+
+typedef genode_int8_t gint8;
+typedef genode_uint8_t guint8;
+typedef genode_int16_t gint16;
+typedef genode_uint16_t guint16;
+typedef genode_int32_t gint32;
+typedef genode_uint32_t guint32;
+typedef genode_int64_t gint64;
+typedef genode_uint64_t guint64;
+
+#define G_MAXSIZE G_MAXUINT64
+#define G_MINSSIZE G_MININT64
+#define G_MAXSSIZE G_MAXINT64
+
+typedef unsigned long gsize;
+typedef long gssize;
+typedef long goffset;
+#define G_MINOFFSET G_MININT64
+#define G_MAXOFFSET G_MAXINT64
+
+#define G_GOFFSET_MODIFIER G_GINT64_MODIFIER
+#define G_GOFFSET_FORMAT G_GINT64_FORMAT
+#define G_GOFFSET_CONSTANT(val) G_GINT64_CONSTANT(val)
+
+#define GLIB_SIZEOF_VOID_P 8
+#define GLIB_SIZEOF_LONG 8
+#define GLIB_SIZEOF_SIZE_T 8
+
+#define GPOINTER_TO_INT(p) ((gint64) (p))
+#define GPOINTER_TO_UINT(p) ((guint64) (p))
+
+#define GINT_TO_POINTER(i) ((gpointer) (i))
+#define GUINT_TO_POINTER(u) ((gpointer) (u))
+
+#define G_GSIZE_MODIFIER ""
+#define G_GSSIZE_MODIFIER ""
+#define G_GSIZE_FORMAT "u"
+#define G_GSSIZE_FORMAT "i"
+#define G_GINT16_FORMAT "i"
+#define G_GUINT16_FORMAT "u"
+#define G_GINT32_FORMAT "i"
+#define G_GUINT32_FORMAT "u"
+#define G_GINT64_FORMAT "i"
+#define G_GUINT64_FORMAT "u"
+#define G_BYTE_ORDER G_LITTLE_ENDIAN
+
+#define GLIB_SYSDEF_POLLIN =1
+#define GLIB_SYSDEF_POLLOUT =4
+#define GLIB_SYSDEF_POLLPRI =2
+#define GLIB_SYSDEF_POLLHUP =16
+#define GLIB_SYSDEF_POLLERR =8
+#define GLIB_SYSDEF_POLLNVAL =32
+
+typedef char GPid;
+
+#define G_GINT64_CONSTANT(val) (G_GNUC_EXTENSION (val##LL))
+#define G_GUINT64_CONSTANT(val) (G_GNUC_EXTENSION (val##ULL))
+
+#define G_VA_COPY va_copy
+
+#define GINT16_TO_LE(val) ((gint16) (val))
+#define GUINT16_TO_LE(val) ((guint16) (val))
+#define GINT16_TO_BE(val) ((gint16) GUINT16_SWAP_LE_BE (val))
+#define GUINT16_TO_BE(val) (GUINT16_SWAP_LE_BE (val))
+#define GINT32_TO_LE(val) ((gint32) (val))
+#define GUINT32_TO_LE(val) ((guint32) (val))
+#define GINT32_TO_BE(val) ((gint32) GUINT32_SWAP_LE_BE (val))
+#define GUINT32_TO_BE(val) (GUINT32_SWAP_LE_BE (val))
+#define GINT64_TO_LE(val) ((gint64) (val))
+#define GUINT64_TO_LE(val) ((guint64) (val))
+#define GINT64_TO_BE(val) ((gint64) GUINT64_SWAP_LE_BE (val))
+#define GUINT64_TO_BE(val) (GUINT64_SWAP_LE_BE (val))
+#define GLONG_TO_LE(val) ((glong) GINT32_TO_LE (val))
+#define GULONG_TO_LE(val) ((gulong) GUINT32_TO_LE (val))
+#define GLONG_TO_BE(val) ((glong) GINT32_TO_BE (val))
+#define GULONG_TO_BE(val) ((gulong) GUINT32_TO_BE (val))
+#define GINT_TO_LE(val) ((gint) GINT32_TO_LE (val))
+#define GUINT_TO_LE(val) ((guint) GUINT32_TO_LE (val))
+#define GINT_TO_BE(val) ((gint) GINT32_TO_BE (val))
+#define GUINT_TO_BE(val) ((guint) GUINT32_TO_BE (val))
+#define GSIZE_TO_LE(val) ((gsize) GUINT32_TO_LE (val))
+#define GSSIZE_TO_LE(val) ((gssize) GINT32_TO_LE (val))
+#define GSIZE_TO_BE(val) ((gsize) GUINT32_TO_BE (val))
+#define GSSIZE_TO_BE(val) ((gssize) GINT32_TO_BE (val))
+#define G_BYTE_ORDER G_LITTLE_ENDIAN
+
+#define G_GINT64_MODIFIER "I64"
+
+G_END_DECLS
+
+#endif /* GLIBCONFIG_H */
diff --git a/lib/import/import-glib.mk b/lib/import/import-glib.mk
new file mode 100644
index 0000000..f9cfe3b
--- /dev/null
+++ b/lib/import/import-glib.mk
@@ -0,0 +1,2 @@
+GLIB_PORT_DIR := $(call select_from_ports,glib)
+INC_DIR += $(GLIB_PORT_DIR)/include/glib $(call select_from_repositories,include/glib)
diff --git a/lib/mk/glib.mk b/lib/mk/glib.mk
new file mode 100644
index 0000000..7c0b5a8
--- /dev/null
+++ b/lib/mk/glib.mk
@@ -0,0 +1,60 @@
+SHARED_LIB =1
+
+GLIB_PORT_DIR = $(call select_from_ports,glib)
+
+GLIB_SRC_DIR = $(GLIB_PORT_DIR)/src/lib/glib/glib
+
+LIBS += libc libiconv
+
+CC_DEF += \
+ -DGLIB_MAJOR_VERSION=2 -DGLIB_MINOR_VERSION=52 -DGLIB_MICRO_VERSION=2 \
+ -DGLIB_BINARY_AGE=5302 -DGLIB_INTERFACE_AGE=0 \
+ -DGLIB_COMPILATION \
+ -DG_OS_UNIX \
+ -DSUPPORT_UCP \
+ -DSUPPORT_UTF \
+ -DSUPPORT_UTF8 \
+ -DNEWLINE=-1 \
+ -DMATCH_LIMIT=10000000 \
+ -DMATCH_LIMIT_RECURSION=8192 \
+ -DMAX_NAME_SIZE=32 \
+ -DMAX_NAME_COUNT=10000 \
+ -DMAX_DUPLENGTH=30000 \
+ -DLINK_SIZE=2 \
+ -DPOSIX_MALLOC_THRESHOLD=10 \
+ -DPCRE_STATIC \
+ -UBSR_ANYCRLF \
+ -UEBCDIC \
+
+CC_WARN += -Wno-unused-function -Wno-deprecated-declarations
+
+INC_DIR += \
+ $(REP_DIR)/src/lib/glib \
+ $(GLIB_SRC_DIR) \
+ $(REP_DIR)/include/glib \
+ $(GLIB_PORT_DIR)/src/lib/glib \
+ $(GLIB_PORT_DIR)/include/glib \
+
+DEPRECATED_SRC_C := $(notdir $(wildcard $(GLIB_SRC_DIR)/deprecated/*.c))
+
+PCRE_SRC := $(notdir $(wildcard $(GLIB_SRC_DIR)/pcre/*.c))
+
+LIBCHARSET_SRC := $(notdir $(wildcard $(GLIB_SRC_DIR)/libcharset/*.c))
+
+GLIB_SRC := $(notdir $(wildcard $(GLIB_SRC_DIR)/*.c))
+
+GLIB_FILTER := \
+ goption.c guuid.c win_iconv.c \
+ $(notdir $(wildcard $(GLIB_SRC_DIR)/*win32*.c)) \
+ $(notdir $(wildcard $(GLIB_SRC_DIR)/*win64*.c))
+
+SRC_C = \
+ $(DEPRECATED_SRC_C) \
+ $(PCRE_SRC) \
+ $(LIBCHARSET_SRC) \
+ $(filter-out $(GLIB_FILTER),$(GLIB_SRC)) \
+
+vpath %.c $(GLIB_SRC_DIR)
+vpath %.c $(GLIB_SRC_DIR)/deprecated
+vpath %.c $(GLIB_SRC_DIR)/pcre
+vpath %.c $(GLIB_SRC_DIR)/libcharset
diff --git a/lib/symbols/glib b/lib/symbols/glib
new file mode 100644
index 0000000..dc91c2e
--- /dev/null
+++ b/lib/symbols/glib
@@ -0,0 +1,1631 @@
+g_access T
+g_allocator_free T
+g_allocator_new T
+g_array_append_vals T
+g_array_free T
+g_array_get_element_size T
+g_array_insert_vals T
+g_array_new T
+g_array_prepend_vals T
+g_array_ref T
+g_array_remove_index T
+g_array_remove_index_fast T
+g_array_remove_range T
+g_array_set_clear_func T
+g_array_set_size T
+g_array_sized_new T
+g_array_sort T
+g_array_sort_with_data T
+g_array_unref T
+g_ascii_digit_value T
+g_ascii_dtostr T
+g_ascii_formatd T
+g_ascii_strcasecmp T
+g_ascii_strdown T
+g_ascii_strncasecmp T
+g_ascii_strtod T
+g_ascii_strtoll T
+g_ascii_strtoull T
+g_ascii_strup T
+g_ascii_table D 8
+g_ascii_tolower T
+g_ascii_toupper T
+g_ascii_xdigit_value T
+g_assert_warning T
+g_assertion_message T
+g_assertion_message_cmpnum T
+g_assertion_message_cmpstr T
+g_assertion_message_error T
+g_assertion_message_expr T
+g_async_queue_length T
+g_async_queue_length_unlocked T
+g_async_queue_lock T
+g_async_queue_new T
+g_async_queue_new_full T
+g_async_queue_pop T
+g_async_queue_pop_unlocked T
+g_async_queue_push T
+g_async_queue_push_front T
+g_async_queue_push_front_unlocked T
+g_async_queue_push_sorted T
+g_async_queue_push_sorted_unlocked T
+g_async_queue_push_unlocked T
+g_async_queue_ref T
+g_async_queue_ref_unlocked T
+g_async_queue_remove T
+g_async_queue_remove_unlocked T
+g_async_queue_sort T
+g_async_queue_sort_unlocked T
+g_async_queue_timed_pop T
+g_async_queue_timed_pop_unlocked T
+g_async_queue_timeout_pop T
+g_async_queue_timeout_pop_unlocked T
+g_async_queue_try_pop T
+g_async_queue_try_pop_unlocked T
+g_async_queue_unlock T
+g_async_queue_unref T
+g_async_queue_unref_and_unlock T
+g_atexit T
+g_atomic_int_add T
+g_atomic_int_and T
+g_atomic_int_compare_and_exchange T
+g_atomic_int_dec_and_test T
+g_atomic_int_exchange_and_add T
+g_atomic_int_get T
+g_atomic_int_inc T
+g_atomic_int_or T
+g_atomic_int_set T
+g_atomic_int_xor T
+g_atomic_pointer_add T
+g_atomic_pointer_and T
+g_atomic_pointer_compare_and_exchange T
+g_atomic_pointer_get T
+g_atomic_pointer_or T
+g_atomic_pointer_set T
+g_atomic_pointer_xor T
+g_base64_decode T
+g_base64_decode_inplace T
+g_base64_decode_step T
+g_base64_encode T
+g_base64_encode_close T
+g_base64_encode_step T
+g_basename T
+g_bit_lock T
+g_bit_nth_lsf T
+g_bit_nth_msf T
+g_bit_storage T
+g_bit_trylock T
+g_bit_unlock T
+g_blow_chunks T
+g_bookmark_file_add_application T
+g_bookmark_file_add_group T
+g_bookmark_file_error_quark T
+g_bookmark_file_free T
+g_bookmark_file_get_added T
+g_bookmark_file_get_app_info T
+g_bookmark_file_get_applications T
+g_bookmark_file_get_description T
+g_bookmark_file_get_groups T
+g_bookmark_file_get_icon T
+g_bookmark_file_get_is_private T
+g_bookmark_file_get_mime_type T
+g_bookmark_file_get_modified T
+g_bookmark_file_get_size T
+g_bookmark_file_get_title T
+g_bookmark_file_get_uris T
+g_bookmark_file_get_visited T
+g_bookmark_file_has_application T
+g_bookmark_file_has_group T
+g_bookmark_file_has_item T
+g_bookmark_file_load_from_data T
+g_bookmark_file_load_from_data_dirs T
+g_bookmark_file_load_from_file T
+g_bookmark_file_move_item T
+g_bookmark_file_new T
+g_bookmark_file_remove_application T
+g_bookmark_file_remove_group T
+g_bookmark_file_remove_item T
+g_bookmark_file_set_added T
+g_bookmark_file_set_app_info T
+g_bookmark_file_set_description T
+g_bookmark_file_set_groups T
+g_bookmark_file_set_icon T
+g_bookmark_file_set_is_private T
+g_bookmark_file_set_mime_type T
+g_bookmark_file_set_modified T
+g_bookmark_file_set_title T
+g_bookmark_file_set_visited T
+g_bookmark_file_to_data T
+g_bookmark_file_to_file T
+g_build_filename T
+g_build_filenamev T
+g_build_path T
+g_build_pathv T
+g_byte_array_append T
+g_byte_array_free T
+g_byte_array_free_to_bytes T
+g_byte_array_new T
+g_byte_array_new_take T
+g_byte_array_prepend T
+g_byte_array_ref T
+g_byte_array_remove_index T
+g_byte_array_remove_index_fast T
+g_byte_array_remove_range T
+g_byte_array_set_size T
+g_byte_array_sized_new T
+g_byte_array_sort T
+g_byte_array_sort_with_data T
+g_byte_array_unref T
+g_bytes_compare T
+g_bytes_equal T
+g_bytes_get_data T
+g_bytes_get_size T
+g_bytes_hash T
+g_bytes_new T
+g_bytes_new_from_bytes T
+g_bytes_new_static T
+g_bytes_new_take T
+g_bytes_new_with_free_func T
+g_bytes_ref T
+g_bytes_unref T
+g_bytes_unref_to_array T
+g_bytes_unref_to_data T
+g_cache_destroy T
+g_cache_insert T
+g_cache_key_foreach T
+g_cache_new T
+g_cache_remove T
+g_cache_value_foreach T
+g_chdir T
+g_check_setuid T
+g_checksum_copy T
+g_checksum_free T
+g_checksum_get_digest T
+g_checksum_get_string T
+g_checksum_new T
+g_checksum_reset T
+g_checksum_type_get_length T
+g_checksum_update T
+g_child_watch_add T
+g_child_watch_add_full T
+g_child_watch_funcs D 48
+g_child_watch_source_new T
+g_chmod T
+g_clear_error T
+g_clear_pointer T
+g_close T
+g_completion_add_items T
+g_completion_clear_items T
+g_completion_complete T
+g_completion_complete_utf8 T
+g_completion_free T
+g_completion_new T
+g_completion_remove_items T
+g_completion_set_compare T
+g_compute_checksum_for_bytes T
+g_compute_checksum_for_data T
+g_compute_checksum_for_string T
+g_compute_hmac_for_bytes T
+g_compute_hmac_for_data T
+g_compute_hmac_for_string T
+g_cond_broadcast T
+g_cond_clear T
+g_cond_free T
+g_cond_init T
+g_cond_new T
+g_cond_signal T
+g_cond_timed_wait T
+g_cond_wait T
+g_cond_wait_until T
+g_convert T
+g_convert_error_quark T
+g_convert_with_fallback T
+g_convert_with_iconv T
+g_creat T
+g_datalist_clear T
+g_datalist_foreach T
+g_datalist_get_data T
+g_datalist_get_flags T
+g_datalist_id_dup_data T
+g_datalist_id_get_data T
+g_datalist_id_remove_no_notify T
+g_datalist_id_replace_data T
+g_datalist_id_set_data_full T
+g_datalist_init T
+g_datalist_set_flags T
+g_datalist_unset_flags T
+g_dataset_destroy T
+g_dataset_foreach T
+g_dataset_id_get_data T
+g_dataset_id_remove_no_notify T
+g_dataset_id_set_data_full T
+g_date_add_days T
+g_date_add_months T
+g_date_add_years T
+g_date_clamp T
+g_date_clear T
+g_date_compare T
+g_date_days_between T
+g_date_free T
+g_date_get_day T
+g_date_get_day_of_year T
+g_date_get_days_in_month T
+g_date_get_iso8601_week_of_year T
+g_date_get_julian T
+g_date_get_monday_week_of_year T
+g_date_get_monday_weeks_in_year T
+g_date_get_month T
+g_date_get_sunday_week_of_year T
+g_date_get_sunday_weeks_in_year T
+g_date_get_weekday T
+g_date_get_year T
+g_date_is_first_of_month T
+g_date_is_last_of_month T
+g_date_is_leap_year T
+g_date_new T
+g_date_new_dmy T
+g_date_new_julian T
+g_date_order T
+g_date_set_day T
+g_date_set_dmy T
+g_date_set_julian T
+g_date_set_month T
+g_date_set_parse T
+g_date_set_time T
+g_date_set_time_t T
+g_date_set_time_val T
+g_date_set_year T
+g_date_strftime T
+g_date_subtract_days T
+g_date_subtract_months T
+g_date_subtract_years T
+g_date_time_add T
+g_date_time_add_days T
+g_date_time_add_full T
+g_date_time_add_hours T
+g_date_time_add_minutes T
+g_date_time_add_months T
+g_date_time_add_seconds T
+g_date_time_add_weeks T
+g_date_time_add_years T
+g_date_time_compare T
+g_date_time_difference T
+g_date_time_equal T
+g_date_time_format T
+g_date_time_get_day_of_month T
+g_date_time_get_day_of_week T
+g_date_time_get_day_of_year T
+g_date_time_get_hour T
+g_date_time_get_microsecond T
+g_date_time_get_minute T
+g_date_time_get_month T
+g_date_time_get_second T
+g_date_time_get_seconds T
+g_date_time_get_timezone_abbreviation T
+g_date_time_get_utc_offset T
+g_date_time_get_week_numbering_year T
+g_date_time_get_week_of_year T
+g_date_time_get_year T
+g_date_time_get_ymd T
+g_date_time_hash T
+g_date_time_is_daylight_savings T
+g_date_time_new T
+g_date_time_new_from_timeval_local T
+g_date_time_new_from_timeval_utc T
+g_date_time_new_from_unix_local T
+g_date_time_new_from_unix_utc T
+g_date_time_new_local T
+g_date_time_new_now T
+g_date_time_new_now_local T
+g_date_time_new_now_utc T
+g_date_time_new_utc T
+g_date_time_ref T
+g_date_time_to_local T
+g_date_time_to_timeval T
+g_date_time_to_timezone T
+g_date_time_to_unix T
+g_date_time_to_utc T
+g_date_time_unref T
+g_date_to_struct_tm T
+g_date_valid T
+g_date_valid_day T
+g_date_valid_dmy T
+g_date_valid_julian T
+g_date_valid_month T
+g_date_valid_weekday T
+g_date_valid_year T
+g_dcgettext T
+g_dgettext T
+g_dir_close T
+g_dir_make_tmp T
+g_dir_new_from_dirp T
+g_dir_open T
+g_dir_open_with_errno T
+g_dir_read_name T
+g_dir_rewind T
+g_direct_equal T
+g_direct_hash T
+g_dngettext T
+g_double_equal T
+g_double_hash T
+g_dpgettext T
+g_dpgettext2 T
+g_environ_getenv T
+g_environ_setenv T
+g_environ_unsetenv T
+g_error_copy T
+g_error_free T
+g_error_matches T
+g_error_new T
+g_error_new_literal T
+g_error_new_valist T
+g_file_error_from_errno T
+g_file_error_quark T
+g_file_get_contents T
+g_file_open_tmp T
+g_file_read_link T
+g_file_set_contents T
+g_file_test T
+g_filename_display_basename T
+g_filename_display_name T
+g_filename_from_uri T
+g_filename_from_utf8 T
+g_filename_to_uri T
+g_filename_to_utf8 T
+g_find_program_in_path T
+g_fopen T
+g_format_size T
+g_format_size_for_display T
+g_format_size_full T
+g_fprintf T
+g_free T
+g_freopen T
+g_get_application_name T
+g_get_charset T
+g_get_codeset T
+g_get_current_dir T
+g_get_current_time T
+g_get_environ T
+g_get_filename_charsets T
+g_get_home_dir T
+g_get_host_name T
+g_get_language_names T
+g_get_locale_variants T
+g_get_monotonic_time T
+g_get_num_processors T
+g_get_prgname T
+g_get_real_name T
+g_get_real_time T
+g_get_system_config_dirs T
+g_get_system_data_dirs T
+g_get_tmp_dir T
+g_get_user_cache_dir T
+g_get_user_config_dir T
+g_get_user_data_dir T
+g_get_user_name T
+g_get_user_runtime_dir T
+g_get_user_special_dir T
+g_get_worker_context T
+g_getenv T
+g_hash_table_add T
+g_hash_table_contains T
+g_hash_table_destroy T
+g_hash_table_find T
+g_hash_table_foreach T
+g_hash_table_foreach_remove T
+g_hash_table_foreach_steal T
+g_hash_table_get_keys T
+g_hash_table_get_keys_as_array T
+g_hash_table_get_values T
+g_hash_table_insert T
+g_hash_table_iter_get_hash_table T
+g_hash_table_iter_init T
+g_hash_table_iter_next T
+g_hash_table_iter_remove T
+g_hash_table_iter_replace T
+g_hash_table_iter_steal T
+g_hash_table_lookup T
+g_hash_table_lookup_extended T
+g_hash_table_new T
+g_hash_table_new_full T
+g_hash_table_ref T
+g_hash_table_remove T
+g_hash_table_remove_all T
+g_hash_table_replace T
+g_hash_table_size T
+g_hash_table_steal T
+g_hash_table_steal_all T
+g_hash_table_unref T
+g_hmac_copy T
+g_hmac_get_digest T
+g_hmac_get_string T
+g_hmac_new T
+g_hmac_ref T
+g_hmac_unref T
+g_hmac_update T
+g_hook_alloc T
+g_hook_compare_ids T
+g_hook_destroy T
+g_hook_destroy_link T
+g_hook_find T
+g_hook_find_data T
+g_hook_find_func T
+g_hook_find_func_data T
+g_hook_first_valid T
+g_hook_free T
+g_hook_get T
+g_hook_insert_before T
+g_hook_insert_sorted T
+g_hook_list_clear T
+g_hook_list_init T
+g_hook_list_invoke T
+g_hook_list_invoke_check T
+g_hook_list_marshal T
+g_hook_list_marshal_check T
+g_hook_next_valid T
+g_hook_prepend T
+g_hook_ref T
+g_hook_unref T
+g_hostname_is_ascii_encoded T
+g_hostname_is_ip_address T
+g_hostname_is_non_ascii T
+g_hostname_to_ascii T
+g_hostname_to_unicode T
+g_iconv T
+g_iconv_close T
+g_iconv_open T
+g_idle_add T
+g_idle_add_full T
+g_idle_funcs D 48
+g_idle_remove_by_data T
+g_idle_source_new T
+g_int64_equal T
+g_int64_hash T
+g_int_equal T
+g_int_hash T
+g_intern_static_string T
+g_intern_string T
+g_io_add_watch T
+g_io_add_watch_full T
+g_io_channel_close T
+g_io_channel_error_from_errno T
+g_io_channel_error_quark T
+g_io_channel_flush T
+g_io_channel_get_buffer_condition T
+g_io_channel_get_buffer_size T
+g_io_channel_get_buffered T
+g_io_channel_get_close_on_unref T
+g_io_channel_get_encoding T
+g_io_channel_get_flags T
+g_io_channel_get_line_term T
+g_io_channel_init T
+g_io_channel_new_file T
+g_io_channel_read T
+g_io_channel_read_chars T
+g_io_channel_read_line T
+g_io_channel_read_line_string T
+g_io_channel_read_to_end T
+g_io_channel_read_unichar T
+g_io_channel_ref T
+g_io_channel_seek T
+g_io_channel_seek_position T
+g_io_channel_set_buffer_size T
+g_io_channel_set_buffered T
+g_io_channel_set_close_on_unref T
+g_io_channel_set_encoding T
+g_io_channel_set_flags T
+g_io_channel_set_line_term T
+g_io_channel_shutdown T
+g_io_channel_unix_get_fd T
+g_io_channel_unix_new T
+g_io_channel_unref T
+g_io_channel_write T
+g_io_channel_write_chars T
+g_io_channel_write_unichar T
+g_io_create_watch T
+g_io_watch_funcs D 48
+g_key_file_error_quark T
+g_key_file_free T
+g_key_file_get_boolean T
+g_key_file_get_boolean_list T
+g_key_file_get_comment T
+g_key_file_get_double T
+g_key_file_get_double_list T
+g_key_file_get_groups T
+g_key_file_get_int64 T
+g_key_file_get_integer T
+g_key_file_get_integer_list T
+g_key_file_get_keys T
+g_key_file_get_locale_string T
+g_key_file_get_locale_string_list T
+g_key_file_get_start_group T
+g_key_file_get_string T
+g_key_file_get_string_list T
+g_key_file_get_uint64 T
+g_key_file_get_value T
+g_key_file_has_group T
+g_key_file_has_key T
+g_key_file_load_from_bytes T
+g_key_file_load_from_data T
+g_key_file_load_from_data_dirs T
+g_key_file_load_from_dirs T
+g_key_file_load_from_file T
+g_key_file_new T
+g_key_file_ref T
+g_key_file_remove_comment T
+g_key_file_remove_group T
+g_key_file_remove_key T
+g_key_file_save_to_file T
+g_key_file_set_boolean T
+g_key_file_set_boolean_list T
+g_key_file_set_comment T
+g_key_file_set_double T
+g_key_file_set_double_list T
+g_key_file_set_int64 T
+g_key_file_set_integer T
+g_key_file_set_integer_list T
+g_key_file_set_list_separator T
+g_key_file_set_locale_string T
+g_key_file_set_locale_string_list T
+g_key_file_set_string T
+g_key_file_set_string_list T
+g_key_file_set_uint64 T
+g_key_file_set_value T
+g_key_file_to_data T
+g_key_file_unref T
+g_list_alloc T
+g_list_append T
+g_list_concat T
+g_list_copy T
+g_list_copy_deep T
+g_list_delete_link T
+g_list_find T
+g_list_find_custom T
+g_list_first T
+g_list_foreach T
+g_list_free T
+g_list_free_1 T
+g_list_free_full T
+g_list_index T
+g_list_insert T
+g_list_insert_before T
+g_list_insert_sorted T
+g_list_insert_sorted_with_data T
+g_list_last T
+g_list_length T
+g_list_nth T
+g_list_nth_data T
+g_list_nth_prev T
+g_list_pop_allocator T
+g_list_position T
+g_list_prepend T
+g_list_push_allocator T
+g_list_remove T
+g_list_remove_all T
+g_list_remove_link T
+g_list_reverse T
+g_list_sort T
+g_list_sort_with_data T
+g_listenv T
+g_locale_from_utf8 T
+g_locale_to_utf8 T
+g_log T
+g_log_always_fatal D 4
+g_log_default_handler T
+g_log_msg_prefix D 4
+g_log_remove_handler T
+g_log_set_always_fatal T
+g_log_set_default_handler T
+g_log_set_fatal_mask T
+g_log_set_handler T
+g_log_set_handler_full T
+g_log_set_writer_func T
+g_log_structured T
+g_log_structured_array T
+g_log_variant T
+g_log_writer_default T
+g_log_writer_format_fields T
+g_log_writer_is_journald T
+g_log_writer_journald T
+g_log_writer_standard_streams T
+g_log_writer_supports_color T
+g_logv T
+g_lstat T
+g_main_context_acquire T
+g_main_context_add_poll T
+g_main_context_check T
+g_main_context_default T
+g_main_context_dispatch T
+g_main_context_find_source_by_funcs_user_data T
+g_main_context_find_source_by_id T
+g_main_context_find_source_by_user_data T
+g_main_context_get_poll_func T
+g_main_context_get_thread_default T
+g_main_context_invoke T
+g_main_context_invoke_full T
+g_main_context_is_owner T
+g_main_context_iteration T
+g_main_context_new T
+g_main_context_new_with_next_id T
+g_main_context_pending T
+g_main_context_pop_thread_default T
+g_main_context_prepare T
+g_main_context_push_thread_default T
+g_main_context_query T
+g_main_context_ref T
+g_main_context_ref_thread_default T
+g_main_context_release T
+g_main_context_remove_poll T
+g_main_context_set_poll_func T
+g_main_context_unref T
+g_main_context_wait T
+g_main_context_wakeup T
+g_main_current_source T
+g_main_depth T
+g_main_loop_get_context T
+g_main_loop_is_running T
+g_main_loop_new T
+g_main_loop_quit T
+g_main_loop_ref T
+g_main_loop_run T
+g_main_loop_unref T
+g_malloc T
+g_malloc0 T
+g_malloc0_n T
+g_malloc_n T
+g_mapped_file_free T
+g_mapped_file_get_bytes T
+g_mapped_file_get_contents T
+g_mapped_file_get_length T
+g_mapped_file_new T
+g_mapped_file_new_from_fd T
+g_mapped_file_ref T
+g_mapped_file_unref T
+g_markup_collect_attributes T
+g_markup_error_quark T
+g_markup_escape_text T
+g_markup_parse_context_end_parse T
+g_markup_parse_context_free T
+g_markup_parse_context_get_element T
+g_markup_parse_context_get_element_stack T
+g_markup_parse_context_get_position T
+g_markup_parse_context_get_user_data T
+g_markup_parse_context_new T
+g_markup_parse_context_parse T
+g_markup_parse_context_pop T
+g_markup_parse_context_push T
+g_markup_parse_context_ref T
+g_markup_parse_context_unref T
+g_markup_printf_escaped T
+g_markup_vprintf_escaped T
+g_match_info_expand_references T
+g_match_info_fetch T
+g_match_info_fetch_all T
+g_match_info_fetch_named T
+g_match_info_fetch_named_pos T
+g_match_info_fetch_pos T
+g_match_info_free T
+g_match_info_get_match_count T
+g_match_info_get_regex T
+g_match_info_get_string T
+g_match_info_is_partial_match T
+g_match_info_matches T
+g_match_info_next T
+g_match_info_ref T
+g_match_info_unref T
+g_mem_chunk_alloc T
+g_mem_chunk_alloc0 T
+g_mem_chunk_clean T
+g_mem_chunk_destroy T
+g_mem_chunk_free T
+g_mem_chunk_info T
+g_mem_chunk_new T
+g_mem_chunk_print T
+g_mem_chunk_reset T
+g_mem_gc_friendly B 4
+g_mem_is_system_malloc T
+g_mem_profile T
+g_mem_set_vtable T
+g_memdup T
+g_mkdir T
+g_mkdir_with_parents T
+g_mkdtemp T
+g_mkdtemp_full T
+g_mkstemp T
+g_mkstemp_full T
+g_mutex_clear T
+g_mutex_free T
+g_mutex_init T
+g_mutex_lock T
+g_mutex_new T
+g_mutex_trylock T
+g_mutex_unlock T
+g_node_child_index T
+g_node_child_position T
+g_node_children_foreach T
+g_node_copy T
+g_node_copy_deep T
+g_node_depth T
+g_node_destroy T
+g_node_find T
+g_node_find_child T
+g_node_first_sibling T
+g_node_get_root T
+g_node_insert T
+g_node_insert_after T
+g_node_insert_before T
+g_node_is_ancestor T
+g_node_last_child T
+g_node_last_sibling T
+g_node_max_height T
+g_node_n_children T
+g_node_n_nodes T
+g_node_new T
+g_node_nth_child T
+g_node_pop_allocator T
+g_node_prepend T
+g_node_push_allocator T
+g_node_reverse_children T
+g_node_traverse T
+g_node_unlink T
+g_nullify_pointer T
+g_on_error_query T
+g_on_error_stack_trace T
+g_once_impl T
+g_once_init_enter T
+g_once_init_enter_impl T
+g_once_init_leave T
+g_open T
+g_parse_debug_string T
+g_path_get_basename T
+g_path_get_dirname T
+g_path_is_absolute T
+g_path_skip_root T
+g_pattern_match T
+g_pattern_match_simple T
+g_pattern_match_string T
+g_pattern_spec_equal T
+g_pattern_spec_free T
+g_pattern_spec_new T
+g_pointer_bit_lock T
+g_pointer_bit_trylock T
+g_pointer_bit_unlock T
+g_poll T
+g_prefix_error T
+g_print T
+g_printerr T
+g_printf T
+g_printf_string_upper_bound T
+g_private_get T
+g_private_new T
+g_private_replace T
+g_private_set T
+g_propagate_error T
+g_propagate_prefixed_error T
+g_ptr_array_add T
+g_ptr_array_foreach T
+g_ptr_array_free T
+g_ptr_array_insert T
+g_ptr_array_new T
+g_ptr_array_new_full T
+g_ptr_array_new_with_free_func T
+g_ptr_array_ref T
+g_ptr_array_remove T
+g_ptr_array_remove_fast T
+g_ptr_array_remove_index T
+g_ptr_array_remove_index_fast T
+g_ptr_array_remove_range T
+g_ptr_array_set_free_func T
+g_ptr_array_set_size T
+g_ptr_array_sized_new T
+g_ptr_array_sort T
+g_ptr_array_sort_with_data T
+g_ptr_array_unref T
+g_qsort_with_data T
+g_quark_from_static_string T
+g_quark_from_string T
+g_quark_init T
+g_quark_to_string T
+g_quark_try_string T
+g_queue_clear T
+g_queue_copy T
+g_queue_delete_link T
+g_queue_find T
+g_queue_find_custom T
+g_queue_foreach T
+g_queue_free T
+g_queue_free_full T
+g_queue_get_length T
+g_queue_index T
+g_queue_init T
+g_queue_insert_after T
+g_queue_insert_before T
+g_queue_insert_sorted T
+g_queue_is_empty T
+g_queue_link_index T
+g_queue_new T
+g_queue_peek_head T
+g_queue_peek_head_link T
+g_queue_peek_nth T
+g_queue_peek_nth_link T
+g_queue_peek_tail T
+g_queue_peek_tail_link T
+g_queue_pop_head T
+g_queue_pop_head_link T
+g_queue_pop_nth T
+g_queue_pop_nth_link T
+g_queue_pop_tail T
+g_queue_pop_tail_link T
+g_queue_push_head T
+g_queue_push_head_link T
+g_queue_push_nth T
+g_queue_push_nth_link T
+g_queue_push_tail T
+g_queue_push_tail_link T
+g_queue_remove T
+g_queue_remove_all T
+g_queue_reverse T
+g_queue_sort T
+g_queue_unlink T
+g_rand_copy T
+g_rand_double T
+g_rand_double_range T
+g_rand_free T
+g_rand_int T
+g_rand_int_range T
+g_rand_new T
+g_rand_new_with_seed T
+g_rand_new_with_seed_array T
+g_rand_set_seed T
+g_rand_set_seed_array T
+g_random_double T
+g_random_double_range T
+g_random_int T
+g_random_int_range T
+g_random_set_seed T
+g_realloc T
+g_realloc_n T
+g_rec_mutex_clear T
+g_rec_mutex_init T
+g_rec_mutex_lock T
+g_rec_mutex_trylock T
+g_rec_mutex_unlock T
+g_regex_check_replacement T
+g_regex_error_quark T
+g_regex_escape_nul T
+g_regex_escape_string T
+g_regex_get_capture_count T
+g_regex_get_compile_flags T
+g_regex_get_has_cr_or_lf T
+g_regex_get_match_flags T
+g_regex_get_max_backref T
+g_regex_get_max_lookbehind T
+g_regex_get_pattern T
+g_regex_get_string_number T
+g_regex_match T
+g_regex_match_all T
+g_regex_match_all_full T
+g_regex_match_full T
+g_regex_match_simple T
+g_regex_new T
+g_regex_ref T
+g_regex_replace T
+g_regex_replace_eval T
+g_regex_replace_literal T
+g_regex_split T
+g_regex_split_full T
+g_regex_split_simple T
+g_regex_unref T
+g_relation_count T
+g_relation_delete T
+g_relation_destroy T
+g_relation_exists T
+g_relation_index T
+g_relation_insert T
+g_relation_new T
+g_relation_print T
+g_relation_select T
+g_reload_user_special_dirs_cache T
+g_remove T
+g_rename T
+g_return_if_fail_warning T
+g_rmdir T
+g_rw_lock_clear T
+g_rw_lock_init T
+g_rw_lock_reader_lock T
+g_rw_lock_reader_trylock T
+g_rw_lock_reader_unlock T
+g_rw_lock_writer_lock T
+g_rw_lock_writer_trylock T
+g_rw_lock_writer_unlock T
+g_scanner_cur_line T
+g_scanner_cur_position T
+g_scanner_cur_token T
+g_scanner_cur_value T
+g_scanner_destroy T
+g_scanner_eof T
+g_scanner_error T
+g_scanner_get_next_token T
+g_scanner_input_file T
+g_scanner_input_text T
+g_scanner_lookup_symbol T
+g_scanner_new T
+g_scanner_peek_next_token T
+g_scanner_scope_add_symbol T
+g_scanner_scope_foreach_symbol T
+g_scanner_scope_lookup_symbol T
+g_scanner_scope_remove_symbol T
+g_scanner_set_scope T
+g_scanner_sync_file_offset T
+g_scanner_unexp_token T
+g_scanner_warn T
+g_sequence_append T
+g_sequence_foreach T
+g_sequence_foreach_range T
+g_sequence_free T
+g_sequence_get T
+g_sequence_get_begin_iter T
+g_sequence_get_end_iter T
+g_sequence_get_iter_at_pos T
+g_sequence_get_length T
+g_sequence_insert_before T
+g_sequence_insert_sorted T
+g_sequence_insert_sorted_iter T
+g_sequence_is_empty T
+g_sequence_iter_compare T
+g_sequence_iter_get_position T
+g_sequence_iter_get_sequence T
+g_sequence_iter_is_begin T
+g_sequence_iter_is_end T
+g_sequence_iter_move T
+g_sequence_iter_next T
+g_sequence_iter_prev T
+g_sequence_lookup T
+g_sequence_lookup_iter T
+g_sequence_move T
+g_sequence_move_range T
+g_sequence_new T
+g_sequence_prepend T
+g_sequence_range_get_midpoint T
+g_sequence_remove T
+g_sequence_remove_range T
+g_sequence_search T
+g_sequence_search_iter T
+g_sequence_set T
+g_sequence_sort T
+g_sequence_sort_changed T
+g_sequence_sort_changed_iter T
+g_sequence_sort_iter T
+g_sequence_swap T
+g_set_application_name T
+g_set_error T
+g_set_error_literal T
+g_set_prgname T
+g_set_print_handler T
+g_set_printerr_handler T
+g_setenv T
+g_shell_error_quark T
+g_shell_parse_argv T
+g_shell_quote T
+g_shell_unquote T
+g_slice_alloc T
+g_slice_alloc0 T
+g_slice_copy T
+g_slice_free1 T
+g_slice_free_chain_with_offset T
+g_slice_get_config T
+g_slice_get_config_state T
+g_slice_set_config T
+g_slist_alloc T
+g_slist_append T
+g_slist_concat T
+g_slist_copy T
+g_slist_copy_deep T
+g_slist_delete_link T
+g_slist_find T
+g_slist_find_custom T
+g_slist_foreach T
+g_slist_free T
+g_slist_free_1 T
+g_slist_free_full T
+g_slist_index T
+g_slist_insert T
+g_slist_insert_before T
+g_slist_insert_sorted T
+g_slist_insert_sorted_with_data T
+g_slist_last T
+g_slist_length T
+g_slist_nth T
+g_slist_nth_data T
+g_slist_pop_allocator T
+g_slist_position T
+g_slist_prepend T
+g_slist_push_allocator T
+g_slist_remove T
+g_slist_remove_all T
+g_slist_remove_link T
+g_slist_reverse T
+g_slist_sort T
+g_slist_sort_with_data T
+g_snprintf T
+g_source_add_child_source T
+g_source_add_poll T
+g_source_add_unix_fd T
+g_source_attach T
+g_source_destroy T
+g_source_get_can_recurse T
+g_source_get_context T
+g_source_get_current_time T
+g_source_get_id T
+g_source_get_name T
+g_source_get_priority T
+g_source_get_ready_time T
+g_source_get_time T
+g_source_is_destroyed T
+g_source_modify_unix_fd T
+g_source_new T
+g_source_query_unix_fd T
+g_source_ref T
+g_source_remove T
+g_source_remove_by_funcs_user_data T
+g_source_remove_by_user_data T
+g_source_remove_child_source T
+g_source_remove_poll T
+g_source_remove_unix_fd T
+g_source_set_callback T
+g_source_set_callback_indirect T
+g_source_set_can_recurse T
+g_source_set_funcs T
+g_source_set_name T
+g_source_set_name_by_id T
+g_source_set_priority T
+g_source_set_ready_time T
+g_source_unref T
+g_spaced_primes_closest T
+g_spawn_async T
+g_spawn_async_with_pipes T
+g_spawn_check_exit_status T
+g_spawn_close_pid T
+g_spawn_command_line_async T
+g_spawn_command_line_sync T
+g_spawn_error_quark T
+g_spawn_exit_error_quark T
+g_spawn_sync T
+g_sprintf T
+g_stat T
+g_static_mutex_free T
+g_static_mutex_get_mutex_impl T
+g_static_mutex_init T
+g_static_private_free T
+g_static_private_get T
+g_static_private_init T
+g_static_private_set T
+g_static_rec_mutex_free T
+g_static_rec_mutex_init T
+g_static_rec_mutex_lock T
+g_static_rec_mutex_lock_full T
+g_static_rec_mutex_trylock T
+g_static_rec_mutex_unlock T
+g_static_rec_mutex_unlock_full T
+g_static_rw_lock_free T
+g_static_rw_lock_init T
+g_static_rw_lock_reader_lock T
+g_static_rw_lock_reader_trylock T
+g_static_rw_lock_reader_unlock T
+g_static_rw_lock_writer_lock T
+g_static_rw_lock_writer_trylock T
+g_static_rw_lock_writer_unlock T
+g_stpcpy T
+g_str_equal T
+g_str_has_prefix T
+g_str_has_suffix T
+g_str_hash T
+g_str_is_ascii T
+g_str_match_string T
+g_str_to_ascii T
+g_str_tokenize_and_fold T
+g_strcanon T
+g_strcasecmp T
+g_strchomp T
+g_strchug T
+g_strcmp0 T
+g_strcompress T
+g_strconcat T
+g_strdelimit T
+g_strdown T
+g_strdup T
+g_strdup_printf T
+g_strdup_vprintf T
+g_strdupv T
+g_strerror T
+g_strescape T
+g_strfreev T
+g_string_append T
+g_string_append_c T
+g_string_append_len T
+g_string_append_printf T
+g_string_append_unichar T
+g_string_append_uri_escaped T
+g_string_append_vprintf T
+g_string_ascii_down T
+g_string_ascii_up T
+g_string_assign T
+g_string_chunk_clear T
+g_string_chunk_free T
+g_string_chunk_insert T
+g_string_chunk_insert_const T
+g_string_chunk_insert_len T
+g_string_chunk_new T
+g_string_down T
+g_string_equal T
+g_string_erase T
+g_string_free T
+g_string_free_to_bytes T
+g_string_hash T
+g_string_insert T
+g_string_insert_c T
+g_string_insert_len T
+g_string_insert_unichar T
+g_string_new T
+g_string_new_len T
+g_string_overwrite T
+g_string_overwrite_len T
+g_string_prepend T
+g_string_prepend_c T
+g_string_prepend_len T
+g_string_prepend_unichar T
+g_string_printf T
+g_string_set_size T
+g_string_sized_new T
+g_string_truncate T
+g_string_up T
+g_string_vprintf T
+g_strip_context T
+g_strjoin T
+g_strjoinv T
+g_strlcat T
+g_strlcpy T
+g_strncasecmp T
+g_strndup T
+g_strnfill T
+g_strreverse T
+g_strrstr T
+g_strrstr_len T
+g_strsignal T
+g_strsplit T
+g_strsplit_set T
+g_strstr_len T
+g_strtod T
+g_strup T
+g_strv_contains T
+g_strv_length T
+g_system_thread_exit T
+g_system_thread_free T
+g_system_thread_new T
+g_system_thread_set_name T
+g_system_thread_wait T
+g_test_add_data_func T
+g_test_add_data_func_full T
+g_test_add_func T
+g_test_add_vtable T
+g_test_assert_expected_messages_internal T
+g_test_bug T
+g_test_bug_base T
+g_test_build_filename T
+g_test_config_vars D 8
+g_test_create_case T
+g_test_create_suite T
+g_test_expect_message T
+g_test_fail T
+g_test_failed T
+g_test_get_dir T
+g_test_get_filename T
+g_test_get_root T
+g_test_incomplete T
+g_test_init T
+g_test_log_buffer_free T
+g_test_log_buffer_new T
+g_test_log_buffer_pop T
+g_test_log_buffer_push T
+g_test_log_msg_free T
+g_test_log_set_fatal_handler T
+g_test_log_type_name T
+g_test_maximized_result T
+g_test_message T
+g_test_minimized_result T
+g_test_queue_destroy T
+g_test_queue_free T
+g_test_rand_double T
+g_test_rand_double_range T
+g_test_rand_int T
+g_test_rand_int_range T
+g_test_run T
+g_test_run_suite T
+g_test_set_nonfatal_assertions T
+g_test_skip T
+g_test_subprocess T
+g_test_suite_add T
+g_test_suite_add_suite T
+g_test_timer_elapsed T
+g_test_timer_last T
+g_test_timer_start T
+g_test_trap_assertions T
+g_test_trap_fork T
+g_test_trap_has_passed T
+g_test_trap_reached_timeout T
+g_test_trap_subprocess T
+g_thread_create T
+g_thread_create_full T
+g_thread_error_quark T
+g_thread_exit T
+g_thread_foreach T
+g_thread_functions_for_glib_use D 168
+g_thread_get_initialized T
+g_thread_gettime D 8
+g_thread_init_glib T
+g_thread_join T
+g_thread_new T
+g_thread_new_internal T
+g_thread_pool_free T
+g_thread_pool_get_max_idle_time T
+g_thread_pool_get_max_threads T
+g_thread_pool_get_max_unused_threads T
+g_thread_pool_get_num_threads T
+g_thread_pool_get_num_unused_threads T
+g_thread_pool_move_to_front T
+g_thread_pool_new T
+g_thread_pool_push T
+g_thread_pool_set_max_idle_time T
+g_thread_pool_set_max_threads T
+g_thread_pool_set_max_unused_threads T
+g_thread_pool_set_sort_function T
+g_thread_pool_stop_unused_threads T
+g_thread_pool_unprocessed T
+g_thread_proxy T
+g_thread_ref T
+g_thread_self T
+g_thread_set_priority T
+g_thread_try_new T
+g_thread_unref T
+g_thread_use_default_impl B 4
+g_thread_yield T
+g_threads_got_initialized D 4
+g_time_val_add T
+g_time_val_from_iso8601 T
+g_time_val_to_iso8601 T
+g_time_zone_adjust_time T
+g_time_zone_find_interval T
+g_time_zone_get_abbreviation T
+g_time_zone_get_offset T
+g_time_zone_is_dst T
+g_time_zone_new T
+g_time_zone_new_local T
+g_time_zone_new_utc T
+g_time_zone_ref T
+g_time_zone_unref T
+g_timeout_add T
+g_timeout_add_full T
+g_timeout_add_seconds T
+g_timeout_add_seconds_full T
+g_timeout_funcs D 48
+g_timeout_source_new T
+g_timeout_source_new_seconds T
+g_timer_continue T
+g_timer_destroy T
+g_timer_elapsed T
+g_timer_new T
+g_timer_reset T
+g_timer_start T
+g_timer_stop T
+g_trash_stack_height T
+g_trash_stack_peek T
+g_trash_stack_pop T
+g_trash_stack_push T
+g_tree_destroy T
+g_tree_foreach T
+g_tree_height T
+g_tree_insert T
+g_tree_lookup T
+g_tree_lookup_extended T
+g_tree_new T
+g_tree_new_full T
+g_tree_new_with_data T
+g_tree_nnodes T
+g_tree_ref T
+g_tree_remove T
+g_tree_replace T
+g_tree_search T
+g_tree_steal T
+g_tree_traverse T
+g_tree_unref T
+g_try_malloc T
+g_try_malloc0 T
+g_try_malloc0_n T
+g_try_malloc_n T
+g_try_realloc T
+g_try_realloc_n T
+g_tuples_destroy T
+g_tuples_index T
+g_ucs4_to_utf16 T
+g_ucs4_to_utf8 T
+g_unichar_break_type T
+g_unichar_combining_class T
+g_unichar_compose T
+g_unichar_decompose T
+g_unichar_digit_value T
+g_unichar_fully_decompose T
+g_unichar_get_mirror_char T
+g_unichar_get_script T
+g_unichar_isalnum T
+g_unichar_isalpha T
+g_unichar_iscntrl T
+g_unichar_isdefined T
+g_unichar_isdigit T
+g_unichar_isgraph T
+g_unichar_islower T
+g_unichar_ismark T
+g_unichar_isprint T
+g_unichar_ispunct T
+g_unichar_isspace T
+g_unichar_istitle T
+g_unichar_isupper T
+g_unichar_iswide T
+g_unichar_iswide_cjk T
+g_unichar_isxdigit T
+g_unichar_iszerowidth T
+g_unichar_to_utf8 T
+g_unichar_tolower T
+g_unichar_totitle T
+g_unichar_toupper T
+g_unichar_type T
+g_unichar_validate T
+g_unichar_xdigit_value T
+g_unicode_canonical_decomposition T
+g_unicode_canonical_ordering T
+g_unicode_script_from_iso15924 T
+g_unicode_script_to_iso15924 T
+g_unix_error_quark T
+g_unix_fd_add T
+g_unix_fd_add_full T
+g_unix_fd_source_funcs D 48
+g_unix_fd_source_new T
+g_unix_open_pipe T
+g_unix_set_fd_nonblocking T
+g_unix_signal_add T
+g_unix_signal_add_full T
+g_unix_signal_funcs D 48
+g_unix_signal_source_new T
+g_unlink T
+g_unsetenv T
+g_uri_escape_string T
+g_uri_list_extract_uris T
+g_uri_parse_scheme T
+g_uri_unescape_segment T
+g_uri_unescape_string T
+g_usleep T
+g_utf16_to_ucs4 T
+g_utf16_to_utf8 T
+g_utf8_casefold T
+g_utf8_collate T
+g_utf8_collate_key T
+g_utf8_collate_key_for_filename T
+g_utf8_find_next_char T
+g_utf8_find_prev_char T
+g_utf8_get_char T
+g_utf8_get_char_validated T
+g_utf8_make_valid T
+g_utf8_normalize T
+g_utf8_offset_to_pointer T
+g_utf8_pointer_to_offset T
+g_utf8_prev_char T
+g_utf8_skip D 8
+g_utf8_strchr T
+g_utf8_strdown T
+g_utf8_strlen T
+g_utf8_strncpy T
+g_utf8_strrchr T
+g_utf8_strreverse T
+g_utf8_strup T
+g_utf8_substring T
+g_utf8_to_ucs4 T
+g_utf8_to_ucs4_fast T
+g_utf8_to_utf16 T
+g_utf8_validate T
+g_utime T
+g_variant_builder_add T
+g_variant_builder_add_parsed T
+g_variant_builder_add_value T
+g_variant_builder_clear T
+g_variant_builder_close T
+g_variant_builder_end T
+g_variant_builder_init T
+g_variant_builder_new T
+g_variant_builder_open T
+g_variant_builder_ref T
+g_variant_builder_unref T
+g_variant_byteswap T
+g_variant_check_format_string T
+g_variant_classify T
+g_variant_compare T
+g_variant_dict_clear T
+g_variant_dict_contains T
+g_variant_dict_end T
+g_variant_dict_init T
+g_variant_dict_insert T
+g_variant_dict_insert_value T
+g_variant_dict_lookup T
+g_variant_dict_lookup_value T
+g_variant_dict_new T
+g_variant_dict_ref T
+g_variant_dict_remove T
+g_variant_dict_unref T
+g_variant_dup_bytestring T
+g_variant_dup_bytestring_array T
+g_variant_dup_objv T
+g_variant_dup_string T
+g_variant_dup_strv T
+g_variant_equal T
+g_variant_format_string_scan T
+g_variant_format_string_scan_type T
+g_variant_get T
+g_variant_get_boolean T
+g_variant_get_byte T
+g_variant_get_bytestring T
+g_variant_get_bytestring_array T
+g_variant_get_child T
+g_variant_get_child_value T
+g_variant_get_data T
+g_variant_get_data_as_bytes T
+g_variant_get_double T
+g_variant_get_fixed_array T
+g_variant_get_handle T
+g_variant_get_int16 T
+g_variant_get_int32 T
+g_variant_get_int64 T
+g_variant_get_maybe T
+g_variant_get_normal_form T
+g_variant_get_objv T
+g_variant_get_size T
+g_variant_get_string T
+g_variant_get_strv T
+g_variant_get_type T
+g_variant_get_type_info T
+g_variant_get_type_string T
+g_variant_get_uint16 T
+g_variant_get_uint32 T
+g_variant_get_uint64 T
+g_variant_get_va T
+g_variant_get_variant T
+g_variant_hash T
+g_variant_is_container T
+g_variant_is_floating T
+g_variant_is_normal_form T
+g_variant_is_object_path T
+g_variant_is_of_type T
+g_variant_is_signature T
+g_variant_is_trusted T
+g_variant_iter_copy T
+g_variant_iter_free T
+g_variant_iter_init T
+g_variant_iter_loop T
+g_variant_iter_n_children T
+g_variant_iter_new T
+g_variant_iter_next T
+g_variant_iter_next_value T
+g_variant_lookup T
+g_variant_lookup_value T
+g_variant_n_children T
+g_variant_new T
+g_variant_new_array T
+g_variant_new_boolean T
+g_variant_new_byte T
+g_variant_new_bytestring T
+g_variant_new_bytestring_array T
+g_variant_new_dict_entry T
+g_variant_new_double T
+g_variant_new_fixed_array T
+g_variant_new_from_bytes T
+g_variant_new_from_children T
+g_variant_new_from_data T
+g_variant_new_handle T
+g_variant_new_int16 T
+g_variant_new_int32 T
+g_variant_new_int64 T
+g_variant_new_maybe T
+g_variant_new_object_path T
+g_variant_new_objv T
+g_variant_new_parsed T
+g_variant_new_parsed_va T
+g_variant_new_printf T
+g_variant_new_signature T
+g_variant_new_string T
+g_variant_new_strv T
+g_variant_new_take_string T
+g_variant_new_tuple T
+g_variant_new_uint16 T
+g_variant_new_uint32 T
+g_variant_new_uint64 T
+g_variant_new_va T
+g_variant_new_variant T
+g_variant_parse T
+g_variant_parse_error_print_context T
+g_variant_parse_error_quark T
+g_variant_parser_get_error_quark T
+g_variant_print T
+g_variant_print_string T
+g_variant_ref T
+g_variant_ref_sink T
+g_variant_serialised_byteswap T
+g_variant_serialised_get_child T
+g_variant_serialised_is_normal T
+g_variant_serialised_n_children T
+g_variant_serialiser_is_object_path T
+g_variant_serialiser_is_signature T
+g_variant_serialiser_is_string T
+g_variant_serialiser_needed_size T
+g_variant_serialiser_serialise T
+g_variant_store T
+g_variant_take_ref T
+g_variant_type_checked_ T
+g_variant_type_copy T
+g_variant_type_dup_string T
+g_variant_type_element T
+g_variant_type_equal T
+g_variant_type_first T
+g_variant_type_free T
+g_variant_type_get_string_length T
+g_variant_type_hash T
+g_variant_type_info_assert_no_infos T
+g_variant_type_info_element T
+g_variant_type_info_get T
+g_variant_type_info_get_type_string T
+g_variant_type_info_member_info T
+g_variant_type_info_n_members T
+g_variant_type_info_query T
+g_variant_type_info_query_element T
+g_variant_type_info_ref T
+g_variant_type_info_unref T
+g_variant_type_is_array T
+g_variant_type_is_basic T
+g_variant_type_is_container T
+g_variant_type_is_definite T
+g_variant_type_is_dict_entry T
+g_variant_type_is_maybe T
+g_variant_type_is_subtype_of T
+g_variant_type_is_tuple T
+g_variant_type_is_variant T
+g_variant_type_key T
+g_variant_type_n_items T
+g_variant_type_new T
+g_variant_type_new_array T
+g_variant_type_new_dict_entry T
+g_variant_type_new_maybe T
+g_variant_type_new_tuple T
+g_variant_type_next T
+g_variant_type_peek_string T
+g_variant_type_string_is_valid T
+g_variant_type_string_scan T
+g_variant_type_value T
+g_variant_unref T
+g_vasprintf T
+g_vfprintf T
+g_vprintf T
+g_vsnprintf T
+g_vsprintf T
+g_wakeup_acknowledge T
+g_wakeup_free T
+g_wakeup_get_pollfd T
+g_wakeup_new T
+g_wakeup_signal T
+g_warn_message T
+glib_binary_age R
+glib_check_version T
+glib_gettext T
+glib_init T
+glib_interface_age R
+glib_major_version R
+glib_mem_profiler_table D 8
+glib_micro_version R
+glib_minor_version R
+glib_on_error_halt D 4
+glib_pgettext T
diff --git a/ports/glib.hash b/ports/glib.hash
new file mode 100644
index 0000000..96f8a61
--- /dev/null
+++ b/ports/glib.hash
@@ -0,0 +1 @@
+eab68db7c06342b10624d81cdb95d167b2721e5d
diff --git a/ports/glib.port b/ports/glib.port
new file mode 100644
index 0000000..f5a2b7a
--- /dev/null
+++ b/ports/glib.port
@@ -0,0 +1,99 @@
+LICENSE := GPLv2
+VERSION := 2.52.2
+DOWNLOADS := glib.archive
+
+URL(glib) := https://download.gnome.org/sources/glib/2.52/glib-$(VERSION).tar.xz
+SHA(glib) := 50a5af7569af1a489e17f207142cd5a4cdefbf68
+DIR(glib) := src/lib/glib
+
+default: macro_sanity
+
+# This is wacky automess kludge that
+# cannot be managed by hand.
+macro_sanity: $(DOWNLOADS)
+ $(VERBOSE)sed -i '/error/d' src/lib/glib/glib/gversionmacros.h
+
+DIRS := include/glib include/glib/glib include/glib/glib/deprecated
+
+DIR_CONTENT(include/glib) := src/lib/glib/glib/glib.h
+
+DIR_CONTENT(include/glib/glib) := \
+ src/lib/glib/glib/galloca.h \
+ src/lib/glib/glib/garray.h \
+ src/lib/glib/glib/gasyncqueue.h \
+ src/lib/glib/glib/gatomic.h \
+ src/lib/glib/glib/glib-autocleanups.h \
+ src/lib/glib/glib/gbacktrace.h \
+ src/lib/glib/glib/gbase64.h \
+ src/lib/glib/glib/gbitlock.h \
+ src/lib/glib/glib/gbookmarkfile.h \
+ src/lib/glib/glib/gbytes.h \
+ src/lib/glib/glib/gcharset.h \
+ src/lib/glib/glib/gchecksum.h \
+ src/lib/glib/glib/gconvert.h \
+ src/lib/glib/glib/gdataset.h \
+ src/lib/glib/glib/gdate.h \
+ src/lib/glib/glib/gdatetime.h \
+ src/lib/glib/glib/gdir.h \
+ src/lib/glib/glib/genviron.h \
+ src/lib/glib/glib/gerror.h \
+ src/lib/glib/glib/gfileutils.h \
+ src/lib/glib/glib/ggettext.h \
+ src/lib/glib/glib/ghash.h \
+ src/lib/glib/glib/ghmac.h \
+ src/lib/glib/glib/ghook.h \
+ src/lib/glib/glib/ghostutils.h \
+ src/lib/glib/glib/giochannel.h \
+ src/lib/glib/glib/gkeyfile.h \
+ src/lib/glib/glib/glist.h \
+ src/lib/glib/glib/gmacros.h \
+ src/lib/glib/glib/gmain.h \
+ src/lib/glib/glib/gmappedfile.h \
+ src/lib/glib/glib/gmarkup.h \
+ src/lib/glib/glib/gmem.h \
+ src/lib/glib/glib/gmessages.h \
+ src/lib/glib/glib/gnode.h \
+ src/lib/glib/glib/goption.h \
+ src/lib/glib/glib/gpattern.h \
+ src/lib/glib/glib/gpoll.h \
+ src/lib/glib/glib/gprimes.h \
+ src/lib/glib/glib/gqsort.h \
+ src/lib/glib/glib/gquark.h \
+ src/lib/glib/glib/gqueue.h \
+ src/lib/glib/glib/grand.h \
+ src/lib/glib/glib/gregex.h \
+ src/lib/glib/glib/gscanner.h \
+ src/lib/glib/glib/gsequence.h \
+ src/lib/glib/glib/gshell.h \
+ src/lib/glib/glib/gslice.h \
+ src/lib/glib/glib/gslist.h \
+ src/lib/glib/glib/gspawn.h \
+ src/lib/glib/glib/gstdio.h \
+ src/lib/glib/glib/gstrfuncs.h \
+ src/lib/glib/glib/gstring.h \
+ src/lib/glib/glib/gstringchunk.h \
+ src/lib/glib/glib/gtestutils.h \
+ src/lib/glib/glib/gthread.h \
+ src/lib/glib/glib/gthreadpool.h \
+ src/lib/glib/glib/gtimer.h \
+ src/lib/glib/glib/gtimezone.h \
+ src/lib/glib/glib/gtrashstack.h \
+ src/lib/glib/glib/gtree.h \
+ src/lib/glib/glib/gtypes.h \
+ src/lib/glib/glib/gunicode.h \
+ src/lib/glib/glib/gurifuncs.h \
+ src/lib/glib/glib/gutils.h \
+ src/lib/glib/glib/guuid.h \
+ src/lib/glib/glib/gvarianttype.h \
+ src/lib/glib/glib/gvariant.h \
+ src/lib/glib/glib/gversion.h \
+ src/lib/glib/glib/gversionmacros.h \
+ src/lib/glib/glib/gprintf.h \
+
+DIR_CONTENT(include/glib/glib/deprecated) := \
+ src/lib/glib/glib/deprecated/gallocator.h \
+ src/lib/glib/glib/deprecated/gcache.h \
+ src/lib/glib/glib/deprecated/gcompletion.h \
+ src/lib/glib/glib/deprecated/gmain.h \
+ src/lib/glib/glib/deprecated/grel.h \
+ src/lib/glib/glib/deprecated/gthread.h
diff --git a/run/glib.run b/run/glib.run
new file mode 100644
index 0000000..776078b
--- /dev/null
+++ b/run/glib.run
@@ -0,0 +1,61 @@
+build test/glib
+
+create_boot_directory
+
+import_from_depot \
+ genodelabs/src/[base_src] \
+ genodelabs/src/init \
+
+install_config {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+build_boot_image {
+ glib.lib.so
+ libc.lib.so
+ libiconv.lib.so
+ libm.lib.so
+ posix.lib.so
+ pthread.lib.so
+ test-glib
+}
+
+append qemu_args " -nographic "
+
+run_genode_until "child .* exited with exit value 0.*\n" 10
+
diff --git a/src/lib/glib/config.h b/src/lib/glib/config.h
new file mode 100644
index 0000000..c23fc7c
--- /dev/null
+++ b/src/lib/glib/config.h
@@ -0,0 +1,176 @@
+/* The normal alignment of `guint32', in bytes. */
+#define ALIGNOF_GUINT32 4
+
+/* The normal alignment of `guint64', in bytes. */
+#define ALIGNOF_GUINT64 8
+
+/* The normal alignment of `unsigned long', in bytes. */
+#define ALIGNOF_UNSIGNED_LONG 4
+
+/* Define the gettext package to be used */
+#define GETTEXT_PACKAGE "whatever"
+
+/* Define if you have a version of the snprintf function with semantics as
+ specified by the ISO C99 standard. */
+#define HAVE_C99_SNPRINTF
+
+/* Define if you have a version of the vsnprintf function with semantics as
+ specified by the ISO C99 standard. */
+#define HAVE_C99_VSNPRINTF
+
+/* Define to 1 if you have the `clock_gettime' function. */
+#define HAVE_CLOCK_GETTIME 1
+
+/* Define to 1 if you have the header file, and it defines `DIR'.
+ */
+#define HAVE_DIRENT_H 1
+
+/* Define to 1 if you have the `fsync' function. */
+#define HAVE_FSYNC 1
+
+/* define to use system printf */
+#define HAVE_GOOD_PRINTF
+
+/* Define if you have the 'intmax_t' type in or . */
+#define HAVE_INTMAX_T 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define if exists, doesn't clash with , and
+ declares uintmax_t. */
+#define HAVE_INTTYPES_H_WITH_UINTMAX 1
+
+/* Have function pthread_condattr_setclock */
+#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1
+
+/* Define to 1 if you have the `readlink' function. */
+#define HAVE_READLINK 1
+
+/* Define to 1 if you have the `recvmmsg' function. */
+#define HAVE_RECVMMSG 1
+
+/* Define to 1 if you have the `sendmmsg' function. */
+#define HAVE_SENDMMSG 1
+
+/* Define to 1 if you have the `setenv' function. */
+#define HAVE_SETENV 1
+
+/* Define to 1 if you have the `snprintf' function. */
+#define HAVE_SNPRINTF 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STDINT_H 1
+
+/* Define if exists, doesn't clash with , and declares
+ uintmax_t. */
+#define HAVE_STDINT_H_WITH_UINTMAX
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `stpcpy' function. */
+#define HAVE_STPCPY 1
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#define HAVE_STRCASECMP 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STRING_H 1
+
+/* Have functions strlcpy and strlcat */
+#define HAVE_STRLCPY 1
+
+/* Define to 1 if you have the `strncasecmp' function. */
+#define HAVE_STRNCASECMP 1
+
+/* Define to 1 if you have the `strnlen' function. */
+#define HAVE_STRNLEN 1
+
+/* Define to 1 if you have the `symlink' function. */
+#define HAVE_SYMLINK 1
+
+/* Define to 1 if you have the header file, and it defines `DIR'.
+ */
+#define HAVE_SYS_DIR_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_EVENT_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_FILIO_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_MOUNT_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_RESOURCE_H 1
+
+/* found fd_set in sys/select.h */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_STATVFS_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_SYSCTL_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_TERMIOS_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_UNISTD_H 1
+
+/* The size of `char', as computed by sizeof. */
+#define SIZEOF_CHAR sizeof(char)
+
+/* The size of `int', as computed by sizeof. */
+#define SIZEOF_INT sizeof(int)
+
+/* The size of `long', as computed by sizeof. */
+#define SIZEOF_LONG sizeof(long)
+
+/* The size of `long long', as computed by sizeof. */
+#define SIZEOF_LONG_LONG sizeof()
+
+/* The size of `short', as computed by sizeof. */
+#define SIZEOF_SHORT sizeof(short)
+
+/* The size of `size_t', as computed by sizeof. */
+#define SIZEOF_SIZE_T sizeof(size_t)
+
+/* The size of `ssize_t', as computed by sizeof. */
+#define SIZEOF_SSIZE_T sizeof(ssize_t)
+
+/* The size of `void *', as computed by sizeof. */
+#define SIZEOF_VOID_P sizeof(void *)
+
+/* The size of `__int64', as computed by sizeof. */
+#define SIZEOF___INT64 sizeof(__int64)
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Use no threads */
+#define THREADS_NONE
+
+/* Use pthreads */
+#define THREADS_POSIX
+
+/* Using GNU libiconv */
+#define USE_LIBICONV_GNU
diff --git a/src/lib/glib/configmake.h b/src/lib/glib/configmake.h
new file mode 100644
index 0000000..19460f3
--- /dev/null
+++ b/src/lib/glib/configmake.h
@@ -0,0 +1,6 @@
+#ifndef _CONFIGMAKE_H_
+#define _CONFIGMAKE_H_
+
+#define LIBDIR "/lib"
+
+#endif
diff --git a/src/lib/glib/libintl.h b/src/lib/glib/libintl.h
new file mode 100644
index 0000000..e69de29
diff --git a/src/test/glib/target.mk b/src/test/glib/target.mk
new file mode 100644
index 0000000..445829c
--- /dev/null
+++ b/src/test/glib/target.mk
@@ -0,0 +1,7 @@
+TARGET = test-glib
+LIBS = libc pthread glib posix
+SRC_C = main.c
+
+# Strength through pointer arithmetic
+main.c: $(call select_from_ports,glib)/src/lib/glib/tests/testglib.c
+ $(VERBOSE)sed 's/gintptr/int/' $< > $@