diff --git a/build/.cmake/api/v1/reply/index-2024-09-23T10-28-13-0746.json b/build/.cmake/api/v1/reply/index-2024-09-23T10-34-34-0588.json similarity index 100% rename from build/.cmake/api/v1/reply/index-2024-09-23T10-28-13-0746.json rename to build/.cmake/api/v1/reply/index-2024-09-23T10-34-34-0588.json diff --git a/build/.ninja_deps b/build/.ninja_deps index f49a5d8..5d62169 100644 Binary files a/build/.ninja_deps and b/build/.ninja_deps differ diff --git a/build/.ninja_log b/build/.ninja_log index d7a662c..0ef71fb 100644 --- a/build/.ninja_log +++ b/build/.ninja_log @@ -65,3 +65,5 @@ 4617 5726 1726992200011900909 src/CMakeFiles/hook_aurora.dir/asmjit/x86/x86instapi.cpp.o 9e18ed1cc5f06e96 5726 5986 1726992200270899635 src/CMakeFiles/hook_aurora.dir/Tool.cpp.o fce4799b52de917 3151 3475 1726992197760911984 src/CMakeFiles/hook_aurora.dir/asmjit/core/string.cpp.o 6405a7c465fc575f +2 9386 1727087721582554199 src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o 5529abc50828be39 +9386 10142 1727087722332550344 /dp_s/lib/libAurora.so a50e52f798c4dd0a diff --git a/build/lib/frida/libfrida-gum.a b/build/lib/frida/libfrida-gum.a index 3e7c62d..cbac5bd 100644 Binary files a/build/lib/frida/libfrida-gum.a and b/build/lib/frida/libfrida-gum.a differ diff --git a/build/src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o b/build/src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o index 030bd39..a7cfc32 100644 Binary files a/build/src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o and b/build/src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o differ diff --git a/include/SqrReg_ActiveHook.hpp b/include/SqrReg_ActiveHook.hpp index 6086ce5..55588e9 100644 --- a/include/SqrReg_ActiveHook.hpp +++ b/include/SqrReg_ActiveHook.hpp @@ -90,7 +90,7 @@ static SQInteger L_HookFunc(HSQUIRRELVM v) EXAMPLE_LISTENER(listener)->CallBackOnLeave = CallBackOnLeave; gum_interceptor_begin_transaction(interceptor); - gum_interceptor_attach(interceptor, GSIZE_TO_POINTER(FuncAddress), listener, GSIZE_TO_POINTER(FuncAddress)); + gum_interceptor_attach_listener(interceptor, GSIZE_TO_POINTER(FuncAddress), listener, GSIZE_TO_POINTER(FuncAddress)); gum_interceptor_end_transaction(interceptor); sq_pushuserpointer(v, listener); @@ -104,7 +104,7 @@ static SQInteger L_DeHookFunc(HSQUIRRELVM v) sq_getuserpointer(v, 2, &FuncAddress); GumInvocationListener *listener = (GumInvocationListener *)FuncAddress; - gum_interceptor_detach(interceptor, listener); + gum_interceptor_detach_listener(interceptor, listener); return 0; } diff --git a/include/frida-gum.h b/include/frida-gum.h index 6cd17d9..c8cfc71 100644 --- a/include/frida-gum.h +++ b/include/frida-gum.h @@ -153,8 +153,6 @@ #define g_application_unmark_busy _frida_g_application_unmark_busy #define g_application_withdraw_notification _frida_g_application_withdraw_notification #define g_array_append_vals _frida_g_array_append_vals -#define g_array_binary_search _frida_g_array_binary_search -#define g_array_copy _frida_g_array_copy #define g_array_free _frida_g_array_free #define g_array_get_element_size _frida_g_array_get_element_size #define g_array_get_type _frida_g_array_get_type @@ -170,7 +168,6 @@ #define g_array_sized_new _frida_g_array_sized_new #define g_array_sort _frida_g_array_sort #define g_array_sort_with_data _frida_g_array_sort_with_data -#define g_array_steal _frida_g_array_steal #define g_array_unref _frida_g_array_unref #define g_ascii_digit_value _frida_g_ascii_digit_value #define g_ascii_dtostr _frida_g_ascii_dtostr @@ -385,7 +382,6 @@ #define g_byte_array_sized_new _frida_g_byte_array_sized_new #define g_byte_array_sort _frida_g_byte_array_sort #define g_byte_array_sort_with_data _frida_g_byte_array_sort_with_data -#define g_byte_array_steal _frida_g_byte_array_steal #define g_byte_array_unref _frida_g_byte_array_unref #define g_bytes_compare _frida_g_bytes_compare #define g_bytes_equal _frida_g_bytes_equal @@ -500,11 +496,8 @@ #define g_chmod _frida_g_chmod #define g_clear_error _frida_g_clear_error #define g_clear_handle_id _frida_g_clear_handle_id -#define g_clear_list _frida_g_clear_list #define g_clear_object _frida_g_clear_object #define g_clear_pointer _frida_g_clear_pointer -#define g_clear_signal_handler _frida_g_clear_signal_handler -#define g_clear_slist _frida_g_clear_slist #define g_close _frida_g_close #define g_closure_add_finalize_notifier _frida_g_closure_add_finalize_notifier #define g_closure_add_invalidate_notifier _frida_g_closure_add_invalidate_notifier @@ -705,7 +698,6 @@ #define g_date_time_difference _frida_g_date_time_difference #define g_date_time_equal _frida_g_date_time_equal #define g_date_time_format _frida_g_date_time_format -#define g_date_time_format_iso8601 _frida_g_date_time_format_iso8601 #define g_date_time_get_day_of_month _frida_g_date_time_get_day_of_month #define g_date_time_get_day_of_week _frida_g_date_time_get_day_of_week #define g_date_time_get_day_of_year _frida_g_date_time_get_day_of_year @@ -1295,7 +1287,6 @@ #define g_file_info_get_is_backup _frida_g_file_info_get_is_backup #define g_file_info_get_is_hidden _frida_g_file_info_get_is_hidden #define g_file_info_get_is_symlink _frida_g_file_info_get_is_symlink -#define g_file_info_get_modification_date_time _frida_g_file_info_get_modification_date_time #define g_file_info_get_modification_time _frida_g_file_info_get_modification_time #define g_file_info_get_name _frida_g_file_info_get_name #define g_file_info_get_size _frida_g_file_info_get_size @@ -1327,7 +1318,6 @@ #define g_file_info_set_icon _frida_g_file_info_set_icon #define g_file_info_set_is_hidden _frida_g_file_info_set_is_hidden #define g_file_info_set_is_symlink _frida_g_file_info_set_is_symlink -#define g_file_info_set_modification_date_time _frida_g_file_info_set_modification_date_time #define g_file_info_set_modification_time _frida_g_file_info_set_modification_time #define g_file_info_set_name _frida_g_file_info_set_name #define g_file_info_set_size _frida_g_file_info_set_size @@ -1488,11 +1478,9 @@ #define g_fprintf _frida_g_fprintf #define g_free _frida_g_free #define g_freopen _frida_g_freopen -#define g_fsync _frida_g_fsync #define g_get_application_name _frida_g_get_application_name #define g_get_charset _frida_g_get_charset #define g_get_codeset _frida_g_get_codeset -#define g_get_console_charset _frida_g_get_console_charset #define g_get_current_dir _frida_g_get_current_dir #define g_get_current_time _frida_g_get_current_time #define g_get_environ _frida_g_get_environ @@ -1504,7 +1492,6 @@ #define g_get_locale_variants _frida_g_get_locale_variants #define g_get_monotonic_time _frida_g_get_monotonic_time #define g_get_num_processors _frida_g_get_num_processors -#define g_get_os_info _frida_g_get_os_info #define g_get_prgname _frida_g_get_prgname #define g_get_real_name _frida_g_get_real_name #define g_get_real_time _frida_g_get_real_time @@ -1834,7 +1821,6 @@ #define g_list_index _frida_g_list_index #define g_list_insert _frida_g_list_insert #define g_list_insert_before _frida_g_list_insert_before -#define g_list_insert_before_link _frida_g_list_insert_before_link #define g_list_insert_sorted _frida_g_list_insert_sorted #define g_list_insert_sorted_with_data _frida_g_list_insert_sorted_with_data #define g_list_last _frida_g_list_last @@ -1859,8 +1845,6 @@ #define g_list_sort _frida_g_list_sort #define g_list_sort_with_data _frida_g_list_sort_with_data #define g_list_store_append _frida_g_list_store_append -#define g_list_store_find _frida_g_list_store_find -#define g_list_store_find_with_equal_func _frida_g_list_store_find_with_equal_func #define g_list_store_get_type _frida_g_list_store_get_type #define g_list_store_insert _frida_g_list_store_insert #define g_list_store_insert_sorted _frida_g_list_store_insert_sorted @@ -2011,11 +1995,6 @@ #define g_memory_input_stream_new _frida_g_memory_input_stream_new #define g_memory_input_stream_new_from_bytes _frida_g_memory_input_stream_new_from_bytes #define g_memory_input_stream_new_from_data _frida_g_memory_input_stream_new_from_data -#define g_memory_monitor_dbus_get_type _frida_g_memory_monitor_dbus_get_type -#define g_memory_monitor_dup_default _frida_g_memory_monitor_dup_default -#define g_memory_monitor_get_type _frida_g_memory_monitor_get_type -#define g_memory_monitor_portal_get_type _frida_g_memory_monitor_portal_get_type -#define g_memory_monitor_warning_level_get_type _frida_g_memory_monitor_warning_level_get_type #define g_memory_output_stream_get_data _frida_g_memory_output_stream_get_data #define g_memory_output_stream_get_data_size _frida_g_memory_output_stream_get_data_size #define g_memory_output_stream_get_size _frida_g_memory_output_stream_get_size @@ -2398,7 +2377,6 @@ #define g_param_spec_int _frida_g_param_spec_int #define g_param_spec_int64 _frida_g_param_spec_int64 #define g_param_spec_internal _frida_g_param_spec_internal -#define g_param_spec_is_valid_name _frida_g_param_spec_is_valid_name #define g_param_spec_long _frida_g_param_spec_long #define g_param_spec_object _frida_g_param_spec_object #define g_param_spec_override _frida_g_param_spec_override @@ -2518,9 +2496,6 @@ #define g_proxy_resolver_portal_get_type _frida_g_proxy_resolver_portal_get_type #define g_proxy_supports_hostname _frida_g_proxy_supports_hostname #define g_ptr_array_add _frida_g_ptr_array_add -#define g_ptr_array_copy _frida_g_ptr_array_copy -#define g_ptr_array_extend _frida_g_ptr_array_extend -#define g_ptr_array_extend_and_steal _frida_g_ptr_array_extend_and_steal #define g_ptr_array_find _frida_g_ptr_array_find #define g_ptr_array_find_with_equal_func _frida_g_ptr_array_find_with_equal_func #define g_ptr_array_foreach _frida_g_ptr_array_foreach @@ -2541,7 +2516,6 @@ #define g_ptr_array_sized_new _frida_g_ptr_array_sized_new #define g_ptr_array_sort _frida_g_ptr_array_sort #define g_ptr_array_sort_with_data _frida_g_ptr_array_sort_with_data -#define g_ptr_array_steal _frida_g_ptr_array_steal #define g_ptr_array_steal_index _frida_g_ptr_array_steal_index #define g_ptr_array_steal_index_fast _frida_g_ptr_array_steal_index_fast #define g_ptr_array_unref _frida_g_ptr_array_unref @@ -2564,9 +2538,7 @@ #define g_queue_index _frida_g_queue_index #define g_queue_init _frida_g_queue_init #define g_queue_insert_after _frida_g_queue_insert_after -#define g_queue_insert_after_link _frida_g_queue_insert_after_link #define g_queue_insert_before _frida_g_queue_insert_before -#define g_queue_insert_before_link _frida_g_queue_insert_before_link #define g_queue_insert_sorted _frida_g_queue_insert_sorted #define g_queue_is_empty _frida_g_queue_is_empty #define g_queue_link_index _frida_g_queue_link_index @@ -2951,7 +2923,6 @@ #define g_signal_handlers_disconnect_matched _frida_g_signal_handlers_disconnect_matched #define g_signal_handlers_unblock_matched _frida_g_signal_handlers_unblock_matched #define g_signal_has_handler_pending _frida_g_signal_has_handler_pending -#define g_signal_is_valid_name _frida_g_signal_is_valid_name #define g_signal_list_ids _frida_g_signal_list_ids #define g_signal_lookup _frida_g_signal_lookup #define g_signal_name _frida_g_signal_name @@ -3232,7 +3203,6 @@ #define g_source_set_callback_indirect _frida_g_source_set_callback_indirect #define g_source_set_can_recurse _frida_g_source_set_can_recurse #define g_source_set_closure _frida_g_source_set_closure -#define g_source_set_dispose_function _frida_g_source_set_dispose_function #define g_source_set_dummy_callback _frida_g_source_set_dummy_callback #define g_source_set_funcs _frida_g_source_set_funcs #define g_source_set_name _frida_g_source_set_name @@ -3423,7 +3393,6 @@ #define g_subprocess_wait_finish _frida_g_subprocess_wait_finish #define g_system_thread_exit _frida_g_system_thread_exit #define g_system_thread_free _frida_g_system_thread_free -#define g_system_thread_get_scheduler_settings _frida_g_system_thread_get_scheduler_settings #define g_system_thread_new _frida_g_system_thread_new #define g_system_thread_set_name _frida_g_system_thread_set_name #define g_system_thread_wait _frida_g_system_thread_wait @@ -3445,7 +3414,6 @@ #define g_task_propagate_boolean _frida_g_task_propagate_boolean #define g_task_propagate_int _frida_g_task_propagate_int #define g_task_propagate_pointer _frida_g_task_propagate_pointer -#define g_task_propagate_value _frida_g_task_propagate_value #define g_task_report_error _frida_g_task_report_error #define g_task_report_new_error _frida_g_task_report_new_error #define g_task_return_boolean _frida_g_task_return_boolean @@ -3454,7 +3422,6 @@ #define g_task_return_int _frida_g_task_return_int #define g_task_return_new_error _frida_g_task_return_new_error #define g_task_return_pointer _frida_g_task_return_pointer -#define g_task_return_value _frida_g_task_return_value #define g_task_run_in_thread _frida_g_task_run_in_thread #define g_task_run_in_thread_sync _frida_g_task_run_in_thread_sync #define g_task_set_check_cancellable _frida_g_task_set_check_cancellable @@ -3521,7 +3488,6 @@ #define g_test_subprocess _frida_g_test_subprocess #define g_test_suite_add _frida_g_test_suite_add #define g_test_suite_add_suite _frida_g_test_suite_add_suite -#define g_test_summary _frida_g_test_summary #define g_test_timer_elapsed _frida_g_test_timer_elapsed #define g_test_timer_last _frida_g_test_timer_last #define g_test_timer_start _frida_g_test_timer_start @@ -3545,7 +3511,6 @@ #define g_thread_functions_for_glib_use _frida_g_thread_functions_for_glib_use #define g_thread_garbage_collect _frida_g_thread_garbage_collect #define g_thread_get_initialized _frida_g_thread_get_initialized -#define g_thread_get_scheduler_settings _frida_g_thread_get_scheduler_settings #define g_thread_get_type _frida_g_thread_get_type #define g_thread_gettime _frida_g_thread_gettime #define g_thread_init_glib _frida_g_thread_init_glib @@ -3553,7 +3518,6 @@ #define g_thread_lifetime_beacon_check _frida_g_thread_lifetime_beacon_check #define g_thread_lifetime_beacon_free _frida_g_thread_lifetime_beacon_free #define g_thread_lifetime_beacon_new _frida_g_thread_lifetime_beacon_new -#define g_thread_n_created _frida_g_thread_n_created #define g_thread_new _frida_g_thread_new #define g_thread_new_internal _frida_g_thread_new_internal #define g_thread_perform_cleanup _frida_g_thread_perform_cleanup @@ -3614,7 +3578,6 @@ #define g_timer_continue _frida_g_timer_continue #define g_timer_destroy _frida_g_timer_destroy #define g_timer_elapsed _frida_g_timer_elapsed -#define g_timer_is_active _frida_g_timer_is_active #define g_timer_new _frida_g_timer_new #define g_timer_reset _frida_g_timer_reset #define g_timer_start _frida_g_timer_start @@ -3905,7 +3868,6 @@ #define g_unix_fd_message_steal_fds _frida_g_unix_fd_message_steal_fds #define g_unix_fd_source_funcs _frida_g_unix_fd_source_funcs #define g_unix_fd_source_new _frida_g_unix_fd_source_new -#define g_unix_get_passwd_entry _frida_g_unix_get_passwd_entry #define g_unix_input_stream_get_close_fd _frida_g_unix_input_stream_get_close_fd #define g_unix_input_stream_get_fd _frida_g_unix_input_stream_get_fd #define g_unix_input_stream_get_type _frida_g_unix_input_stream_get_type @@ -4353,7 +4315,6 @@ #define glib_deinit _frida_glib_deinit #define glib_fd_callbacks _frida_glib_fd_callbacks #define glib_gettext _frida_glib_gettext -#define glib_has_dconf_access_in_sandbox _frida_glib_has_dconf_access_in_sandbox #define glib_init _frida_glib_init #define glib_interface_age _frida_glib_interface_age #define glib_major_version _frida_glib_major_version @@ -4375,7 +4336,7 @@ #endif /* - * Copyright (C) 2008-2019 Ole André Vadla Ravnås + * Copyright (C) 2008-2018 Ole André Vadla Ravnås * * Licence: wxWindows Library Licence, Version 3.1 */ @@ -4384,7 +4345,7 @@ #define __GUM_H__ /* - * Copyright (C) 2008-2020 Ole André Vadla Ravnås + * Copyright (C) 2008-2018 Ole André Vadla Ravnås * * Licence: wxWindows Library Licence, Version 3.1 */ @@ -4413,6 +4374,7 @@ #define __GLIB_GOBJECT_H_INSIDE__ +/* topmost include file for GObject header files */ /* gbinding.h: Binding for object properties * * Copyright (C) 2010 Intel Corp. @@ -4637,15 +4599,17 @@ * Deprecated: 2.48: Use "static inline" instead */ +#ifndef G_DISABLE_DEPRECATED /* For historical reasons we need to continue to support those who * define G_IMPLEMENT_INLINES to mean "don't implement this here". */ #ifdef G_IMPLEMENT_INLINES -# define G_INLINE_FUNC extern GLIB_DEPRECATED_MACRO_IN_2_48_FOR(static inline) +# define G_INLINE_FUNC extern # undef G_CAN_INLINE #else -# define G_INLINE_FUNC static inline GLIB_DEPRECATED_MACRO_IN_2_48_FOR(static inline) +# define G_INLINE_FUNC static inline #endif /* G_IMPLEMENT_INLINES */ +#endif /* !G_DISABLE_DEPRECATED */ /* Provide macros to feature the GCC function attribute. */ @@ -5073,7 +5037,7 @@ /** * G_GNUC_FALLTHROUGH: * - * Expands to the GNU C `fallthrough` statement attribute if the compiler supports it. + * Expands to the GNU C `fallthrough` statement attribute if the compiler is gcc. * This allows declaring case statement to explicitly fall through in switch * statements. To enable this feature, use `-Wimplicit-fallthrough` during * compilation. @@ -5100,8 +5064,6 @@ */ #if __GNUC__ > 6 #define G_GNUC_FALLTHROUGH __attribute__((fallthrough)) -#elif g_macro__has_attribute (fallthrough) -#define G_GNUC_FALLTHROUGH __attribute__((fallthrough)) #else #define G_GNUC_FALLTHROUGH #endif /* __GNUC__ */ @@ -5124,7 +5086,7 @@ * * Since: 2.2 */ -#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1) || defined (__clang__) +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1) #define G_GNUC_DEPRECATED __attribute__((__deprecated__)) #else #define G_GNUC_DEPRECATED @@ -5153,7 +5115,7 @@ * * Since: 2.26 */ -#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) || defined (__clang__) +#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) #define G_GNUC_DEPRECATED_FOR(f) \ __attribute__((deprecated("Use " #f " instead"))) #else @@ -5172,7 +5134,7 @@ _Pragma ("GCC diagnostic ignored \"-Wdeprecated-declarations\"") #define G_GNUC_END_IGNORE_DEPRECATIONS \ _Pragma ("GCC diagnostic pop") -#elif defined (_MSC_VER) && (_MSC_VER >= 1500) && !defined (__clang__) +#elif defined (_MSC_VER) && (_MSC_VER >= 1500) #define G_GNUC_BEGIN_IGNORE_DEPRECATIONS \ __pragma (warning (push)) \ __pragma (warning (disable : 4996)) @@ -5230,38 +5192,19 @@ #define G_GNUC_WARN_UNUSED_RESULT #endif /* __GNUC__ */ -/** - * G_GNUC_FUNCTION: - * - * Expands to "" on all modern compilers, and to __FUNCTION__ on gcc - * version 2.x. Don't use it. - * - * Deprecated: 2.16: Use G_STRFUNC() instead - */ - -/** - * G_GNUC_PRETTY_FUNCTION: - * - * Expands to "" on all modern compilers, and to __PRETTY_FUNCTION__ - * on gcc version 2.x. Don't use it. - * - * Deprecated: 2.16: Use G_STRFUNC() instead - */ - +#ifndef G_DISABLE_DEPRECATED /* Wrap the gcc __PRETTY_FUNCTION__ and __FUNCTION__ variables with * macros, so we can refer to them as strings unconditionally. * usage not-recommended since gcc-3.0 - * - * Mark them as deprecated since 2.26, since that’s when version macros were - * introduced. */ #if defined (__GNUC__) && (__GNUC__ < 3) -#define G_GNUC_FUNCTION __FUNCTION__ GLIB_DEPRECATED_MACRO_IN_2_26_FOR(G_STRFUNC) -#define G_GNUC_PRETTY_FUNCTION __PRETTY_FUNCTION__ GLIB_DEPRECATED_MACRO_IN_2_26_FOR(G_STRFUNC) +#define G_GNUC_FUNCTION __FUNCTION__ +#define G_GNUC_PRETTY_FUNCTION __PRETTY_FUNCTION__ #else /* !__GNUC__ */ -#define G_GNUC_FUNCTION "" GLIB_DEPRECATED_MACRO_IN_2_26_FOR(G_STRFUNC) -#define G_GNUC_PRETTY_FUNCTION "" GLIB_DEPRECATED_MACRO_IN_2_26_FOR(G_STRFUNC) +#define G_GNUC_FUNCTION "" +#define G_GNUC_PRETTY_FUNCTION "" #endif /* !__GNUC__ */ +#endif /* !G_DISABLE_DEPRECATED */ #if g_macro__has_feature(attribute_analyzer_noreturn) && defined(__clang_analyzer__) #define G_ANALYZER_ANALYZING 1 @@ -5277,21 +5220,13 @@ #ifndef __GI_SCANNER__ /* The static assert macro really confuses the introspection parser */ #define G_PASTE_ARGS(identifier1,identifier2) identifier1 ## identifier2 #define G_PASTE(identifier1,identifier2) G_PASTE_ARGS (identifier1, identifier2) -#if !defined(__cplusplus) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L -#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false") -#elif (defined(__cplusplus) && __cplusplus >= 201103L) || \ - (defined(__cplusplus) && defined (_MSC_VER) && (_MSC_VER >= 1600)) || \ - (defined (_MSC_VER) && (_MSC_VER >= 1800)) -#define G_STATIC_ASSERT(expr) static_assert (expr, "Expression evaluates to false") -#else #ifdef __COUNTER__ #define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED #else #define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __LINE__)[(expr) ? 1 : -1] G_GNUC_UNUSED #endif -#endif /* __STDC_VERSION__ */ #define G_STATIC_ASSERT_EXPR(expr) ((void) sizeof (char[(expr) ? 1 : -1])) -#endif /* !__GI_SCANNER__ */ +#endif /* Provide a string identifying the current code position */ #if defined(__GNUC__) && (__GNUC__ < 3) && !defined(__cplusplus) @@ -5301,10 +5236,10 @@ #endif /* Provide a string identifying the current function, non-concatenatable */ -#if defined (__GNUC__) && defined (__cplusplus) -#define G_STRFUNC ((const char*) (__PRETTY_FUNCTION__)) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#if defined (__func__) #define G_STRFUNC ((const char*) (__func__)) +#elif defined (__GNUC__) && defined (__cplusplus) +#define G_STRFUNC ((const char*) (__PRETTY_FUNCTION__)) #elif defined (__GNUC__) || (defined(_MSC_VER) && (_MSC_VER > 1300)) #define G_STRFUNC ((const char*) (__FUNCTION__)) #else @@ -5435,26 +5370,14 @@ #define G_ALIGNOF(type) (G_STRUCT_OFFSET (struct { char a; type b; }, b)) #endif -/** - * G_CONST_RETURN: - * - * If %G_DISABLE_CONST_RETURNS is defined, this macro expands - * to nothing. By default, the macro expands to const. The macro - * can be used in place of const for functions that return a value - * that should not be modified. The purpose of this macro is to allow - * us to turn on const for returned constant strings by default, while - * allowing programmers who find that annoying to turn it off. This macro - * should only be used for return values and for "out" parameters, it - * doesn't make sense for "in" parameters. - * - * Deprecated: 2.30: API providers should replace all existing uses with - * const and API consumers should adjust their code accordingly - */ +/* Deprecated -- do not use. */ +#ifndef G_DISABLE_DEPRECATED #ifdef G_DISABLE_CONST_RETURNS -#define G_CONST_RETURN GLIB_DEPRECATED_MACRO_IN_2_30_FOR(const) +#define G_CONST_RETURN #else -#define G_CONST_RETURN const GLIB_DEPRECATED_MACRO_IN_2_30_FOR(const) +#define G_CONST_RETURN const #endif +#endif /* !G_DISABLE_DEPRECATED */ /* * The G_LIKELY and G_UNLIKELY macros let the programmer give hints to @@ -5481,7 +5404,7 @@ #define G_UNLIKELY(expr) (expr) #endif -#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1) || defined (__clang__) +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1) #define G_DEPRECATED __attribute__((__deprecated__)) #elif defined(_MSC_VER) && (_MSC_VER >= 1300) #define G_DEPRECATED __declspec(deprecated) @@ -5489,7 +5412,7 @@ #define G_DEPRECATED #endif -#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) || defined (__clang__) +#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) #define G_DEPRECATED_FOR(f) __attribute__((__deprecated__("Use '" #f "' instead"))) #elif defined(_MSC_FULL_VER) && (_MSC_FULL_VER > 140050320) #define G_DEPRECATED_FOR(f) __declspec(deprecated("is deprecated. Use '" #f "' instead")) @@ -5497,7 +5420,7 @@ #define G_DEPRECATED_FOR(f) G_DEPRECATED #endif -#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) || defined (__clang__) +#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) #define G_UNAVAILABLE(maj,min) __attribute__((deprecated("Not available before " #maj "." #min))) #elif defined(_MSC_FULL_VER) && (_MSC_FULL_VER > 140050320) #define G_UNAVAILABLE(maj,min) __declspec(deprecated("is not available before " #maj "." #min)) @@ -5509,7 +5432,7 @@ #define _GLIB_EXTERN extern #endif -/* These macros are used to mark deprecated symbols in GLib headers, +/* These macros are used to mark deprecated functions in GLib headers, * and thus have to be exposed in installed headers. But please * do *not* use them in other projects. Instead, use G_DEPRECATED * or define your own wrappers around it. @@ -5525,46 +5448,9 @@ #define GLIB_UNAVAILABLE(maj,min) G_UNAVAILABLE(maj,min) _GLIB_EXTERN #endif -#if !defined(GLIB_DISABLE_DEPRECATION_WARNINGS) && \ - (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) || \ - __clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 4)) -#define _GLIB_GNUC_DO_PRAGMA(x) _Pragma(G_STRINGIFY (x)) -#define GLIB_DEPRECATED_MACRO _GLIB_GNUC_DO_PRAGMA(GCC warning "Deprecated pre-processor symbol") -#define GLIB_DEPRECATED_MACRO_FOR(f) _GLIB_GNUC_DO_PRAGMA(GCC warning "Deprecated pre-processor symbol, replace with " #f) -#define GLIB_UNAVAILABLE_MACRO(maj,min) _GLIB_GNUC_DO_PRAGMA(GCC warning "Not available before " #maj "." #min) -#else -#define GLIB_DEPRECATED_MACRO -#define GLIB_DEPRECATED_MACRO_FOR(f) -#define GLIB_UNAVAILABLE_MACRO(maj,min) -#endif - -#if !defined(GLIB_DISABLE_DEPRECATION_WARNINGS) && \ - ((defined (__GNUC__) && (__GNUC__ > 6 || (__GNUC__ == 6 && __GNUC_MINOR__ >= 1))) || \ - (defined (__clang_major__) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 0)))) -#define GLIB_DEPRECATED_ENUMERATOR G_DEPRECATED -#define GLIB_DEPRECATED_ENUMERATOR_FOR(f) G_DEPRECATED_FOR(f) -#define GLIB_UNAVAILABLE_ENUMERATOR(maj,min) G_UNAVAILABLE(maj,min) -#else -#define GLIB_DEPRECATED_ENUMERATOR -#define GLIB_DEPRECATED_ENUMERATOR_FOR(f) -#define GLIB_UNAVAILABLE_ENUMERATOR(maj,min) -#endif - -#if !defined(GLIB_DISABLE_DEPRECATION_WARNINGS) && \ - ((defined (__GNUC__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))) || \ - (defined (__clang_major__) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 0)))) -#define GLIB_DEPRECATED_TYPE G_DEPRECATED -#define GLIB_DEPRECATED_TYPE_FOR(f) G_DEPRECATED_FOR(f) -#define GLIB_UNAVAILABLE_TYPE(maj,min) G_UNAVAILABLE(maj,min) -#else -#define GLIB_DEPRECATED_TYPE -#define GLIB_DEPRECATED_TYPE_FOR(f) -#define GLIB_UNAVAILABLE_TYPE(maj,min) -#endif - #ifndef __GI_SCANNER__ -#if defined (__GNUC__) || defined (__clang__) +#ifdef __GNUC__ /* these macros are private */ #define _GLIB_AUTOPTR_FUNC_NAME(TypeName) glib_autoptr_cleanup_##TypeName @@ -5574,15 +5460,12 @@ #define _GLIB_AUTOPTR_LIST_TYPENAME(TypeName) TypeName##_listautoptr #define _GLIB_AUTOPTR_SLIST_FUNC_NAME(TypeName) glib_slistautoptr_cleanup_##TypeName #define _GLIB_AUTOPTR_SLIST_TYPENAME(TypeName) TypeName##_slistautoptr -#define _GLIB_AUTOPTR_QUEUE_FUNC_NAME(TypeName) glib_queueautoptr_cleanup_##TypeName -#define _GLIB_AUTOPTR_QUEUE_TYPENAME(TypeName) TypeName##_queueautoptr #define _GLIB_AUTO_FUNC_NAME(TypeName) glib_auto_cleanup_##TypeName #define _GLIB_CLEANUP(func) __attribute__((cleanup(func))) #define _GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS(TypeName, ParentName, cleanup) \ typedef TypeName *_GLIB_AUTOPTR_TYPENAME(TypeName); \ typedef GList *_GLIB_AUTOPTR_LIST_TYPENAME(TypeName); \ typedef GSList *_GLIB_AUTOPTR_SLIST_TYPENAME(TypeName); \ - typedef GQueue *_GLIB_AUTOPTR_QUEUE_TYPENAME(TypeName); \ G_GNUC_BEGIN_IGNORE_DEPRECATIONS \ static G_GNUC_UNUSED inline void _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (TypeName *_ptr) \ { if (_ptr) (cleanup) ((ParentName *) _ptr); } \ @@ -5592,8 +5475,6 @@ { g_list_free_full (*_l, (GDestroyNotify) (void(*)(void)) cleanup); } \ static G_GNUC_UNUSED inline void _GLIB_AUTOPTR_SLIST_FUNC_NAME(TypeName) (GSList **_l) \ { g_slist_free_full (*_l, (GDestroyNotify) (void(*)(void)) cleanup); } \ - static G_GNUC_UNUSED inline void _GLIB_AUTOPTR_QUEUE_FUNC_NAME(TypeName) (GQueue **_q) \ - { if (*_q) g_queue_free_full (*_q, (GDestroyNotify) (void(*)(void)) cleanup); } \ G_GNUC_END_IGNORE_DEPRECATIONS #define _GLIB_DEFINE_AUTOPTR_CHAINUP(ModuleObjName, ParentName) \ _GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS(ModuleObjName, ParentName, _GLIB_AUTOPTR_CLEAR_FUNC_NAME(ParentName)) @@ -5604,16 +5485,15 @@ _GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS(TypeName, TypeName, func) #define G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(TypeName, func) \ G_GNUC_BEGIN_IGNORE_DEPRECATIONS \ - static G_GNUC_UNUSED inline void _GLIB_AUTO_FUNC_NAME(TypeName) (TypeName *_ptr) { (func) (_ptr); } \ + static inline void _GLIB_AUTO_FUNC_NAME(TypeName) (TypeName *_ptr) { (func) (_ptr); } \ G_GNUC_END_IGNORE_DEPRECATIONS #define G_DEFINE_AUTO_CLEANUP_FREE_FUNC(TypeName, func, none) \ G_GNUC_BEGIN_IGNORE_DEPRECATIONS \ - static G_GNUC_UNUSED inline void _GLIB_AUTO_FUNC_NAME(TypeName) (TypeName *_ptr) { if (*_ptr != none) (func) (*_ptr); } \ + static inline void _GLIB_AUTO_FUNC_NAME(TypeName) (TypeName *_ptr) { if (*_ptr != none) (func) (*_ptr); } \ G_GNUC_END_IGNORE_DEPRECATIONS #define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName) #define g_autolist(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_LIST_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_LIST_TYPENAME(TypeName) #define g_autoslist(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_SLIST_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_SLIST_TYPENAME(TypeName) -#define g_autoqueue(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_QUEUE_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_QUEUE_TYPENAME(TypeName) #define g_auto(TypeName) _GLIB_CLEANUP(_GLIB_AUTO_FUNC_NAME(TypeName)) TypeName #define g_autofree _GLIB_CLEANUP(g_autoptr_cleanup_generic_gfree) @@ -5639,22 +5519,6 @@ #endif /* __GI_SCANNER__ */ -/** - * G_SIZEOF_MEMBER: - * @struct_type: a structure type, e.g. #GOutputVector - * @member: a field in the structure, e.g. `size` - * - * Returns the size of @member in the struct definition without having a - * declared instance of @struct_type. - * - * Returns: the size of @member in bytes. - * - * Since: 2.64 - */ -#define G_SIZEOF_MEMBER(struct_type, member) \ - GLIB_AVAILABLE_MACRO_IN_2_64 \ - sizeof (((struct_type *) 0)->member) - #endif /* __G_MACROS_H__ */ #include @@ -5758,8 +5622,13 @@ typedef unsigned int guintptr; #define G_GINTPTR_FORMAT "i" #define G_GUINTPTR_FORMAT "u" +#ifndef G_DISABLE_DEPRECATED +#define g_ATEXIT(proc) (atexit (proc)) +#define g_memmove(dest,src,len) G_STMT_START { memmove ((dest), (src), (len)); } G_STMT_END +#endif + #define GLIB_MAJOR_VERSION 2 -#define GLIB_MINOR_VERSION 65 +#define GLIB_MINOR_VERSION 61 #define GLIB_MICRO_VERSION 0 #define G_OS_UNIX @@ -6090,26 +5959,6 @@ G_END_DECLS */ #define GLIB_VERSION_2_62 (G_ENCODE_VERSION (2, 62)) -/** - * GLIB_VERSION_2_64: - * - * A macro that evaluates to the 2.64 version of GLib, in a format - * that can be used by the C pre-processor. - * - * Since: 2.64 - */ -#define GLIB_VERSION_2_64 (G_ENCODE_VERSION (2, 64)) - -/** - * GLIB_VERSION_2_66: - * - * A macro that evaluates to the 2.66 version of GLib, in a format - * that can be used by the C pre-processor. - * - * Since: 2.66 - */ -#define GLIB_VERSION_2_66 (G_ENCODE_VERSION (2, 66)) - /* evaluates to the current stable version; for development cycles, * this means the next stable target */ @@ -6204,669 +6053,267 @@ G_END_DECLS #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_26 # define GLIB_DEPRECATED_IN_2_26 GLIB_DEPRECATED # define GLIB_DEPRECATED_IN_2_26_FOR(f) GLIB_DEPRECATED_FOR(f) -# define GLIB_DEPRECATED_MACRO_IN_2_26 GLIB_DEPRECATED_MACRO -# define GLIB_DEPRECATED_MACRO_IN_2_26_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_26 GLIB_DEPRECATED_ENUMERATOR -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_26_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_26 GLIB_DEPRECATED_TYPE -# define GLIB_DEPRECATED_TYPE_IN_2_26_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) #else # define GLIB_DEPRECATED_IN_2_26 _GLIB_EXTERN # define GLIB_DEPRECATED_IN_2_26_FOR(f) _GLIB_EXTERN -# define GLIB_DEPRECATED_MACRO_IN_2_26 -# define GLIB_DEPRECATED_MACRO_IN_2_26_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_26 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_26_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_26 -# define GLIB_DEPRECATED_TYPE_IN_2_26_FOR(f) #endif #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_26 # define GLIB_AVAILABLE_IN_2_26 GLIB_UNAVAILABLE(2, 26) -# define GLIB_AVAILABLE_MACRO_IN_2_26 GLIB_UNAVAILABLE_MACRO(2, 26) -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_26 GLIB_UNAVAILABLE_ENUMERATOR(2, 26) -# define GLIB_AVAILABLE_TYPE_IN_2_26 GLIB_UNAVAILABLE_TYPE(2, 26) #else # define GLIB_AVAILABLE_IN_2_26 _GLIB_EXTERN -# define GLIB_AVAILABLE_MACRO_IN_2_26 -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_26 -# define GLIB_AVAILABLE_TYPE_IN_2_26 #endif #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_28 # define GLIB_DEPRECATED_IN_2_28 GLIB_DEPRECATED # define GLIB_DEPRECATED_IN_2_28_FOR(f) GLIB_DEPRECATED_FOR(f) -# define GLIB_DEPRECATED_MACRO_IN_2_28 GLIB_DEPRECATED_MACRO -# define GLIB_DEPRECATED_MACRO_IN_2_28_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_28 GLIB_DEPRECATED_ENUMERATOR -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_28_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_28 GLIB_DEPRECATED_TYPE -# define GLIB_DEPRECATED_TYPE_IN_2_28_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) #else # define GLIB_DEPRECATED_IN_2_28 _GLIB_EXTERN # define GLIB_DEPRECATED_IN_2_28_FOR(f) _GLIB_EXTERN -# define GLIB_DEPRECATED_MACRO_IN_2_28 -# define GLIB_DEPRECATED_MACRO_IN_2_28_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_28 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_28_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_28 -# define GLIB_DEPRECATED_TYPE_IN_2_28_FOR(f) #endif #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_28 # define GLIB_AVAILABLE_IN_2_28 GLIB_UNAVAILABLE(2, 28) -# define GLIB_AVAILABLE_MACRO_IN_2_28 GLIB_UNAVAILABLE_MACRO(2, 28) -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_28 GLIB_UNAVAILABLE_ENUMERATOR(2, 28) -# define GLIB_AVAILABLE_TYPE_IN_2_28 GLIB_UNAVAILABLE_TYPE(2, 28) #else # define GLIB_AVAILABLE_IN_2_28 _GLIB_EXTERN -# define GLIB_AVAILABLE_MACRO_IN_2_28 -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_28 -# define GLIB_AVAILABLE_TYPE_IN_2_28 #endif #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_30 # define GLIB_DEPRECATED_IN_2_30 GLIB_DEPRECATED # define GLIB_DEPRECATED_IN_2_30_FOR(f) GLIB_DEPRECATED_FOR(f) -# define GLIB_DEPRECATED_MACRO_IN_2_30 GLIB_DEPRECATED_MACRO -# define GLIB_DEPRECATED_MACRO_IN_2_30_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_30 GLIB_DEPRECATED_ENUMERATOR -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_30_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_30 GLIB_DEPRECATED_TYPE -# define GLIB_DEPRECATED_TYPE_IN_2_30_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) #else # define GLIB_DEPRECATED_IN_2_30 _GLIB_EXTERN # define GLIB_DEPRECATED_IN_2_30_FOR(f) _GLIB_EXTERN -# define GLIB_DEPRECATED_MACRO_IN_2_30 -# define GLIB_DEPRECATED_MACRO_IN_2_30_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_30 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_30_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_30 -# define GLIB_DEPRECATED_TYPE_IN_2_30_FOR(f) #endif #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_30 # define GLIB_AVAILABLE_IN_2_30 GLIB_UNAVAILABLE(2, 30) -# define GLIB_AVAILABLE_MACRO_IN_2_30 GLIB_UNAVAILABLE_MACRO(2, 30) -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_30 GLIB_UNAVAILABLE_ENUMERATOR(2, 30) -# define GLIB_AVAILABLE_TYPE_IN_2_30 GLIB_UNAVAILABLE_TYPE(2, 30) #else # define GLIB_AVAILABLE_IN_2_30 _GLIB_EXTERN -# define GLIB_AVAILABLE_MACRO_IN_2_30 -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_30 -# define GLIB_AVAILABLE_TYPE_IN_2_30 #endif #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_32 # define GLIB_DEPRECATED_IN_2_32 GLIB_DEPRECATED # define GLIB_DEPRECATED_IN_2_32_FOR(f) GLIB_DEPRECATED_FOR(f) -# define GLIB_DEPRECATED_MACRO_IN_2_32 GLIB_DEPRECATED_MACRO -# define GLIB_DEPRECATED_MACRO_IN_2_32_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_32 GLIB_DEPRECATED_ENUMERATOR -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_32_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_32 GLIB_DEPRECATED_TYPE -# define GLIB_DEPRECATED_TYPE_IN_2_32_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) #else # define GLIB_DEPRECATED_IN_2_32 _GLIB_EXTERN # define GLIB_DEPRECATED_IN_2_32_FOR(f) _GLIB_EXTERN -# define GLIB_DEPRECATED_MACRO_IN_2_32 -# define GLIB_DEPRECATED_MACRO_IN_2_32_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_32 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_32_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_32 -# define GLIB_DEPRECATED_TYPE_IN_2_32_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_32 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_32_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_32 -# define GLIB_DEPRECATED_TYPE_IN_2_32_FOR(f) #endif #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_32 # define GLIB_AVAILABLE_IN_2_32 GLIB_UNAVAILABLE(2, 32) -# define GLIB_AVAILABLE_MACRO_IN_2_32 GLIB_UNAVAILABLE_MACRO(2, 32) -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_32 GLIB_UNAVAILABLE_ENUMERATOR(2, 32) -# define GLIB_AVAILABLE_TYPE_IN_2_32 GLIB_UNAVAILABLE_TYPE(2, 32) #else # define GLIB_AVAILABLE_IN_2_32 _GLIB_EXTERN -# define GLIB_AVAILABLE_MACRO_IN_2_32 -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_32 -# define GLIB_AVAILABLE_TYPE_IN_2_32 #endif #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_34 # define GLIB_DEPRECATED_IN_2_34 GLIB_DEPRECATED # define GLIB_DEPRECATED_IN_2_34_FOR(f) GLIB_DEPRECATED_FOR(f) -# define GLIB_DEPRECATED_MACRO_IN_2_34 GLIB_DEPRECATED_MACRO -# define GLIB_DEPRECATED_MACRO_IN_2_34_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_34 GLIB_DEPRECATED_ENUMERATOR -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_34_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_34 GLIB_DEPRECATED_TYPE -# define GLIB_DEPRECATED_TYPE_IN_2_34_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) #else # define GLIB_DEPRECATED_IN_2_34 _GLIB_EXTERN # define GLIB_DEPRECATED_IN_2_34_FOR(f) _GLIB_EXTERN -# define GLIB_DEPRECATED_MACRO_IN_2_34 -# define GLIB_DEPRECATED_MACRO_IN_2_34_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_34 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_34_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_34 -# define GLIB_DEPRECATED_TYPE_IN_2_34_FOR(f) #endif #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_34 # define GLIB_AVAILABLE_IN_2_34 GLIB_UNAVAILABLE(2, 34) -# define GLIB_AVAILABLE_MACRO_IN_2_34 GLIB_UNAVAILABLE_MACRO(2, 34) -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_34 GLIB_UNAVAILABLE_ENUMERATOR(2, 34) -# define GLIB_AVAILABLE_TYPE_IN_2_34 GLIB_UNAVAILABLE_TYPE(2, 34) #else # define GLIB_AVAILABLE_IN_2_34 _GLIB_EXTERN -# define GLIB_AVAILABLE_MACRO_IN_2_34 -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_34 -# define GLIB_AVAILABLE_TYPE_IN_2_34 #endif #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_36 # define GLIB_DEPRECATED_IN_2_36 GLIB_DEPRECATED # define GLIB_DEPRECATED_IN_2_36_FOR(f) GLIB_DEPRECATED_FOR(f) -# define GLIB_DEPRECATED_MACRO_IN_2_36 GLIB_DEPRECATED_MACRO -# define GLIB_DEPRECATED_MACRO_IN_2_36_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_36 GLIB_DEPRECATED_ENUMERATOR -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_36_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_36 GLIB_DEPRECATED_TYPE -# define GLIB_DEPRECATED_TYPE_IN_2_36_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) #else # define GLIB_DEPRECATED_IN_2_36 _GLIB_EXTERN # define GLIB_DEPRECATED_IN_2_36_FOR(f) _GLIB_EXTERN -# define GLIB_DEPRECATED_MACRO_IN_2_36 -# define GLIB_DEPRECATED_MACRO_IN_2_36_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_36 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_36_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_36 -# define GLIB_DEPRECATED_TYPE_IN_2_36_FOR(f) #endif #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_36 # define GLIB_AVAILABLE_IN_2_36 GLIB_UNAVAILABLE(2, 36) -# define GLIB_AVAILABLE_MACRO_IN_2_36 GLIB_UNAVAILABLE_MACRO(2, 36) -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_36 GLIB_UNAVAILABLE_ENUMERATOR(2, 36) -# define GLIB_AVAILABLE_TYPE_IN_2_36 GLIB_UNAVAILABLE_TYPE(2, 36) #else # define GLIB_AVAILABLE_IN_2_36 _GLIB_EXTERN -# define GLIB_AVAILABLE_MACRO_IN_2_36 -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_36 -# define GLIB_AVAILABLE_TYPE_IN_2_36 #endif #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_38 # define GLIB_DEPRECATED_IN_2_38 GLIB_DEPRECATED # define GLIB_DEPRECATED_IN_2_38_FOR(f) GLIB_DEPRECATED_FOR(f) -# define GLIB_DEPRECATED_MACRO_IN_2_38 GLIB_DEPRECATED_MACRO -# define GLIB_DEPRECATED_MACRO_IN_2_38_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_38 GLIB_DEPRECATED_ENUMERATOR -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_38_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_38 GLIB_DEPRECATED_TYPE -# define GLIB_DEPRECATED_TYPE_IN_2_38_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) #else # define GLIB_DEPRECATED_IN_2_38 _GLIB_EXTERN # define GLIB_DEPRECATED_IN_2_38_FOR(f) _GLIB_EXTERN -# define GLIB_DEPRECATED_MACRO_IN_2_38 -# define GLIB_DEPRECATED_MACRO_IN_2_38_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_38 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_38_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_38 -# define GLIB_DEPRECATED_TYPE_IN_2_38_FOR(f) #endif #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 # define GLIB_AVAILABLE_IN_2_38 GLIB_UNAVAILABLE(2, 38) -# define GLIB_AVAILABLE_MACRO_IN_2_38 GLIB_UNAVAILABLE_MACRO(2, 38) -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_38 GLIB_UNAVAILABLE_ENUMERATOR(2, 38) -# define GLIB_AVAILABLE_TYPE_IN_2_38 GLIB_UNAVAILABLE_TYPE(2, 38) #else # define GLIB_AVAILABLE_IN_2_38 _GLIB_EXTERN -# define GLIB_AVAILABLE_MACRO_IN_2_38 -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_38 -# define GLIB_AVAILABLE_TYPE_IN_2_38 #endif #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_40 # define GLIB_DEPRECATED_IN_2_40 GLIB_DEPRECATED # define GLIB_DEPRECATED_IN_2_40_FOR(f) GLIB_DEPRECATED_FOR(f) -# define GLIB_DEPRECATED_MACRO_IN_2_40 GLIB_DEPRECATED_MACRO -# define GLIB_DEPRECATED_MACRO_IN_2_40_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_40 GLIB_DEPRECATED_ENUMERATOR -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_40_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_40 GLIB_DEPRECATED_TYPE -# define GLIB_DEPRECATED_TYPE_IN_2_40_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) #else # define GLIB_DEPRECATED_IN_2_40 _GLIB_EXTERN # define GLIB_DEPRECATED_IN_2_40_FOR(f) _GLIB_EXTERN -# define GLIB_DEPRECATED_MACRO_IN_2_40 -# define GLIB_DEPRECATED_MACRO_IN_2_40_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_40 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_40_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_40 -# define GLIB_DEPRECATED_TYPE_IN_2_40_FOR(f) #endif #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_40 # define GLIB_AVAILABLE_IN_2_40 GLIB_UNAVAILABLE(2, 40) -# define GLIB_AVAILABLE_MACRO_IN_2_40 GLIB_UNAVAILABLE_MACRO(2, 40) -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_40 GLIB_UNAVAILABLE_ENUMERATOR(2, 40) -# define GLIB_AVAILABLE_TYPE_IN_2_40 GLIB_UNAVAILABLE_TYPE(2, 40) #else # define GLIB_AVAILABLE_IN_2_40 _GLIB_EXTERN -# define GLIB_AVAILABLE_MACRO_IN_2_40 -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_40 -# define GLIB_AVAILABLE_TYPE_IN_2_40 #endif #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_42 # define GLIB_DEPRECATED_IN_2_42 GLIB_DEPRECATED # define GLIB_DEPRECATED_IN_2_42_FOR(f) GLIB_DEPRECATED_FOR(f) -# define GLIB_DEPRECATED_MACRO_IN_2_42 GLIB_DEPRECATED_MACRO -# define GLIB_DEPRECATED_MACRO_IN_2_42_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) #else # define GLIB_DEPRECATED_IN_2_42 _GLIB_EXTERN # define GLIB_DEPRECATED_IN_2_42_FOR(f) _GLIB_EXTERN -# define GLIB_DEPRECATED_MACRO_IN_2_42 -# define GLIB_DEPRECATED_MACRO_IN_2_42_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_42 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_42_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_42 -# define GLIB_DEPRECATED_TYPE_IN_2_42_FOR(f) #endif #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_42 # define GLIB_AVAILABLE_IN_2_42 GLIB_UNAVAILABLE(2, 42) -# define GLIB_AVAILABLE_MACRO_IN_2_42 GLIB_UNAVAILABLE_MACRO(2, 42) -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_42 GLIB_UNAVAILABLE_ENUMERATOR(2, 42) -# define GLIB_AVAILABLE_TYPE_IN_2_42 GLIB_UNAVAILABLE_TYPE(2, 42) #else # define GLIB_AVAILABLE_IN_2_42 _GLIB_EXTERN -# define GLIB_AVAILABLE_MACRO_IN_2_42 -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_42 -# define GLIB_AVAILABLE_TYPE_IN_2_42 #endif #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_44 # define GLIB_DEPRECATED_IN_2_44 GLIB_DEPRECATED # define GLIB_DEPRECATED_IN_2_44_FOR(f) GLIB_DEPRECATED_FOR(f) -# define GLIB_DEPRECATED_MACRO_IN_2_44 GLIB_DEPRECATED_MACRO -# define GLIB_DEPRECATED_MACRO_IN_2_44_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_44 GLIB_DEPRECATED_ENUMERATOR -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_44_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_44 GLIB_DEPRECATED_TYPE -# define GLIB_DEPRECATED_TYPE_IN_2_44_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) #else # define GLIB_DEPRECATED_IN_2_44 _GLIB_EXTERN # define GLIB_DEPRECATED_IN_2_44_FOR(f) _GLIB_EXTERN -# define GLIB_DEPRECATED_MACRO_IN_2_44 -# define GLIB_DEPRECATED_MACRO_IN_2_44_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_44 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_44_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_44 -# define GLIB_DEPRECATED_TYPE_IN_2_44_FOR(f) #endif #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_44 # define GLIB_AVAILABLE_IN_2_44 GLIB_UNAVAILABLE(2, 44) -# define GLIB_AVAILABLE_MACRO_IN_2_44 GLIB_UNAVAILABLE_MACRO(2, 44) -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_44 GLIB_UNAVAILABLE_ENUMERATOR(2, 44) -# define GLIB_AVAILABLE_TYPE_IN_2_44 GLIB_UNAVAILABLE_TYPE(2, 44) #else # define GLIB_AVAILABLE_IN_2_44 _GLIB_EXTERN -# define GLIB_AVAILABLE_MACRO_IN_2_44 -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_44 -# define GLIB_AVAILABLE_TYPE_IN_2_44 #endif #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_46 # define GLIB_DEPRECATED_IN_2_46 GLIB_DEPRECATED # define GLIB_DEPRECATED_IN_2_46_FOR(f) GLIB_DEPRECATED_FOR(f) -# define GLIB_DEPRECATED_MACRO_IN_2_46 GLIB_DEPRECATED_MACRO -# define GLIB_DEPRECATED_MACRO_IN_2_46_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) #else # define GLIB_DEPRECATED_IN_2_46 _GLIB_EXTERN # define GLIB_DEPRECATED_IN_2_46_FOR(f) _GLIB_EXTERN -# define GLIB_DEPRECATED_MACRO_IN_2_46 -# define GLIB_DEPRECATED_MACRO_IN_2_46_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_46 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_46_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_46 -# define GLIB_DEPRECATED_TYPE_IN_2_46_FOR(f) #endif #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_46 # define GLIB_AVAILABLE_IN_2_46 GLIB_UNAVAILABLE(2, 46) -# define GLIB_AVAILABLE_MACRO_IN_2_46 GLIB_UNAVAILABLE_MACRO(2, 46) -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_46 GLIB_UNAVAILABLE_ENUMERATOR(2, 46) -# define GLIB_AVAILABLE_TYPE_IN_2_46 GLIB_UNAVAILABLE_TYPE(2, 46) #else # define GLIB_AVAILABLE_IN_2_46 _GLIB_EXTERN -# define GLIB_AVAILABLE_MACRO_IN_2_46 -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_46 -# define GLIB_AVAILABLE_TYPE_IN_2_46 #endif #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_48 # define GLIB_DEPRECATED_IN_2_48 GLIB_DEPRECATED # define GLIB_DEPRECATED_IN_2_48_FOR(f) GLIB_DEPRECATED_FOR(f) -# define GLIB_DEPRECATED_MACRO_IN_2_48 GLIB_DEPRECATED_MACRO -# define GLIB_DEPRECATED_MACRO_IN_2_48_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_48 GLIB_DEPRECATED_ENUMERATOR -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_48_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_48 GLIB_DEPRECATED_TYPE -# define GLIB_DEPRECATED_TYPE_IN_2_48_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) #else # define GLIB_DEPRECATED_IN_2_48 _GLIB_EXTERN # define GLIB_DEPRECATED_IN_2_48_FOR(f) _GLIB_EXTERN -# define GLIB_DEPRECATED_MACRO_IN_2_48 -# define GLIB_DEPRECATED_MACRO_IN_2_48_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_48 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_48_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_48 -# define GLIB_DEPRECATED_TYPE_IN_2_48_FOR(f) #endif #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_48 # define GLIB_AVAILABLE_IN_2_48 GLIB_UNAVAILABLE(2, 48) -# define GLIB_AVAILABLE_MACRO_IN_2_48 GLIB_UNAVAILABLE_MACRO(2, 48) -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_48 GLIB_UNAVAILABLE_ENUMERATOR(2, 48) -# define GLIB_AVAILABLE_TYPE_IN_2_48 GLIB_UNAVAILABLE_TYPE(2, 48) #else # define GLIB_AVAILABLE_IN_2_48 _GLIB_EXTERN -# define GLIB_AVAILABLE_MACRO_IN_2_48 -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_48 -# define GLIB_AVAILABLE_TYPE_IN_2_48 #endif #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_50 # define GLIB_DEPRECATED_IN_2_50 GLIB_DEPRECATED # define GLIB_DEPRECATED_IN_2_50_FOR(f) GLIB_DEPRECATED_FOR(f) -# define GLIB_DEPRECATED_MACRO_IN_2_50 GLIB_DEPRECATED_MACRO -# define GLIB_DEPRECATED_MACRO_IN_2_50_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_50 GLIB_DEPRECATED_ENUMERATOR -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_50_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_50 GLIB_DEPRECATED_TYPE -# define GLIB_DEPRECATED_TYPE_IN_2_50_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) #else # define GLIB_DEPRECATED_IN_2_50 _GLIB_EXTERN # define GLIB_DEPRECATED_IN_2_50_FOR(f) _GLIB_EXTERN -# define GLIB_DEPRECATED_MACRO_IN_2_50 -# define GLIB_DEPRECATED_MACRO_IN_2_50_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_50 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_50_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_50 -# define GLIB_DEPRECATED_TYPE_IN_2_50_FOR(f) #endif #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_50 # define GLIB_AVAILABLE_IN_2_50 GLIB_UNAVAILABLE(2, 50) -# define GLIB_AVAILABLE_MACRO_IN_2_50 GLIB_UNAVAILABLE_MACRO(2, 50) -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_50 GLIB_UNAVAILABLE_ENUMERATOR(2, 50) -# define GLIB_AVAILABLE_TYPE_IN_2_50 GLIB_UNAVAILABLE_TYPE(2, 50) #else # define GLIB_AVAILABLE_IN_2_50 _GLIB_EXTERN -# define GLIB_AVAILABLE_MACRO_IN_2_50 -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_50 -# define GLIB_AVAILABLE_TYPE_IN_2_50 #endif #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_52 # define GLIB_DEPRECATED_IN_2_52 GLIB_DEPRECATED # define GLIB_DEPRECATED_IN_2_52_FOR(f) GLIB_DEPRECATED_FOR(f) -# define GLIB_DEPRECATED_MACRO_IN_2_52 GLIB_DEPRECATED_MACRO -# define GLIB_DEPRECATED_MACRO_IN_2_52_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_52 GLIB_DEPRECATED_ENUMERATOR -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_52_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_52 GLIB_DEPRECATED_TYPE -# define GLIB_DEPRECATED_TYPE_IN_2_52_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) #else # define GLIB_DEPRECATED_IN_2_52 _GLIB_EXTERN # define GLIB_DEPRECATED_IN_2_52_FOR(f) _GLIB_EXTERN -# define GLIB_DEPRECATED_MACRO_IN_2_52 -# define GLIB_DEPRECATED_MACRO_IN_2_52_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_52 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_52_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_52 -# define GLIB_DEPRECATED_TYPE_IN_2_52_FOR(f) #endif #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_52 # define GLIB_AVAILABLE_IN_2_52 GLIB_UNAVAILABLE(2, 52) -# define GLIB_AVAILABLE_MACRO_IN_2_52 GLIB_UNAVAILABLE_MACRO(2, 52) -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_52 GLIB_UNAVAILABLE_ENUMERATOR(2, 52) -# define GLIB_AVAILABLE_TYPE_IN_2_52 GLIB_UNAVAILABLE_TYPE(2, 52) #else # define GLIB_AVAILABLE_IN_2_52 _GLIB_EXTERN -# define GLIB_AVAILABLE_MACRO_IN_2_52 -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_52 -# define GLIB_AVAILABLE_TYPE_IN_2_52 #endif #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_54 # define GLIB_DEPRECATED_IN_2_54 GLIB_DEPRECATED # define GLIB_DEPRECATED_IN_2_54_FOR(f) GLIB_DEPRECATED_FOR(f) -# define GLIB_DEPRECATED_MACRO_IN_2_54 GLIB_DEPRECATED_MACRO -# define GLIB_DEPRECATED_MACRO_IN_2_54_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_54 GLIB_DEPRECATED_ENUMERATOR -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_54_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_54 GLIB_DEPRECATED_TYPE -# define GLIB_DEPRECATED_TYPE_IN_2_54_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) #else # define GLIB_DEPRECATED_IN_2_54 _GLIB_EXTERN # define GLIB_DEPRECATED_IN_2_54_FOR(f) _GLIB_EXTERN -# define GLIB_DEPRECATED_MACRO_IN_2_54 -# define GLIB_DEPRECATED_MACRO_IN_2_54_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_54 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_54_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_54 -# define GLIB_DEPRECATED_TYPE_IN_2_54_FOR(f) #endif #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_54 # define GLIB_AVAILABLE_IN_2_54 GLIB_UNAVAILABLE(2, 54) -# define GLIB_AVAILABLE_MACRO_IN_2_54 GLIB_UNAVAILABLE_MACRO(2, 54) -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_54 GLIB_UNAVAILABLE_ENUMERATOR(2, 54) -# define GLIB_AVAILABLE_TYPE_IN_2_54 GLIB_UNAVAILABLE_TYPE(2, 54) #else # define GLIB_AVAILABLE_IN_2_54 _GLIB_EXTERN -# define GLIB_AVAILABLE_MACRO_IN_2_54 -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_54 -# define GLIB_AVAILABLE_TYPE_IN_2_54 #endif #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_56 # define GLIB_DEPRECATED_IN_2_56 GLIB_DEPRECATED # define GLIB_DEPRECATED_IN_2_56_FOR(f) GLIB_DEPRECATED_FOR(f) -# define GLIB_DEPRECATED_MACRO_IN_2_56 GLIB_DEPRECATED_MACRO -# define GLIB_DEPRECATED_MACRO_IN_2_56_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_56 GLIB_DEPRECATED_ENUMERATOR -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_56_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_56 GLIB_DEPRECATED_TYPE -# define GLIB_DEPRECATED_TYPE_IN_2_56_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) #else # define GLIB_DEPRECATED_IN_2_56 _GLIB_EXTERN # define GLIB_DEPRECATED_IN_2_56_FOR(f) _GLIB_EXTERN -# define GLIB_DEPRECATED_MACRO_IN_2_56 -# define GLIB_DEPRECATED_MACRO_IN_2_56_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_56 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_56_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_56 -# define GLIB_DEPRECATED_TYPE_IN_2_56_FOR(f) #endif #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_56 # define GLIB_AVAILABLE_IN_2_56 GLIB_UNAVAILABLE(2, 56) -# define GLIB_AVAILABLE_MACRO_IN_2_56 GLIB_UNAVAILABLE_MACRO(2, 56) -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_56 GLIB_UNAVAILABLE_ENUMERATOR(2, 56) -# define GLIB_AVAILABLE_TYPE_IN_2_56 GLIB_UNAVAILABLE_TYPE(2, 56) #else # define GLIB_AVAILABLE_IN_2_56 _GLIB_EXTERN -# define GLIB_AVAILABLE_MACRO_IN_2_56 -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_56 -# define GLIB_AVAILABLE_TYPE_IN_2_56 #endif #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_58 # define GLIB_DEPRECATED_IN_2_58 GLIB_DEPRECATED # define GLIB_DEPRECATED_IN_2_58_FOR(f) GLIB_DEPRECATED_FOR(f) -# define GLIB_DEPRECATED_MACRO_IN_2_58 GLIB_DEPRECATED_MACRO -# define GLIB_DEPRECATED_MACRO_IN_2_58_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_58 GLIB_DEPRECATED_ENUMERATOR -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_58_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_58 GLIB_DEPRECATED_TYPE -# define GLIB_DEPRECATED_TYPE_IN_2_58_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) #else # define GLIB_DEPRECATED_IN_2_58 _GLIB_EXTERN # define GLIB_DEPRECATED_IN_2_58_FOR(f) _GLIB_EXTERN -# define GLIB_DEPRECATED_MACRO_IN_2_58 -# define GLIB_DEPRECATED_MACRO_IN_2_58_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_58 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_58_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_58 -# define GLIB_DEPRECATED_TYPE_IN_2_58_FOR(f) #endif #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_58 # define GLIB_AVAILABLE_IN_2_58 GLIB_UNAVAILABLE(2, 58) -# define GLIB_AVAILABLE_MACRO_IN_2_58 GLIB_UNAVAILABLE_MACRO(2, 58) -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_58 GLIB_UNAVAILABLE_ENUMERATOR(2, 58) -# define GLIB_AVAILABLE_TYPE_IN_2_58 GLIB_UNAVAILABLE_TYPE(2, 58) #else # define GLIB_AVAILABLE_IN_2_58 _GLIB_EXTERN -# define GLIB_AVAILABLE_MACRO_IN_2_58 -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_58 -# define GLIB_AVAILABLE_TYPE_IN_2_58 #endif #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_60 # define GLIB_DEPRECATED_IN_2_60 GLIB_DEPRECATED # define GLIB_DEPRECATED_IN_2_60_FOR(f) GLIB_DEPRECATED_FOR(f) -# define GLIB_DEPRECATED_MACRO_IN_2_60 GLIB_DEPRECATED_MACRO -# define GLIB_DEPRECATED_MACRO_IN_2_60_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_60 GLIB_DEPRECATED_ENUMERATOR -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_60_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_60 GLIB_DEPRECATED_TYPE -# define GLIB_DEPRECATED_TYPE_IN_2_60_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) #else # define GLIB_DEPRECATED_IN_2_60 _GLIB_EXTERN # define GLIB_DEPRECATED_IN_2_60_FOR(f) _GLIB_EXTERN -# define GLIB_DEPRECATED_MACRO_IN_2_60 -# define GLIB_DEPRECATED_MACRO_IN_2_60_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_60 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_60_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_60 -# define GLIB_DEPRECATED_TYPE_IN_2_60_FOR(f) #endif #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_60 # define GLIB_AVAILABLE_IN_2_60 GLIB_UNAVAILABLE(2, 60) -# define GLIB_AVAILABLE_MACRO_IN_2_60 GLIB_UNAVAILABLE_MACRO(2, 60) -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_60 GLIB_UNAVAILABLE_ENUMERATOR(2, 60) -# define GLIB_AVAILABLE_TYPE_IN_2_60 GLIB_UNAVAILABLE_TYPE(2, 60) #else # define GLIB_AVAILABLE_IN_2_60 _GLIB_EXTERN -# define GLIB_AVAILABLE_MACRO_IN_2_60 -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_60 -# define GLIB_AVAILABLE_TYPE_IN_2_60 #endif #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_62 # define GLIB_DEPRECATED_IN_2_62 GLIB_DEPRECATED # define GLIB_DEPRECATED_IN_2_62_FOR(f) GLIB_DEPRECATED_FOR(f) -# define GLIB_DEPRECATED_MACRO_IN_2_62 GLIB_DEPRECATED_MACRO -# define GLIB_DEPRECATED_MACRO_IN_2_62_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_62 GLIB_DEPRECATED_ENUMERATOR -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_62_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_62 GLIB_DEPRECATED_TYPE -# define GLIB_DEPRECATED_TYPE_IN_2_62_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) #else # define GLIB_DEPRECATED_IN_2_62 _GLIB_EXTERN # define GLIB_DEPRECATED_IN_2_62_FOR(f) _GLIB_EXTERN -# define GLIB_DEPRECATED_MACRO_IN_2_62 -# define GLIB_DEPRECATED_MACRO_IN_2_62_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_62 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_62_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_62 -# define GLIB_DEPRECATED_TYPE_IN_2_62_FOR(f) #endif #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_62 # define GLIB_AVAILABLE_IN_2_62 GLIB_UNAVAILABLE(2, 62) -# define GLIB_AVAILABLE_MACRO_IN_2_62 GLIB_UNAVAILABLE_MACRO(2, 62) -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_62 GLIB_UNAVAILABLE_ENUMERATOR(2, 62) -# define GLIB_AVAILABLE_TYPE_IN_2_62 GLIB_UNAVAILABLE_TYPE(2, 62) #else # define GLIB_AVAILABLE_IN_2_62 _GLIB_EXTERN -# define GLIB_AVAILABLE_MACRO_IN_2_62 -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_62 -# define GLIB_AVAILABLE_TYPE_IN_2_62 -#endif - -#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_64 -# define GLIB_DEPRECATED_IN_2_64 GLIB_DEPRECATED -# define GLIB_DEPRECATED_IN_2_64_FOR(f) GLIB_DEPRECATED_FOR(f) -# define GLIB_DEPRECATED_MACRO_IN_2_64 GLIB_DEPRECATED_MACRO -# define GLIB_DEPRECATED_MACRO_IN_2_64_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_64 GLIB_DEPRECATED_ENUMERATOR -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_64_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_64 GLIB_DEPRECATED_TYPE -# define GLIB_DEPRECATED_TYPE_IN_2_64_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) -#else -# define GLIB_DEPRECATED_IN_2_64 _GLIB_EXTERN -# define GLIB_DEPRECATED_IN_2_64_FOR(f) _GLIB_EXTERN -# define GLIB_DEPRECATED_MACRO_IN_2_64 -# define GLIB_DEPRECATED_MACRO_IN_2_64_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_64 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_64_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_64 -# define GLIB_DEPRECATED_TYPE_IN_2_64_FOR(f) -#endif - -#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_64 -# define GLIB_AVAILABLE_IN_2_64 GLIB_UNAVAILABLE(2, 64) -# define GLIB_AVAILABLE_MACRO_IN_2_64 GLIB_UNAVAILABLE_MACRO(2, 64) -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_64 GLIB_UNAVAILABLE_ENUMERATOR(2, 64) -# define GLIB_AVAILABLE_TYPE_IN_2_64 GLIB_UNAVAILABLE_TYPE(2, 64) -#else -# define GLIB_AVAILABLE_IN_2_64 _GLIB_EXTERN -# define GLIB_AVAILABLE_MACRO_IN_2_64 -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_64 -# define GLIB_AVAILABLE_TYPE_IN_2_64 -#endif - -#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_66 -# define GLIB_DEPRECATED_IN_2_66 GLIB_DEPRECATED -# define GLIB_DEPRECATED_IN_2_66_FOR(f) GLIB_DEPRECATED_FOR(f) -# define GLIB_DEPRECATED_MACRO_IN_2_66 GLIB_DEPRECATED_MACRO -# define GLIB_DEPRECATED_MACRO_IN_2_66_FOR(f) GLIB_DEPRECATED_MACRO_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_66 GLIB_DEPRECATED_ENUMERATOR -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_66_FOR(f) GLIB_DEPRECATED_ENUMERATOR_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_66 GLIB_DEPRECATED_TYPE -# define GLIB_DEPRECATED_TYPE_IN_2_66_FOR(f) GLIB_DEPRECATED_TYPE_FOR(f) -#else -# define GLIB_DEPRECATED_IN_2_66 _GLIB_EXTERN -# define GLIB_DEPRECATED_IN_2_66_FOR(f) _GLIB_EXTERN -# define GLIB_DEPRECATED_MACRO_IN_2_66 -# define GLIB_DEPRECATED_MACRO_IN_2_66_FOR(f) -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_66 -# define GLIB_DEPRECATED_ENUMERATOR_IN_2_66_FOR(f) -# define GLIB_DEPRECATED_TYPE_IN_2_66 -# define GLIB_DEPRECATED_TYPE_IN_2_66_FOR(f) -#endif - -#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_66 -# define GLIB_AVAILABLE_IN_2_66 GLIB_UNAVAILABLE(2, 66) -# define GLIB_AVAILABLE_MACRO_IN_2_66 GLIB_UNAVAILABLE_MACRO(2, 66) -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_66 GLIB_UNAVAILABLE_ENUMERATOR(2, 66) -# define GLIB_AVAILABLE_TYPE_IN_2_66 GLIB_UNAVAILABLE_TYPE(2, 66) -#else -# define GLIB_AVAILABLE_IN_2_66 _GLIB_EXTERN -# define GLIB_AVAILABLE_MACRO_IN_2_66 -# define GLIB_AVAILABLE_ENUMERATOR_IN_2_66 -# define GLIB_AVAILABLE_TYPE_IN_2_66 #endif #endif /* __G_VERSION_MACROS_H__ */ @@ -6956,20 +6403,6 @@ typedef void (*GHFunc) (gpointer key, gpointer value, gpointer user_data); -/** - * GCopyFunc: - * @src: (not nullable): A pointer to the data which should be copied - * @data: Additional data - * - * A function of this signature is used to copy the node data - * when doing a deep-copy of a tree. - * - * Returns: (not nullable): A pointer to the copy - * - * Since: 2.4 - */ -typedef gpointer (*GCopyFunc) (gconstpointer src, - gpointer data); /** * GFreeFunc: * @data: a data pointer @@ -7380,13 +6813,13 @@ union _GDoubleIEEE754 #error unknown ENDIAN type #endif /* !G_LITTLE_ENDIAN && !G_BIG_ENDIAN */ -typedef struct _GTimeVal GTimeVal GLIB_DEPRECATED_TYPE_IN_2_62_FOR(GDateTime); +typedef struct _GTimeVal GTimeVal; struct _GTimeVal { glong tv_sec; glong tv_usec; -} GLIB_DEPRECATED_TYPE_IN_2_62_FOR(GDateTime); +}; typedef gint grefcount; typedef volatile gint gatomicrefcount; @@ -7403,7 +6836,7 @@ G_END_DECLS # else /* !GLIB_STATIC_COMPILATION */ # ifdef GLIB_COMPILATION # ifdef DLL_EXPORT -# define GLIB_VAR extern __declspec(dllexport) +# define GLIB_VAR __declspec(dllexport) # else /* !DLL_EXPORT */ # define GLIB_VAR extern # endif /* !DLL_EXPORT */ @@ -7559,16 +6992,11 @@ GLIB_AVAILABLE_IN_ALL GArray* g_array_new (gboolean zero_terminated, gboolean clear_, guint element_size); -GLIB_AVAILABLE_IN_2_64 -gpointer g_array_steal (GArray *array, - gsize *len); GLIB_AVAILABLE_IN_ALL GArray* g_array_sized_new (gboolean zero_terminated, gboolean clear_, guint element_size, guint reserved_size); -GLIB_AVAILABLE_IN_2_62 -GArray* g_array_copy (GArray *array); GLIB_AVAILABLE_IN_ALL gchar* g_array_free (GArray *array, gboolean free_segment); @@ -7611,11 +7039,6 @@ GLIB_AVAILABLE_IN_ALL void g_array_sort_with_data (GArray *array, GCompareDataFunc compare_func, gpointer user_data); -GLIB_AVAILABLE_IN_2_62 -gboolean g_array_binary_search (GArray *array, - gconstpointer target, - GCompareFunc compare_func, - guint *out_match_index); GLIB_AVAILABLE_IN_ALL void g_array_set_clear_func (GArray *array, GDestroyNotify clear_func); @@ -7629,13 +7052,6 @@ GLIB_AVAILABLE_IN_ALL GPtrArray* g_ptr_array_new (void); GLIB_AVAILABLE_IN_ALL GPtrArray* g_ptr_array_new_with_free_func (GDestroyNotify element_free_func); -GLIB_AVAILABLE_IN_2_64 -gpointer* g_ptr_array_steal (GPtrArray *array, - gsize *len); -GLIB_AVAILABLE_IN_2_62 -GPtrArray *g_ptr_array_copy (GPtrArray *array, - GCopyFunc func, - gpointer user_data); GLIB_AVAILABLE_IN_ALL GPtrArray* g_ptr_array_sized_new (guint reserved_size); GLIB_AVAILABLE_IN_ALL @@ -7679,14 +7095,6 @@ GPtrArray *g_ptr_array_remove_range (GPtrArray *array, GLIB_AVAILABLE_IN_ALL void g_ptr_array_add (GPtrArray *array, gpointer data); -GLIB_AVAILABLE_IN_2_62 -void g_ptr_array_extend (GPtrArray *array_to_extend, - GPtrArray *array, - GCopyFunc func, - gpointer user_data); -GLIB_AVAILABLE_IN_2_62 -void g_ptr_array_extend_and_steal (GPtrArray *array_to_extend, - GPtrArray *array); GLIB_AVAILABLE_IN_2_40 void g_ptr_array_insert (GPtrArray *array, gint index_, @@ -7722,9 +7130,6 @@ GByteArray* g_byte_array_new (void); GLIB_AVAILABLE_IN_ALL GByteArray* g_byte_array_new_take (guint8 *data, gsize len); -GLIB_AVAILABLE_IN_2_64 -guint8* g_byte_array_steal (GByteArray *array, - gsize *len); GLIB_AVAILABLE_IN_ALL GByteArray* g_byte_array_sized_new (guint reserved_size); GLIB_AVAILABLE_IN_ALL @@ -7916,235 +7321,103 @@ G_END_DECLS #if defined(G_ATOMIC_LOCK_FREE) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) /* We prefer the new C11-style atomic extension of GCC if available */ -#if defined(__ATOMIC_SEQ_CST) +#if defined(__ATOMIC_SEQ_CST) && !defined(__clang__) + +/* This assumes sizeof(int) is 4: gatomic.c statically + * asserts that (using G_STATIC_ASSERT at top-level in a header was + * problematic, see #730932) */ #undef g_atomic_int_get #define g_atomic_int_get(atomic) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ - gint gaig_temp; \ (void) (0 ? *(atomic) ^ *(atomic) : 1); \ - __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST); \ - (gint) gaig_temp; \ + (gint) __atomic_load_4 ((atomic), __ATOMIC_SEQ_CST); \ })) #undef g_atomic_int_set #define g_atomic_int_set(atomic, newval) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ - gint gais_temp = (gint) (newval); \ (void) (0 ? *(atomic) ^ (newval) : 1); \ - __atomic_store ((gint *)(atomic), &gais_temp, __ATOMIC_SEQ_CST); \ + __atomic_store_4 ((atomic), (newval), __ATOMIC_SEQ_CST); \ })) -#if defined(g_has_typeof) +#if GLIB_SIZEOF_VOID_P == 8 + #undef g_atomic_pointer_get #define g_atomic_pointer_get(atomic) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ - __typeof__(*(atomic)) gapg_temp_newval; \ - __typeof__((atomic)) gapg_temp_atomic = (atomic); \ - __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \ - gapg_temp_newval; \ + guint64 gapg_temp = __atomic_load_8 ((atomic), __ATOMIC_SEQ_CST); \ + (gpointer) gapg_temp; \ })) #undef g_atomic_pointer_set #define g_atomic_pointer_set(atomic, newval) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ - __typeof__((atomic)) gaps_temp_atomic = (atomic); \ - __typeof__(*(atomic)) gaps_temp_newval = (newval); \ (void) (0 ? (gpointer) *(atomic) : NULL); \ - __atomic_store (gaps_temp_atomic, &gaps_temp_newval, __ATOMIC_SEQ_CST); \ + __atomic_store_8 ((atomic), (gsize) (newval), __ATOMIC_SEQ_CST); \ })) -#else /* if !defined(g_has_typeof) */ + +#else /* GLIB_SIZEOF_VOID_P == 8 */ + +/* This assumes that if sizeof(void *) is not 8, then it is 4: + * gatomic.c statically asserts that (using G_STATIC_ASSERT + * at top-level in a header was problematic, see #730932) */ + #undef g_atomic_pointer_get #define g_atomic_pointer_get(atomic) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ - gpointer gapg_temp_newval; \ - gpointer *gapg_temp_atomic = (gpointer *)(atomic); \ - __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \ - gapg_temp_newval; \ + guint32 gapg_temp = __atomic_load_4 ((atomic), __ATOMIC_SEQ_CST); \ + (gpointer) gapg_temp; \ })) #undef g_atomic_pointer_set #define g_atomic_pointer_set(atomic, newval) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ - gpointer *gaps_temp_atomic = (gpointer *)(atomic); \ - gpointer gaps_temp_newval = (gpointer)(newval); \ (void) (0 ? (gpointer) *(atomic) : NULL); \ - __atomic_store (gaps_temp_atomic, &gaps_temp_newval, __ATOMIC_SEQ_CST); \ - })) -#endif /* !defined(g_has_typeof) */ - -#undef g_atomic_int_inc -#define g_atomic_int_inc(atomic) \ - (G_GNUC_EXTENSION ({ \ - G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ - (void) (0 ? *(atomic) ^ *(atomic) : 1); \ - (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST); \ - })) -#undef g_atomic_int_dec_and_test -#define g_atomic_int_dec_and_test(atomic) \ - (G_GNUC_EXTENSION ({ \ - G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ - (void) (0 ? *(atomic) ^ *(atomic) : 1); \ - __atomic_fetch_sub ((atomic), 1, __ATOMIC_SEQ_CST) == 1; \ - })) -#undef g_atomic_int_compare_and_exchange -#define g_atomic_int_compare_and_exchange(atomic, oldval, newval) \ - (G_GNUC_EXTENSION ({ \ - gint gaicae_oldval = (oldval); \ - G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ - (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1); \ - __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \ - })) -#undef g_atomic_int_add -#define g_atomic_int_add(atomic, val) \ - (G_GNUC_EXTENSION ({ \ - G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ - (void) (0 ? *(atomic) ^ (val) : 1); \ - (gint) __atomic_fetch_add ((atomic), (val), __ATOMIC_SEQ_CST); \ - })) -#undef g_atomic_int_and -#define g_atomic_int_and(atomic, val) \ - (G_GNUC_EXTENSION ({ \ - G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ - (void) (0 ? *(atomic) ^ (val) : 1); \ - (guint) __atomic_fetch_and ((atomic), (val), __ATOMIC_SEQ_CST); \ - })) -#undef g_atomic_int_or -#define g_atomic_int_or(atomic, val) \ - (G_GNUC_EXTENSION ({ \ - G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ - (void) (0 ? *(atomic) ^ (val) : 1); \ - (guint) __atomic_fetch_or ((atomic), (val), __ATOMIC_SEQ_CST); \ - })) -#undef g_atomic_int_xor -#define g_atomic_int_xor(atomic, val) \ - (G_GNUC_EXTENSION ({ \ - G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ - (void) (0 ? *(atomic) ^ (val) : 1); \ - (guint) __atomic_fetch_xor ((atomic), (val), __ATOMIC_SEQ_CST); \ + __atomic_store_4 ((atomic), (gsize) (newval), __ATOMIC_SEQ_CST); \ })) -#undef g_atomic_pointer_compare_and_exchange -#define g_atomic_pointer_compare_and_exchange(atomic, oldval, newval) \ - (G_GNUC_EXTENSION ({ \ - G_STATIC_ASSERT (sizeof (oldval) == sizeof (gpointer)); \ - __typeof__ ((oldval)) gapcae_oldval = (oldval); \ - G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ - (void) (0 ? (gpointer) *(atomic) : NULL); \ - __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \ - })) -#undef g_atomic_pointer_add -#define g_atomic_pointer_add(atomic, val) \ - (G_GNUC_EXTENSION ({ \ - G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ - (void) (0 ? (gpointer) *(atomic) : NULL); \ - (void) (0 ? (val) ^ (val) : 1); \ - (gssize) __atomic_fetch_add ((atomic), (val), __ATOMIC_SEQ_CST); \ - })) -#undef g_atomic_pointer_and -#define g_atomic_pointer_and(atomic, val) \ - (G_GNUC_EXTENSION ({ \ - volatile gsize *gapa_atomic = (volatile gsize *) (atomic); \ - G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ - G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize)); \ - (void) (0 ? (gpointer) *(atomic) : NULL); \ - (void) (0 ? (val) ^ (val) : 1); \ - (gsize) __atomic_fetch_and (gapa_atomic, (val), __ATOMIC_SEQ_CST); \ - })) -#undef g_atomic_pointer_or -#define g_atomic_pointer_or(atomic, val) \ - (G_GNUC_EXTENSION ({ \ - volatile gsize *gapo_atomic = (volatile gsize *) (atomic); \ - G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ - G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize)); \ - (void) (0 ? (gpointer) *(atomic) : NULL); \ - (void) (0 ? (val) ^ (val) : 1); \ - (gsize) __atomic_fetch_or (gapo_atomic, (val), __ATOMIC_SEQ_CST); \ - })) -#undef g_atomic_pointer_xor -#define g_atomic_pointer_xor(atomic, val) \ - (G_GNUC_EXTENSION ({ \ - volatile gsize *gapx_atomic = (volatile gsize *) (atomic); \ - G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ - G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize)); \ - (void) (0 ? (gpointer) *(atomic) : NULL); \ - (void) (0 ? (val) ^ (val) : 1); \ - (gsize) __atomic_fetch_xor (gapx_atomic, (val), __ATOMIC_SEQ_CST); \ - })) +#endif /* GLIB_SIZEOF_VOID_P == 8 */ #else /* defined(__ATOMIC_SEQ_CST) */ -/* We want to achieve __ATOMIC_SEQ_CST semantics here. See - * https://en.cppreference.com/w/c/atomic/memory_order#Constants. For load - * operations, that means performing an *acquire*: - * > A load operation with this memory order performs the acquire operation on - * > the affected memory location: no reads or writes in the current thread can - * > be reordered before this load. All writes in other threads that release - * > the same atomic variable are visible in the current thread. - * - * “no reads or writes in the current thread can be reordered before this load” - * is implemented using a compiler barrier (a no-op `__asm__` section) to - * prevent instruction reordering. Writes in other threads are synchronised - * using `__sync_synchronize()`. It’s unclear from the GCC documentation whether - * `__sync_synchronize()` acts as a compiler barrier, hence our explicit use of - * one. - * - * For store operations, `__ATOMIC_SEQ_CST` means performing a *release*: - * > A store operation with this memory order performs the release operation: - * > no reads or writes in the current thread can be reordered after this store. - * > All writes in the current thread are visible in other threads that acquire - * > the same atomic variable (see Release-Acquire ordering below) and writes - * > that carry a dependency into the atomic variable become visible in other - * > threads that consume the same atomic (see Release-Consume ordering below). - * - * “no reads or writes in the current thread can be reordered after this store” - * is implemented using a compiler barrier to prevent instruction reordering. - * “All writes in the current thread are visible in other threads” is implemented - * using `__sync_synchronize()`; similarly for “writes that carry a dependency”. - */ #undef g_atomic_int_get #define g_atomic_int_get(atomic) \ (G_GNUC_EXTENSION ({ \ - gint gaig_result; \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ (void) (0 ? *(atomic) ^ *(atomic) : 1); \ - gaig_result = (gint) *(atomic); \ __sync_synchronize (); \ - __asm__ __volatile__ ("" : : : "memory"); \ - gaig_result; \ + (gint) *(atomic); \ })) #undef g_atomic_int_set #define g_atomic_int_set(atomic, newval) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ (void) (0 ? *(atomic) ^ (newval) : 1); \ - __sync_synchronize (); \ - __asm__ __volatile__ ("" : : : "memory"); \ *(atomic) = (newval); \ + __sync_synchronize (); \ })) #undef g_atomic_pointer_get #define g_atomic_pointer_get(atomic) \ (G_GNUC_EXTENSION ({ \ - gpointer gapg_result; \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ - gapg_result = (gpointer) *(atomic); \ __sync_synchronize (); \ - __asm__ __volatile__ ("" : : : "memory"); \ - gapg_result; \ + (gpointer) *(atomic); \ })) #undef g_atomic_pointer_set #define g_atomic_pointer_set(atomic, newval) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ (void) (0 ? (gpointer) *(atomic) : NULL); \ - __sync_synchronize (); \ - __asm__ __volatile__ ("" : : : "memory"); \ *(atomic) = (__typeof__ (*(atomic))) (gsize) (newval); \ + __sync_synchronize (); \ })) +#endif /* !defined(__ATOMIC_SEQ_CST) */ + #undef g_atomic_int_inc #define g_atomic_int_inc(atomic) \ (G_GNUC_EXTENSION ({ \ @@ -8235,8 +7508,6 @@ G_END_DECLS (gsize) __sync_fetch_and_xor ((atomic), (val)); \ })) -#endif /* !defined(__ATOMIC_SEQ_CST) */ - #else /* defined(G_ATOMIC_LOCK_FREE) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) */ #undef g_atomic_int_get @@ -8541,129 +7812,6 @@ GLIB_AVAILABLE_IN_ALL const gchar * g_get_application_name (void); GLIB_AVAILABLE_IN_ALL void g_set_application_name (const gchar *application_name); -GLIB_AVAILABLE_IN_2_64 -gchar * g_get_os_info (const gchar *key_name); - -/** - * G_OS_INFO_KEY_NAME: - * - * A key to get the name of the operating system excluding version information suitable for presentation to the user, e.g. "YoYoOS" - * - * Since: 2.64 - */ -#define G_OS_INFO_KEY_NAME \ - GLIB_AVAILABLE_MACRO_IN_2_64 \ - "NAME" - -/** - * G_OS_INFO_KEY_PRETTY_NAME: - * - * A key to get the name of the operating system in a format suitable for presentation to the user, e.g. "YoYoOS Foo" - * - * Since: 2.64 - */ -#define G_OS_INFO_KEY_PRETTY_NAME \ - GLIB_AVAILABLE_MACRO_IN_2_64 \ - "PRETTY_NAME" - -/** - * G_OS_INFO_KEY_VERSION: - * - * A key to get the operating system version suitable for presentation to the user, e.g. "42 (Foo)" - * - * Since: 2.64 - */ -#define G_OS_INFO_KEY_VERSION \ - GLIB_AVAILABLE_MACRO_IN_2_64 \ - "VERSION" - -/** - * G_OS_INFO_KEY_VERSION_CODENAME: - * - * A key to get a codename identifying the operating system release suitable for processing by scripts or usage in generated filenames, e.g. "foo" - * - * Since: 2.64 - */ -#define G_OS_INFO_KEY_VERSION_CODENAME \ - GLIB_AVAILABLE_MACRO_IN_2_64 \ - "VERSION_CODENAME" - -/** - * G_OS_INFO_KEY_VERSION_ID: - * - * A key to get the version of the operating system suitable for processing by scripts or usage in generated filenames, e.g. "42" - * - * Since: 2.64 - */ -#define G_OS_INFO_KEY_VERSION_ID \ - GLIB_AVAILABLE_MACRO_IN_2_64 \ - "VERSION_ID" - -/** - * G_OS_INFO_KEY_ID: - * - * A key to get an ID identifying the operating system suitable for processing by scripts or usage in generated filenames, e.g. "yoyoos" - * - * Since: 2.64 - */ -#define G_OS_INFO_KEY_ID \ - GLIB_AVAILABLE_MACRO_IN_2_64 \ - "ID" - -/** - * G_OS_INFO_KEY_HOME_URL: - * - * A key to get the homepage for the operating system, e.g. "https://www.yoyo-os.com/" - * - * Since: 2.64 - */ -#define G_OS_INFO_KEY_HOME_URL \ - GLIB_AVAILABLE_MACRO_IN_2_64 \ - "HOME_URL" - -/** - * G_OS_INFO_KEY_DOCUMENTATION_URL: - * - * A key to get the documentation page for the operating system, e.g. "https://docs.yoyo-os.com/" - * - * Since: 2.64 - */ -#define G_OS_INFO_KEY_DOCUMENTATION_URL \ - GLIB_AVAILABLE_MACRO_IN_2_64 \ - "DOCUMENTATION_URL" - -/** - * G_OS_INFO_KEY_SUPPORT_URL: - * - * A key to get the support page for the operating system, e.g. "https://support.yoyo-os.com/" - * - * Since: 2.64 - */ -#define G_OS_INFO_KEY_SUPPORT_URL \ - GLIB_AVAILABLE_MACRO_IN_2_64 \ - "SUPPORT_URL" - -/** - * G_OS_INFO_KEY_BUG_REPORT_URL: - * - * A key to get the bug reporting page for the operating system, e.g. "https://bugs.yoyo-os.com/" - * - * Since: 2.64 - */ -#define G_OS_INFO_KEY_BUG_REPORT_URL \ - GLIB_AVAILABLE_MACRO_IN_2_64 \ - "BUG_REPORT_URL" - -/** - * G_OS_INFO_KEY_PRIVACY_POLICY_URL: - * - * A key to get the privacy policy for the operating system, e.g. "https://privacy.yoyo-os.com/" - * - * Since: 2.64 - */ -#define G_OS_INFO_KEY_PRIVACY_POLICY_URL \ - GLIB_AVAILABLE_MACRO_IN_2_64 \ - "PRIVACY_POLICY_URL" GLIB_AVAILABLE_IN_ALL void g_reload_user_special_dirs_cache (void); @@ -8794,10 +7942,7 @@ gchar *g_format_size (guint64 size); GLIB_DEPRECATED_IN_2_30_FOR(g_format_size) gchar *g_format_size_for_display (goffset size); -#define g_ATEXIT(proc) (atexit (proc)) GLIB_DEPRECATED_MACRO_IN_2_32 -#define g_memmove(dest,src,len) \ - G_STMT_START { memmove ((dest), (src), (len)); } G_STMT_END GLIB_DEPRECATED_MACRO_IN_2_40_FOR(memmove) - +#ifndef G_DISABLE_DEPRECATED /** * GVoidFunc: * @@ -8805,13 +7950,10 @@ gchar *g_format_size_for_display (goffset size); * and has no return value. It is used to specify the type * function passed to g_atexit(). */ -typedef void (*GVoidFunc) (void) GLIB_DEPRECATED_TYPE_IN_2_32; -#define ATEXIT(proc) g_ATEXIT(proc) GLIB_DEPRECATED_MACRO_IN_2_32 - -G_GNUC_BEGIN_IGNORE_DEPRECATIONS +typedef void (*GVoidFunc) (void); +#define ATEXIT(proc) g_ATEXIT(proc) GLIB_DEPRECATED void g_atexit (GVoidFunc func); -G_GNUC_END_IGNORE_DEPRECATIONS #ifdef G_OS_WIN32 /* It's a bad idea to wrap atexit() on Windows. If the GLib DLL calls @@ -8824,7 +7966,9 @@ G_GNUC_END_IGNORE_DEPRECATIONS int atexit (void (*)(void)); #endif #undef g_atexit -#define g_atexit(func) atexit(func) GLIB_DEPRECATED_MACRO_IN_2_32 +#define g_atexit(func) atexit(func) +#endif + #endif @@ -8919,6 +8063,8 @@ void g_abort (void) G_GNUC_NORETURN G_ANALYZER_NORETURN; #endif #endif +#ifndef G_DISABLE_DEPRECATED + /* * This macro is deprecated. This DllMain() is too complex. It is * recommended to write an explicit minimal DLlMain() that just saves @@ -8937,7 +8083,7 @@ void g_abort (void) G_GNUC_NORETURN G_ANALYZER_NORETURN; */ #ifndef G_PLATFORM_WIN32 -# define G_WIN32_DLLMAIN_FOR_DLL_NAME(static, dll_name) GLIB_DEPRECATED_MACRO_IN_2_26 +# define G_WIN32_DLLMAIN_FOR_DLL_NAME(static, dll_name) #else # define G_WIN32_DLLMAIN_FOR_DLL_NAME(static, dll_name) \ static char *dll_name; \ @@ -8960,7 +8106,10 @@ DllMain (HINSTANCE hinstDLL, \ } \ \ return TRUE; \ -} GLIB_DEPRECATED_MACRO_IN_2_26 +} + +#endif /* !G_DISABLE_DEPRECATED */ + #endif /* G_PLATFORM_WIN32 */ G_END_DECLS @@ -9211,7 +8360,7 @@ void g_once_init_leave (volatile void *location, # define g_once_init_enter(location) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(location) == sizeof (gpointer)); \ - (void) (0 ? (gpointer) *(location) : NULL); \ + (void) (0 ? (gpointer) *(location) : 0); \ (!g_atomic_pointer_get (location) && \ _frida_g_once_init_enter (location)); \ })) @@ -9219,7 +8368,7 @@ void g_once_init_leave (volatile void *location, # define g_once_init_leave(location, result) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(location) == sizeof (gpointer)); \ - 0 ? (void) (*(location) = (result)) : (void) 0; \ + (void) (0 ? *(location) = (result) : 0); \ _frida_g_once_init_leave ((location), (gsize) (result)); \ })) #else @@ -9250,8 +8399,6 @@ typedef void GMutexLocker; * g_mutex_locker_free(). Using g_mutex_unlock() on @mutex * while a #GMutexLocker exists can lead to undefined behaviour. * - * No allocation is performed, it is equivalent to a g_mutex_lock() call. - * * This is intended to be used with g_autoptr(). Note that g_autoptr() * is only available when using GCC or clang, so the following example * will only work with those compilers: @@ -9297,8 +8444,6 @@ g_mutex_locker_new (GMutex *mutex) * * Unlock @locker's mutex. See g_mutex_locker_new() for details. * - * No memory is freed, it is equivalent to a g_mutex_unlock() call. - * * Since: 2.44 */ static inline void @@ -9323,8 +8468,6 @@ typedef void GRecMutexLocker; * g_rec_mutex_locker_free(). Using g_rec_mutex_unlock() on @rec_mutex * while a #GRecMutexLocker exists can lead to undefined behaviour. * - * No allocation is performed, it is equivalent to a g_rec_mutex_lock() call. - * * This is intended to be used with g_autoptr(). Note that g_autoptr() * is only available when using GCC or clang, so the following example * will only work with those compilers: @@ -9370,8 +8513,6 @@ g_rec_mutex_locker_new (GRecMutex *rec_mutex) * * Unlock @locker's recursive mutex. See g_rec_mutex_locker_new() for details. * - * No memory is freed, it is equivalent to a g_rec_mutex_unlock() call. - * * Since: 2.60 */ static inline void @@ -9380,160 +8521,6 @@ g_rec_mutex_locker_free (GRecMutexLocker *locker) g_rec_mutex_unlock ((GRecMutex *) locker); } -/** - * GRWLockWriterLocker: - * - * Opaque type. See g_rw_lock_writer_locker_new() for details. - * Since: 2.62 - */ -typedef void GRWLockWriterLocker; - -/** - * g_rw_lock_writer_locker_new: - * @rw_lock: a #GRWLock - * - * Obtain a write lock on @rw_lock and return a new #GRWLockWriterLocker. - * Unlock with g_rw_lock_writer_locker_free(). Using g_rw_lock_writer_unlock() - * on @rw_lock while a #GRWLockWriterLocker exists can lead to undefined - * behaviour. - * - * No allocation is performed, it is equivalent to a g_rw_lock_writer_lock() call. - * - * This is intended to be used with g_autoptr(). Note that g_autoptr() - * is only available when using GCC or clang, so the following example - * will only work with those compilers: - * |[ - * typedef struct - * { - * ... - * GRWLock rw_lock; - * GPtrArray *array; - * ... - * } MyObject; - * - * static gchar * - * my_object_get_data (MyObject *self, guint index) - * { - * g_autoptr(GRWLockReaderLocker) locker = g_rw_lock_reader_locker_new (&self->rw_lock); - * - * // Code with a read lock obtained on rw_lock here - * - * if (self->array == NULL) - * // No need to unlock - * return NULL; - * - * if (index < self->array->len) - * // No need to unlock - * return g_ptr_array_index (self->array, index); - * - * // Optionally early unlock - * g_clear_pointer (&locker, g_rw_lock_reader_locker_free); - * - * // Code with rw_lock unlocked here - * return NULL; - * } - * - * static void - * my_object_set_data (MyObject *self, guint index, gpointer data) - * { - * g_autoptr(GRWLockWriterLocker) locker = g_rw_lock_writer_locker_new (&self->rw_lock); - * - * // Code with a write lock obtained on rw_lock here - * - * if (self->array == NULL) - * self->array = g_ptr_array_new (); - * - * if (cond) - * // No need to unlock - * return; - * - * if (index >= self->array->len) - * g_ptr_array_set_size (self->array, index+1); - * g_ptr_array_index (self->array, index) = data; - * - * // Optionally early unlock - * g_clear_pointer (&locker, g_rw_lock_writer_locker_free); - * - * // Code with rw_lock unlocked here - * } - * ]| - * - * Returns: a #GRWLockWriterLocker - * Since: 2.62 - */ -static inline GRWLockWriterLocker * -g_rw_lock_writer_locker_new (GRWLock *rw_lock) -{ - g_rw_lock_writer_lock (rw_lock); - return (GRWLockWriterLocker *) rw_lock; -} - -/** - * g_rw_lock_writer_locker_free: - * @locker: a GRWLockWriterLocker - * - * Release a write lock on @locker's read-write lock. See - * g_rw_lock_writer_locker_new() for details. - * - * No memory is freed, it is equivalent to a g_rw_lock_writer_unlock() call. - * - * Since: 2.62 - */ -static inline void -g_rw_lock_writer_locker_free (GRWLockWriterLocker *locker) -{ - g_rw_lock_writer_unlock ((GRWLock *) locker); -} - -/** - * GRWLockReaderLocker: - * - * Opaque type. See g_rw_lock_reader_locker_new() for details. - * Since: 2.62 - */ -typedef void GRWLockReaderLocker; - -/** - * g_rw_lock_reader_locker_new: - * @rw_lock: a #GRWLock - * - * Obtain a read lock on @rw_lock and return a new #GRWLockReaderLocker. - * Unlock with g_rw_lock_reader_locker_free(). Using g_rw_lock_reader_unlock() - * on @rw_lock while a #GRWLockReaderLocker exists can lead to undefined - * behaviour. - * - * No allocation is performed, it is equivalent to a g_rw_lock_reader_lock() call. - * - * This is intended to be used with g_autoptr(). For a code sample, see - * g_rw_lock_writer_locker_new(). - * - * Returns: a #GRWLockReaderLocker - * Since: 2.62 - */ -static inline GRWLockReaderLocker * -g_rw_lock_reader_locker_new (GRWLock *rw_lock) -{ - g_rw_lock_reader_lock (rw_lock); - return (GRWLockReaderLocker *) rw_lock; -} - -/** - * g_rw_lock_reader_locker_free: - * @locker: a GRWLockReaderLocker - * - * Release a read lock on @locker's read-write lock. See - * g_rw_lock_reader_locker_new() for details. - * - * No memory is freed, it is equivalent to a g_rw_lock_reader_unlock() call. - * - * Since: 2.62 - */ -static inline void -g_rw_lock_reader_locker_free (GRWLockReaderLocker *locker) -{ - g_rw_lock_reader_unlock ((GRWLock *) locker); -} - G_END_DECLS #endif /* __G_THREAD_H__ */ @@ -9617,14 +8604,12 @@ GLIB_AVAILABLE_IN_2_46 void g_async_queue_push_front_unlocked (GAsyncQueue *queue, gpointer item); -G_GNUC_BEGIN_IGNORE_DEPRECATIONS GLIB_DEPRECATED_FOR(g_async_queue_timeout_pop) gpointer g_async_queue_timed_pop (GAsyncQueue *queue, GTimeVal *end_time); GLIB_DEPRECATED_FOR(g_async_queue_timeout_pop_unlocked) gpointer g_async_queue_timed_pop_unlocked (GAsyncQueue *queue, GTimeVal *end_time); -G_GNUC_END_IGNORE_DEPRECATIONS G_END_DECLS @@ -10211,8 +9196,6 @@ GLIB_AVAILABLE_IN_ALL gboolean g_get_charset (const char **charset); GLIB_AVAILABLE_IN_ALL gchar * g_get_codeset (void); -GLIB_AVAILABLE_IN_2_62 -gboolean g_get_console_charset (const char **charset); GLIB_AVAILABLE_IN_ALL const gchar * const * g_get_language_names (void); @@ -10696,7 +9679,7 @@ G_BEGIN_DECLS * Pennington */ -typedef gint32 GTime GLIB_DEPRECATED_TYPE_IN_2_62_FOR(GDateTime); +typedef gint32 GTime; typedef guint16 GDateYear; typedef guint8 GDateDay; /* day of the month */ typedef struct _GDate GDate; @@ -10846,14 +9829,14 @@ void g_date_set_parse (GDate *date, GLIB_AVAILABLE_IN_ALL void g_date_set_time_t (GDate *date, time_t timet); -G_GNUC_BEGIN_IGNORE_DEPRECATIONS -GLIB_DEPRECATED_IN_2_62_FOR(g_date_set_time_t) +GLIB_AVAILABLE_IN_ALL void g_date_set_time_val (GDate *date, GTimeVal *timeval); +#ifndef G_DISABLE_DEPRECATED GLIB_DEPRECATED_FOR(g_date_set_time_t) void g_date_set_time (GDate *date, GTime time_); -G_GNUC_END_IGNORE_DEPRECATIONS +#endif GLIB_AVAILABLE_IN_ALL void g_date_set_month (GDate *date, GDateMonth month); @@ -10941,17 +9924,21 @@ gsize g_date_strftime (gchar *s, const gchar *format, const GDate *date); -#define g_date_weekday g_date_get_weekday GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_weekday) -#define g_date_month g_date_get_month GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_month) -#define g_date_year g_date_get_year GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_year) -#define g_date_day g_date_get_day GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_day) -#define g_date_julian g_date_get_julian GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_julian) -#define g_date_day_of_year g_date_get_day_of_year GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_day_of_year) -#define g_date_monday_week_of_year g_date_get_monday_week_of_year GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_monday_week_of_year) -#define g_date_sunday_week_of_year g_date_get_sunday_week_of_year GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_sunday_week_of_year) -#define g_date_days_in_month g_date_get_days_in_month GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_days_in_month) -#define g_date_monday_weeks_in_year g_date_get_monday_weeks_in_year GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_monday_weeks_in_year) -#define g_date_sunday_weeks_in_year g_date_get_sunday_weeks_in_year GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_date_get_sunday_weeks_in_year) +#ifndef G_DISABLE_DEPRECATED + +#define g_date_weekday g_date_get_weekday +#define g_date_month g_date_get_month +#define g_date_year g_date_get_year +#define g_date_day g_date_get_day +#define g_date_julian g_date_get_julian +#define g_date_day_of_year g_date_get_day_of_year +#define g_date_monday_week_of_year g_date_get_monday_week_of_year +#define g_date_sunday_week_of_year g_date_get_sunday_week_of_year +#define g_date_days_in_month g_date_get_days_in_month +#define g_date_monday_weeks_in_year g_date_get_monday_weeks_in_year +#define g_date_sunday_weeks_in_year g_date_get_sunday_weeks_in_year + +#endif /* G_DISABLE_DEPRECATED */ G_END_DECLS @@ -11162,12 +10149,10 @@ GDateTime * g_date_time_new_from_unix_local (gint64 GLIB_AVAILABLE_IN_ALL GDateTime * g_date_time_new_from_unix_utc (gint64 t); -G_GNUC_BEGIN_IGNORE_DEPRECATIONS -GLIB_DEPRECATED_IN_2_62_FOR(g_date_time_new_from_unix_local) +GLIB_AVAILABLE_IN_ALL GDateTime * g_date_time_new_from_timeval_local (const GTimeVal *tv); -GLIB_DEPRECATED_IN_2_62_FOR(g_date_time_new_from_unix_utc) +GLIB_AVAILABLE_IN_ALL GDateTime * g_date_time_new_from_timeval_utc (const GTimeVal *tv); -G_GNUC_END_IGNORE_DEPRECATIONS GLIB_AVAILABLE_IN_2_56 GDateTime * g_date_time_new_from_iso8601 (const gchar *text, @@ -11289,11 +10274,9 @@ gdouble g_date_time_get_seconds (GDateTi GLIB_AVAILABLE_IN_ALL gint64 g_date_time_to_unix (GDateTime *datetime); -G_GNUC_BEGIN_IGNORE_DEPRECATIONS -GLIB_DEPRECATED_IN_2_62_FOR(g_date_time_to_unix) +GLIB_AVAILABLE_IN_ALL gboolean g_date_time_to_timeval (GDateTime *datetime, GTimeVal *tv); -G_GNUC_END_IGNORE_DEPRECATIONS GLIB_AVAILABLE_IN_ALL GTimeSpan g_date_time_get_utc_offset (GDateTime *datetime); @@ -11315,8 +10298,6 @@ GDateTime * g_date_time_to_utc (GDateTi GLIB_AVAILABLE_IN_ALL gchar * g_date_time_format (GDateTime *datetime, const gchar *format) G_GNUC_MALLOC; -GLIB_AVAILABLE_IN_2_62 -gchar * g_date_time_format_iso8601 (GDateTime *datetime) G_GNUC_MALLOC; G_END_DECLS @@ -11595,7 +10576,9 @@ const gchar *g_path_skip_root (const gchar *file_name); GLIB_DEPRECATED_FOR(g_path_get_basename) const gchar *g_basename (const gchar *file_name); -#define g_dirname g_path_get_dirname GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_path_get_dirname) +#ifndef G_DISABLE_DEPRECATED +#define g_dirname g_path_get_dirname +#endif GLIB_AVAILABLE_IN_ALL gchar *g_get_current_dir (void); @@ -11854,8 +10837,7 @@ gpointer g_try_realloc_n (gpointer mem, *_pp = NULL; \ if (_ptr) \ (destroy) (_ptr); \ - } G_STMT_END \ - GLIB_AVAILABLE_MACRO_IN_2_34 + } G_STMT_END #else /* __GNUC__ */ #undef g_clear_pointer #define g_clear_pointer(pp, destroy) \ @@ -11874,8 +10856,7 @@ gpointer g_try_realloc_n (gpointer mem, *_pp.out = NULL; \ _destroy (_p); \ } \ - } G_STMT_END \ - GLIB_AVAILABLE_MACRO_IN_2_34 + } G_STMT_END #endif /* __GNUC__ */ /** @@ -12102,9 +11083,6 @@ struct _GMemVTable { gpointer (*malloc) (gsize n_bytes); gpointer (*realloc) (gpointer mem, gsize n_bytes); - /* optional; set to NULL if not supported */ - gpointer (*memalign) (gsize alignment, - gsize size); void (*free) (gpointer mem); /* optional; set to NULL if not used ! */ gpointer (*calloc) (gsize n_blocks, @@ -12191,6 +11169,21 @@ typedef gboolean (*GNodeTraverseFunc) (GNode *node, typedef void (*GNodeForeachFunc) (GNode *node, gpointer data); +/** + * GCopyFunc: + * @src: (not nullable): A pointer to the data which should be copied + * @data: Additional data + * + * A function of this signature is used to copy the node data + * when doing a deep-copy of a tree. + * + * Returns: (not nullable): A pointer to the copy + * + * Since: 2.4 + */ +typedef gpointer (*GCopyFunc) (gconstpointer src, + gpointer data); + /* N-way tree implementation */ struct _GNode @@ -12483,10 +11476,6 @@ GLIB_AVAILABLE_IN_ALL GList* g_list_insert_before (GList *list, GList *sibling, gpointer data) G_GNUC_WARN_UNUSED_RESULT; -GLIB_AVAILABLE_IN_2_62 -GList* g_list_insert_before_link (GList *list, - GList *sibling, - GList *link_) G_GNUC_WARN_UNUSED_RESULT; GLIB_AVAILABLE_IN_ALL GList* g_list_concat (GList *list1, GList *list2) G_GNUC_WARN_UNUSED_RESULT; @@ -12552,28 +11541,6 @@ GLIB_AVAILABLE_IN_ALL gpointer g_list_nth_data (GList *list, guint n); -GLIB_AVAILABLE_IN_2_64 -void g_clear_list (GList **list_ptr, - GDestroyNotify destroy); - -#undef g_clear_list -#define g_clear_list(list_ptr, destroy) \ - G_STMT_START { \ - GList *_list; \ - \ - _list = *(list_ptr); \ - if (_list) \ - { \ - *list_ptr = NULL; \ - \ - if ((destroy) != NULL) \ - g_list_free_full (_list, (destroy)); \ - else \ - g_list_free (_list); \ - } \ - } G_STMT_END \ - GLIB_AVAILABLE_MACRO_IN_2_64 - #define g_list_previous(list) ((list) ? (((GList *)(list))->prev) : NULL) #define g_list_next(list) ((list) ? (((GList *)(list))->next) : NULL) @@ -12698,8 +11665,10 @@ GHashTable* g_hash_table_ref (GHashTable *hash_table); GLIB_AVAILABLE_IN_ALL void g_hash_table_unref (GHashTable *hash_table); -#define g_hash_table_freeze(hash_table) ((void)0) GLIB_DEPRECATED_MACRO_IN_2_26 -#define g_hash_table_thaw(hash_table) ((void)0) GLIB_DEPRECATED_MACRO_IN_2_26 +#ifndef G_DISABLE_DEPRECATED +#define g_hash_table_freeze(hash_table) ((void)0) +#define g_hash_table_thaw(hash_table) ((void)0) +#endif /* Hash Functions */ @@ -13369,28 +12338,6 @@ GLIB_AVAILABLE_IN_ALL gpointer g_slist_nth_data (GSList *list, guint n); -GLIB_AVAILABLE_IN_2_64 -void g_clear_slist (GSList **slist_ptr, - GDestroyNotify destroy); - -#undef g_clear_slist -#define g_clear_slist(slist_ptr, destroy) \ - G_STMT_START { \ - GSList *_slist; \ - \ - _slist = *(slist_ptr); \ - if (_slist) \ - { \ - *slist_ptr = NULL; \ - \ - if ((destroy) != NULL) \ - g_slist_free_full (_slist, (destroy)); \ - else \ - g_slist_free (_slist); \ - } \ - } G_STMT_END \ - GLIB_AVAILABLE_MACRO_IN_2_64 - #define g_slist_next(slist) ((slist) ? (((GSList *)(slist))->next) : NULL) G_END_DECLS @@ -13559,7 +12506,7 @@ typedef gboolean (*GSourceFunc) (gpointer user_data); * * Since: 2.58 */ -#define G_SOURCE_FUNC(f) ((GSourceFunc) (void (*)(void)) (f)) GLIB_AVAILABLE_MACRO_IN_2_58 +#define G_SOURCE_FUNC(f) ((GSourceFunc) (void (*)(void)) (f)) /** * GChildWatchFunc: @@ -13575,20 +12522,6 @@ typedef gboolean (*GSourceFunc) (gpointer user_data); typedef void (*GChildWatchFunc) (GPid pid, gint status, gpointer user_data); - - -/** - * GSourceDisposeFunc: - * @source: #GSource that is currently being disposed - * - * Dispose function for @source. See g_source_set_dispose_function() for - * details. - * - * Since: 2.64 - */ -GLIB_AVAILABLE_TYPE_IN_2_64 -typedef void (*GSourceDisposeFunc) (GSource *source); - struct _GSource { /*< private >*/ @@ -13815,89 +12748,6 @@ GMainContext *g_main_context_get_thread_default (void); GLIB_AVAILABLE_IN_ALL GMainContext *g_main_context_ref_thread_default (void); -/** - * GMainContextPusher: - * - * Opaque type. See g_main_context_pusher_new() for details. - * - * Since: 2.64 - */ -typedef void GMainContextPusher GLIB_AVAILABLE_TYPE_IN_2_64; - -/** - * g_main_context_pusher_new: - * @main_context: (transfer none): a main context to push - * - * Push @main_context as the new thread-default main context for the current - * thread, using g_main_context_push_thread_default(), and return a new - * #GMainContextPusher. Pop with g_main_context_pusher_free(). Using - * g_main_context_pop_thread_default() on @main_context while a - * #GMainContextPusher exists for it can lead to undefined behaviour. - * - * Using two #GMainContextPushers in the same scope is not allowed, as it leads - * to an undefined pop order. - * - * This is intended to be used with g_autoptr(). Note that g_autoptr() - * is only available when using GCC or clang, so the following example - * will only work with those compilers: - * |[ - * typedef struct - * { - * ... - * GMainContext *context; - * ... - * } MyObject; - * - * static void - * my_object_do_stuff (MyObject *self) - * { - * g_autoptr(GMainContextPusher) pusher = g_main_context_pusher_new (self->context); - * - * // Code with main context as the thread default here - * - * if (cond) - * // No need to pop - * return; - * - * // Optionally early pop - * g_clear_pointer (&pusher, g_main_context_pusher_free); - * - * // Code with main context no longer the thread default here - * } - * ]| - * - * Returns: (transfer full): a #GMainContextPusher - * Since: 2.64 - */ -G_GNUC_BEGIN_IGNORE_DEPRECATIONS -static inline GMainContextPusher * -g_main_context_pusher_new (GMainContext *main_context) -{ - g_main_context_push_thread_default (main_context); - return (GMainContextPusher *) main_context; -} -G_GNUC_END_IGNORE_DEPRECATIONS - -/** - * g_main_context_pusher_free: - * @pusher: (transfer full): a #GMainContextPusher - * - * Pop @pusher’s main context as the thread default main context. - * See g_main_context_pusher_new() for details. - * - * This will pop the #GMainContext as the current thread-default main context, - * but will not call g_main_context_unref() on it. - * - * Since: 2.64 - */ -G_GNUC_BEGIN_IGNORE_DEPRECATIONS -static inline void -g_main_context_pusher_free (GMainContextPusher *pusher) -{ - g_main_context_pop_thread_default ((GMainContext *) pusher); -} -G_GNUC_END_IGNORE_DEPRECATIONS - /* GMainLoop: */ GLIB_AVAILABLE_IN_ALL @@ -13921,13 +12771,6 @@ GMainContext *g_main_loop_get_context (GMainLoop *loop); GLIB_AVAILABLE_IN_ALL GSource *g_source_new (GSourceFuncs *source_funcs, guint struct_size); - -G_GNUC_BEGIN_IGNORE_DEPRECATIONS -GLIB_AVAILABLE_IN_2_64 -void g_source_set_dispose_function (GSource *source, - GSourceDisposeFunc dispose); -G_GNUC_END_IGNORE_DEPRECATIONS - GLIB_AVAILABLE_IN_ALL GSource *g_source_ref (GSource *source); GLIB_AVAILABLE_IN_ALL @@ -14019,11 +12862,9 @@ GLIB_AVAILABLE_IN_ALL void g_source_remove_child_source (GSource *source, GSource *child_source); -G_GNUC_BEGIN_IGNORE_DEPRECATIONS GLIB_DEPRECATED_IN_2_28_FOR(g_source_get_time) void g_source_get_current_time (GSource *source, GTimeVal *timeval); -G_GNUC_END_IGNORE_DEPRECATIONS GLIB_AVAILABLE_IN_ALL gint64 g_source_get_time (GSource *source); @@ -14045,11 +12886,8 @@ GSource *g_timeout_source_new_seconds (guint interval); /* Miscellaneous functions */ -G_GNUC_BEGIN_IGNORE_DEPRECATIONS -GLIB_DEPRECATED_IN_2_62_FOR(g_get_real_time) +GLIB_AVAILABLE_IN_ALL void g_get_current_time (GTimeVal *result); -G_GNUC_END_IGNORE_DEPRECATIONS - GLIB_AVAILABLE_IN_ALL gint64 g_get_monotonic_time (void); GLIB_AVAILABLE_IN_ALL @@ -14095,8 +12933,7 @@ void g_clear_handle_id (guint *tag_ptr, *_tag_ptr = 0; \ clear_func (_handle_id); \ } \ - } G_STMT_END \ - GLIB_AVAILABLE_MACRO_IN_2_56 + } G_STMT_END /* Idles, child watchers and timeouts */ GLIB_AVAILABLE_IN_ALL @@ -14348,7 +13185,9 @@ typedef enum * * Deprecated: 2.30: Use %G_UNICODE_SPACING_MARK. */ -#define G_UNICODE_COMBINING_MARK G_UNICODE_SPACING_MARK GLIB_DEPRECATED_MACRO_IN_2_30_FOR(G_UNICODE_SPACING_MARK) +#ifndef G_DISABLE_DEPRECATED +#define G_UNICODE_COMBINING_MARK G_UNICODE_SPACING_MARK +#endif /** * GUnicodeBreakType: @@ -14614,14 +13453,6 @@ typedef enum * @G_UNICODE_SCRIPT_MEDEFAIDRIN: Medefaidrin. Since: 2.58 * @G_UNICODE_SCRIPT_OLD_SOGDIAN: Old Sogdian. Since: 2.58 * @G_UNICODE_SCRIPT_SOGDIAN: Sogdian. Since: 2.58 - * @G_UNICODE_SCRIPT_ELYMAIC: Elym. Since: 2.62 - * @G_UNICODE_SCRIPT_NANDINAGARI: Nand. Since: 2.62 - * @G_UNICODE_SCRIPT_NYIAKENG_PUACHUE_HMONG: Rohg. Since: 2.62 - * @G_UNICODE_SCRIPT_WANCHO: Wcho. Since: 2.62 - * @G_UNICODE_SCRIPT_CHORASMIAN: Chorasmian. Since: 2.66 - * @G_UNICODE_SCRIPT_DIVES_AKURU: Dives Akuru. Since: 2.66 - * @G_UNICODE_SCRIPT_KHITAN_SMALL_SCRIPT: Khitan small script. Since: 2.66 - * @G_UNICODE_SCRIPT_YEZIDI: Yezidi. Since: 2.66 * * The #GUnicodeScript enumeration identifies different writing * systems. The values correspond to the names as defined in the @@ -14763,7 +13594,7 @@ typedef enum G_UNICODE_SCRIPT_KHUDAWADI, /* Sind */ G_UNICODE_SCRIPT_LINEAR_A, /* Lina */ G_UNICODE_SCRIPT_MAHAJANI, /* Mahj */ - G_UNICODE_SCRIPT_MANICHAEAN, /* Mani */ + G_UNICODE_SCRIPT_MANICHAEAN, /* Manu */ G_UNICODE_SCRIPT_MENDE_KIKAKUI, /* Mend */ G_UNICODE_SCRIPT_MODI, /* Modi */ G_UNICODE_SCRIPT_MRO, /* Mroo */ @@ -14807,19 +13638,7 @@ typedef enum G_UNICODE_SCRIPT_MAKASAR, /* Maka */ G_UNICODE_SCRIPT_MEDEFAIDRIN, /* Medf */ G_UNICODE_SCRIPT_OLD_SOGDIAN, /* Sogo */ - G_UNICODE_SCRIPT_SOGDIAN, /* Sogd */ - - /* Unicode 12.0 additions */ - G_UNICODE_SCRIPT_ELYMAIC, /* Elym */ - G_UNICODE_SCRIPT_NANDINAGARI, /* Nand */ - G_UNICODE_SCRIPT_NYIAKENG_PUACHUE_HMONG, /* Rohg */ - G_UNICODE_SCRIPT_WANCHO, /* Wcho */ - - /* Unicode 13.0 additions */ - G_UNICODE_SCRIPT_CHORASMIAN, /* Chrs */ - G_UNICODE_SCRIPT_DIVES_AKURU, /* Diak */ - G_UNICODE_SCRIPT_KHITAN_SMALL_SCRIPT, /* Kits */ - G_UNICODE_SCRIPT_YEZIDI /* Yezi */ + G_UNICODE_SCRIPT_SOGDIAN /* Sogd */ } GUnicodeScript; GLIB_AVAILABLE_IN_ALL @@ -15278,8 +14097,10 @@ GString *g_string_down (GString *string); GLIB_DEPRECATED GString *g_string_up (GString *string); -#define g_string_sprintf g_string_printf GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_string_printf) -#define g_string_sprintfa g_string_append_printf GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_string_append_printf) +#ifndef G_DISABLE_DEPRECATED +#define g_string_sprintf g_string_printf +#define g_string_sprintfa g_string_append_printf +#endif G_END_DECLS @@ -15293,6 +14114,9 @@ G_BEGIN_DECLS typedef struct _GIOChannel GIOChannel; typedef struct _GIOFuncs GIOFuncs; +typedef void (* GIOChannelCloseConvertersFunc) (GIOChannel * channel); +typedef void (* GIOChannelResetConvertersFunc) (GIOChannel * channel); + typedef enum { G_IO_ERROR_NONE, @@ -15373,8 +14197,8 @@ struct _GIOChannel guint is_writeable : 1; /* ditto */ guint is_seekable : 1; /* ditto */ - gpointer reserved1; - gpointer reserved2; + GIOChannelCloseConvertersFunc close_converters; + GIOChannelResetConvertersFunc reset_converters; }; typedef gboolean (*GIOFunc) (GIOChannel *source, @@ -15597,7 +14421,7 @@ void g_io_channel_win32_make_pollfd (GIOChannel *channel, GIOCondition condition, GPollFD *fd); -/* This can be used to wait until at least one of the channels is readable. +/* This can be used to wait a until at least one of the channels is readable. * On Unix you would do a select() on the file descriptors of the channels. */ GLIB_AVAILABLE_IN_ALL @@ -17036,8 +15860,7 @@ typedef enum G_VARIANT_PARSE_ERROR_UNEXPECTED_TOKEN, G_VARIANT_PARSE_ERROR_UNKNOWN_KEYWORD, G_VARIANT_PARSE_ERROR_UNTERMINATED_STRING_CONSTANT, - G_VARIANT_PARSE_ERROR_VALUE_EXPECTED, - G_VARIANT_PARSE_ERROR_RECURSION + G_VARIANT_PARSE_ERROR_VALUE_EXPECTED } GVariantParseError; #define G_VARIANT_PARSE_ERROR (g_variant_parse_error_quark ()) @@ -17492,7 +16315,7 @@ void g_log_structured_standard (const gchar *log_domain, #endif /* G_LOG_DOMAIN */ #if defined(G_HAVE_ISO_VARARGS) && !G_ANALYZER_ANALYZING -#if defined(G_LOG_USE_STRUCTURED) && GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_56 +#ifdef G_LOG_USE_STRUCTURED #define g_error(...) G_STMT_START { \ g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, \ __FILE__, G_STRINGIFY (__LINE__), \ @@ -17541,7 +16364,7 @@ void g_log_structured_standard (const gchar *log_domain, __VA_ARGS__) #endif #elif defined(G_HAVE_GNUC_VARARGS) && !G_ANALYZER_ANALYZING -#if defined(G_LOG_USE_STRUCTURED) && GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_56 +#ifdef G_LOG_USE_STRUCTURED #define g_error(format...) G_STMT_START { \ g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, \ __FILE__, G_STRINGIFY (__LINE__), \ @@ -17649,43 +16472,6 @@ g_debug (const gchar *format, } #endif /* !__GNUC__ */ -/** - * g_warning_once: - * @...: format string, followed by parameters to insert - * into the format string (as with printf()) - * - * Logs a warning only once. - * - * g_warning_once() calls g_warning() with the passed message the first time - * the statement is executed; subsequent times it is a no-op. - * - * Note! On platforms where the compiler doesn't support variadic macros, the - * warning is printed each time instead of only once. - * - * Since: 2.64 - */ -#if defined(G_HAVE_ISO_VARARGS) && !G_ANALYZER_ANALYZING -#define g_warning_once(...) \ - G_STMT_START { \ - static volatile int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; \ - if (g_atomic_int_compare_and_exchange (&G_PASTE (_GWarningOnceBoolean, __LINE__), \ - 0, 1)) \ - g_warning (__VA_ARGS__); \ - } G_STMT_END \ - GLIB_AVAILABLE_MACRO_IN_2_64 -#elif defined(G_HAVE_GNUC_VARARGS) && !G_ANALYZER_ANALYZING -#define g_warning_once(format...) \ - G_STMT_START { \ - static volatile int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; \ - if (g_atomic_int_compare_and_exchange (&G_PASTE (_GWarningOnceBoolean, __LINE__), \ - 0, 1)) \ - g_warning (format); \ - } G_STMT_END \ - GLIB_AVAILABLE_MACRO_IN_2_64 -#else -#define g_warning_once g_warning -#endif - /** * GPrintFunc: * @string: the message to output @@ -17960,12 +16746,11 @@ typedef enum /** * GOptionArg: * @G_OPTION_ARG_NONE: No extra argument. This is useful for simple flags. - * @G_OPTION_ARG_STRING: The option takes a UTF-8 string argument. + * @G_OPTION_ARG_STRING: The option takes a string argument. * @G_OPTION_ARG_INT: The option takes an integer argument. * @G_OPTION_ARG_CALLBACK: The option provides a callback (of type * #GOptionArgFunc) to parse the extra argument. - * @G_OPTION_ARG_FILENAME: The option takes a filename as argument, which will - be in the GLib filename encoding rather than UTF-8. + * @G_OPTION_ARG_FILENAME: The option takes a filename as argument. * @G_OPTION_ARG_STRING_ARRAY: The option takes a string argument, multiple * uses of the option are collected into an array of strings. * @G_OPTION_ARG_FILENAME_ARRAY: The option takes a filename as argument, @@ -18586,20 +17371,10 @@ GLIB_AVAILABLE_IN_ALL void g_queue_insert_before (GQueue *queue, GList *sibling, gpointer data); -GLIB_AVAILABLE_IN_2_62 -void g_queue_insert_before_link - (GQueue *queue, - GList *sibling, - GList *link_); GLIB_AVAILABLE_IN_ALL void g_queue_insert_after (GQueue *queue, GList *sibling, gpointer data); -GLIB_AVAILABLE_IN_2_62 -void g_queue_insert_after_link - (GQueue *queue, - GList *sibling, - GList *link_); GLIB_AVAILABLE_IN_ALL void g_queue_insert_sorted (GQueue *queue, gpointer data, @@ -19903,21 +18678,25 @@ void g_scanner_warn (GScanner *scanner, const gchar *format, ...) G_GNUC_PRINTF (2,3); +#ifndef G_DISABLE_DEPRECATED + /* keep downward source compatibility */ #define g_scanner_add_symbol( scanner, symbol, value ) G_STMT_START { \ g_scanner_scope_add_symbol ((scanner), 0, (symbol), (value)); \ -} G_STMT_END GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_scanner_scope_add_symbol) +} G_STMT_END #define g_scanner_remove_symbol( scanner, symbol ) G_STMT_START { \ g_scanner_scope_remove_symbol ((scanner), 0, (symbol)); \ -} G_STMT_END GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_scanner_scope_remove_symbol) +} G_STMT_END #define g_scanner_foreach_symbol( scanner, func, data ) G_STMT_START { \ g_scanner_scope_foreach_symbol ((scanner), 0, (func), (data)); \ -} G_STMT_END GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_scanner_scope_foreach_symbol) +} G_STMT_END /* The following two functions are deprecated and will be removed in * the next major release. They do no good. */ -#define g_scanner_freeze_symbol_table(scanner) ((void)0) GLIB_DEPRECATED_MACRO_IN_2_26 -#define g_scanner_thaw_symbol_table(scanner) ((void)0) GLIB_DEPRECATED_MACRO_IN_2_26 +#define g_scanner_freeze_symbol_table(scanner) ((void)0) +#define g_scanner_thaw_symbol_table(scanner) ((void)0) + +#endif /* G_DISABLE_DEPRECATED */ G_END_DECLS @@ -20295,7 +19074,7 @@ G_BEGIN_DECLS * @G_SPAWN_ERROR_ACCES: execv() returned `EACCES` * @G_SPAWN_ERROR_PERM: execv() returned `EPERM` * @G_SPAWN_ERROR_TOO_BIG: execv() returned `E2BIG` - * @G_SPAWN_ERROR_2BIG: deprecated alias for %G_SPAWN_ERROR_TOO_BIG (deprecated since GLib 2.32) + * @G_SPAWN_ERROR_2BIG: deprecated alias for %G_SPAWN_ERROR_TOO_BIG * @G_SPAWN_ERROR_NOEXEC: execv() returned `ENOEXEC` * @G_SPAWN_ERROR_NAMETOOLONG: execv() returned `ENAMETOOLONG` * @G_SPAWN_ERROR_NOENT: execv() returned `ENOENT` @@ -20322,7 +19101,9 @@ typedef enum G_SPAWN_ERROR_ACCES, /* execv() returned EACCES */ G_SPAWN_ERROR_PERM, /* execv() returned EPERM */ G_SPAWN_ERROR_TOO_BIG,/* execv() returned E2BIG */ - G_SPAWN_ERROR_2BIG GLIB_DEPRECATED_ENUMERATOR_IN_2_32_FOR(G_SPAWN_ERROR_TOO_BIG) = G_SPAWN_ERROR_TOO_BIG, +#ifndef G_DISABLE_DEPRECATED + G_SPAWN_ERROR_2BIG = G_SPAWN_ERROR_TOO_BIG, +#endif G_SPAWN_ERROR_NOEXEC, /* execv() returned ENOEXEC */ G_SPAWN_ERROR_NAMETOOLONG, /* "" "" ENAMETOOLONG */ G_SPAWN_ERROR_NOENT, /* "" "" ENOENT */ @@ -21004,17 +19785,11 @@ typedef void (*GTestFixtureFunc) (gpointer fixture, #define g_assert_cmpmem(m1, l1, m2, l2) G_STMT_START {\ gconstpointer __m1 = m1, __m2 = m2; \ int __l1 = l1, __l2 = l2; \ - if (__l1 != 0 && __m1 == NULL) \ - g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ - "assertion failed (" #l1 " == 0 || " #m1 " != NULL)"); \ - else if (__l2 != 0 && __m2 == NULL) \ - g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ - "assertion failed (" #l2 " == 0 || " #m2 " != NULL)"); \ - else if (__l1 != __l2) \ + if (__l1 != __l2) \ g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ #l1 " (len(" #m1 ")) == " #l2 " (len(" #m2 "))", \ (long double) __l1, "==", (long double) __l2, 'i'); \ - else if (__l1 != 0 && __m2 != NULL && memcmp (__m1, __m2, __l1) != 0) \ + else if (__l1 != 0 && memcmp (__m1, __m2, __l1) != 0) \ g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ "assertion failed (" #m1 " == " #m2 ")"); \ } G_STMT_END @@ -21265,8 +20040,6 @@ GLIB_AVAILABLE_IN_ALL void g_test_bug_base (const char *uri_pattern); GLIB_AVAILABLE_IN_ALL void g_test_bug (const char *bug_uri_snippet); -GLIB_AVAILABLE_IN_2_62 -void g_test_summary (const char *summary); /* measure test timings */ GLIB_AVAILABLE_IN_ALL void g_test_timer_start (void); @@ -21300,7 +20073,7 @@ void g_test_queue_destroy (GDestroyNotify destroy_func, * Test traps are guards around forked tests. * These flags determine what traps to set. * - * Deprecated: 2.38: #GTestTrapFlags is used only with g_test_trap_fork(), + * Deprecated: #GTestTrapFlags is used only with g_test_trap_fork(), * which is deprecated. g_test_trap_subprocess() uses * #GTestSubprocessFlags. */ @@ -21308,16 +20081,12 @@ typedef enum { G_TEST_TRAP_SILENCE_STDOUT = 1 << 7, G_TEST_TRAP_SILENCE_STDERR = 1 << 8, G_TEST_TRAP_INHERIT_STDIN = 1 << 9 -} GTestTrapFlags GLIB_DEPRECATED_TYPE_IN_2_38_FOR(GTestSubprocessFlags); - -G_GNUC_BEGIN_IGNORE_DEPRECATIONS +} GTestTrapFlags; GLIB_DEPRECATED_IN_2_38_FOR (g_test_trap_subprocess) gboolean g_test_trap_fork (guint64 usec_timeout, GTestTrapFlags test_trap_flags); -G_GNUC_END_IGNORE_DEPRECATIONS - typedef enum { G_TEST_SUBPROCESS_INHERIT_STDIN = 1 << 0, G_TEST_SUBPROCESS_INHERIT_STDOUT = 1 << 1, @@ -21699,22 +20468,18 @@ void g_timer_continue (GTimer *timer); GLIB_AVAILABLE_IN_ALL gdouble g_timer_elapsed (GTimer *timer, gulong *microseconds); -GLIB_AVAILABLE_IN_2_62 -gboolean g_timer_is_active (GTimer *timer); GLIB_AVAILABLE_IN_ALL void g_usleep (gulong microseconds); -G_GNUC_BEGIN_IGNORE_DEPRECATIONS -GLIB_DEPRECATED_IN_2_62 +GLIB_AVAILABLE_IN_ALL void g_time_val_add (GTimeVal *time_, glong microseconds); -GLIB_DEPRECATED_IN_2_62_FOR(g_date_time_new_from_iso8601) +GLIB_AVAILABLE_IN_ALL gboolean g_time_val_from_iso8601 (const gchar *iso_date, GTimeVal *time_); -GLIB_DEPRECATED_IN_2_62_FOR(g_date_time_format) +GLIB_AVAILABLE_IN_ALL gchar* g_time_val_to_iso8601 (GTimeVal *time_) G_GNUC_MALLOC; -G_GNUC_END_IGNORE_DEPRECATIONS G_END_DECLS @@ -21753,13 +20518,11 @@ G_END_DECLS G_BEGIN_DECLS -G_GNUC_BEGIN_IGNORE_DEPRECATIONS - -typedef struct _GTrashStack GTrashStack GLIB_DEPRECATED_TYPE_IN_2_48; +typedef struct _GTrashStack GTrashStack; struct _GTrashStack { GTrashStack *next; -} GLIB_DEPRECATED_TYPE_IN_2_48; +}; GLIB_DEPRECATED_IN_2_48 void g_trash_stack_push (GTrashStack **stack_p, @@ -21771,8 +20534,6 @@ gpointer g_trash_stack_peek (GTrashStack **stack_p); GLIB_DEPRECATED_IN_2_48 guint g_trash_stack_height (GTrashStack **stack_p); -G_GNUC_END_IGNORE_DEPRECATIONS - G_END_DECLS #endif /* __G_TRASH_STACK_H_ */ @@ -22056,11 +20817,11 @@ const gchar * glib_check_version (guint required_major, G_END_DECLS #endif /* __G_VERSION_H__ */ - #ifdef G_PLATFORM_WIN32 #include #endif +#ifndef G_DISABLE_DEPRECATED /* * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -22182,13 +20943,13 @@ G_END_DECLS G_BEGIN_DECLS -typedef struct _GCache GCache GLIB_DEPRECATED_TYPE_IN_2_26_FOR(GHashTable); +#ifndef G_DISABLE_DEPRECATED -typedef gpointer (*GCacheNewFunc) (gpointer key) GLIB_DEPRECATED_TYPE_IN_2_26; -typedef gpointer (*GCacheDupFunc) (gpointer value) GLIB_DEPRECATED_TYPE_IN_2_26; -typedef void (*GCacheDestroyFunc) (gpointer value) GLIB_DEPRECATED_TYPE_IN_2_26; +typedef struct _GCache GCache; -G_GNUC_BEGIN_IGNORE_DEPRECATIONS +typedef gpointer (*GCacheNewFunc) (gpointer key); +typedef gpointer (*GCacheDupFunc) (gpointer value); +typedef void (*GCacheDestroyFunc) (gpointer value); /* Caches */ @@ -22217,7 +20978,7 @@ void g_cache_value_foreach (GCache *cache, GHFunc func, gpointer user_data); -G_GNUC_END_IGNORE_DEPRECATIONS +#endif G_END_DECLS @@ -22338,6 +21099,8 @@ G_END_DECLS G_BEGIN_DECLS +#ifndef G_DISABLE_DEPRECATED + /* ============== Compat main loop stuff ================== */ /** @@ -22352,7 +21115,7 @@ G_BEGIN_DECLS * * Deprecated: 2.2: Use g_main_loop_new() instead */ -#define g_main_new(is_running) g_main_loop_new (NULL, is_running) GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_main_loop_new) +#define g_main_new(is_running) g_main_loop_new (NULL, is_running) /** * g_main_run: @@ -22362,7 +21125,7 @@ G_BEGIN_DECLS * * Deprecated: 2.2: Use g_main_loop_run() instead */ -#define g_main_run(loop) g_main_loop_run(loop) GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_main_loop_run) +#define g_main_run(loop) g_main_loop_run(loop) /** * g_main_quit: @@ -22373,7 +21136,7 @@ G_BEGIN_DECLS * * Deprecated: 2.2: Use g_main_loop_quit() instead */ -#define g_main_quit(loop) g_main_loop_quit(loop) GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_main_loop_quit) +#define g_main_quit(loop) g_main_loop_quit(loop) /** * g_main_destroy: @@ -22383,7 +21146,7 @@ G_BEGIN_DECLS * * Deprecated: 2.2: Use g_main_loop_unref() instead */ -#define g_main_destroy(loop) g_main_loop_unref(loop) GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_main_loop_unref) +#define g_main_destroy(loop) g_main_loop_unref(loop) /** * g_main_is_running: @@ -22395,7 +21158,7 @@ G_BEGIN_DECLS * * Deprecated: 2.2: Use g_main_loop_is_running() instead */ -#define g_main_is_running(loop) g_main_loop_is_running(loop) GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_main_loop_is_running) +#define g_main_is_running(loop) g_main_loop_is_running(loop) /** * g_main_iteration: @@ -22410,7 +21173,7 @@ G_BEGIN_DECLS * * Deprecated: 2.2: Use g_main_context_iteration() instead. */ -#define g_main_iteration(may_block) g_main_context_iteration (NULL, may_block) GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_main_context_iteration) +#define g_main_iteration(may_block) g_main_context_iteration (NULL, may_block) /** * g_main_pending: @@ -22422,7 +21185,7 @@ G_BEGIN_DECLS * * Deprected: 2.2: Use g_main_context_pending() instead. */ -#define g_main_pending() g_main_context_pending (NULL) GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_main_context_pending) +#define g_main_pending() g_main_context_pending (NULL) /** * g_main_set_poll_func: @@ -22433,7 +21196,9 @@ G_BEGIN_DECLS * * Deprecated: 2.2: Use g_main_context_set_poll_func() again */ -#define g_main_set_poll_func(func) g_main_context_set_poll_func (NULL, func) GLIB_DEPRECATED_MACRO_IN_2_26_FOR(g_main_context_set_poll_func) +#define g_main_set_poll_func(func) g_main_context_set_poll_func (NULL, func) + +#endif G_END_DECLS @@ -22576,7 +21341,7 @@ G_END_DECLS G_BEGIN_DECLS -G_GNUC_BEGIN_IGNORE_DEPRECATIONS +#ifndef G_DISABLE_DEPRECATED typedef enum { @@ -22584,7 +21349,9 @@ typedef enum G_THREAD_PRIORITY_NORMAL, G_THREAD_PRIORITY_HIGH, G_THREAD_PRIORITY_URGENT -} GThreadPriority GLIB_DEPRECATED_TYPE_IN_2_32; +} GThreadPriority; + +#endif struct _GThread { @@ -22595,7 +21362,9 @@ struct _GThread GThreadPriority priority; }; -typedef struct _GThreadFunctions GThreadFunctions GLIB_DEPRECATED_TYPE_IN_2_32; +#ifndef G_DISABLE_DEPRECATED + +typedef struct _GThreadFunctions GThreadFunctions; struct _GThreadFunctions { GMutex* (*mutex_new) (void); @@ -22632,7 +21401,7 @@ struct _GThreadFunctions void (*thread_self) (gpointer thread); gboolean (*thread_equal) (gpointer thread1, gpointer thread2); -} GLIB_DEPRECATED_TYPE_IN_2_32; +}; GLIB_VAR GThreadFunctions g_thread_functions_for_glib_use; GLIB_VAR gboolean g_thread_use_default_impl; @@ -22667,8 +21436,8 @@ void g_thread_foreach (GFunc thread_func, #include #endif -#define g_static_mutex_get_mutex g_static_mutex_get_mutex_impl GLIB_DEPRECATED_MACRO_IN_2_32 -#define G_STATIC_MUTEX_INIT { NULL } GLIB_DEPRECATED_MACRO_IN_2_32_FOR(g_mutex_init) +#define g_static_mutex_get_mutex g_static_mutex_get_mutex_impl +#define G_STATIC_MUTEX_INIT { NULL } typedef struct { GMutex *mutex; @@ -22676,14 +21445,14 @@ typedef struct /* only for ABI compatibility reasons */ pthread_mutex_t unused; #endif -} GStaticMutex GLIB_DEPRECATED_TYPE_IN_2_32_FOR(GMutex); +} GStaticMutex; #define g_static_mutex_lock(mutex) \ - g_mutex_lock (g_static_mutex_get_mutex (mutex)) GLIB_DEPRECATED_MACRO_IN_2_32_FOR(g_mutex_lock) + g_mutex_lock (g_static_mutex_get_mutex (mutex)) #define g_static_mutex_trylock(mutex) \ - g_mutex_trylock (g_static_mutex_get_mutex (mutex)) GLIB_DEPRECATED_MACRO_IN_2_32_FOR(g_mutex_trylock) + g_mutex_trylock (g_static_mutex_get_mutex (mutex)) #define g_static_mutex_unlock(mutex) \ - g_mutex_unlock (g_static_mutex_get_mutex (mutex)) GLIB_DEPRECATED_MACRO_IN_2_32_FOR(g_mutex_unlock) + g_mutex_unlock (g_static_mutex_get_mutex (mutex)) GLIB_DEPRECATED_IN_2_32_FOR(g_mutex_init) void g_static_mutex_init (GStaticMutex *mutex); @@ -22692,7 +21461,7 @@ void g_static_mutex_free (GStaticMutex *mutex); GLIB_DEPRECATED_IN_2_32_FOR(GMutex) GMutex *g_static_mutex_get_mutex_impl (GStaticMutex *mutex); -typedef struct _GStaticRecMutex GStaticRecMutex GLIB_DEPRECATED_TYPE_IN_2_32_FOR(GRecMutex); +typedef struct _GStaticRecMutex GStaticRecMutex; struct _GStaticRecMutex { /*< private >*/ @@ -22708,9 +21477,9 @@ struct _GStaticRecMutex #endif gdouble dummy; } unused; -} GLIB_DEPRECATED_TYPE_IN_2_32_FOR(GRecMutex); +}; -#define G_STATIC_REC_MUTEX_INIT { G_STATIC_MUTEX_INIT, 0, { 0 } } GLIB_DEPRECATED_MACRO_IN_2_32_FOR(g_rec_mutex_init) +#define G_STATIC_REC_MUTEX_INIT { G_STATIC_MUTEX_INIT, 0, { 0 } } GLIB_DEPRECATED_IN_2_32_FOR(g_rec_mutex_init) void g_static_rec_mutex_init (GStaticRecMutex *mutex); @@ -22733,7 +21502,7 @@ guint g_static_rec_mutex_unlock_full (GStaticRecMutex *mutex); GLIB_DEPRECATED_IN_2_32_FOR(g_rec_mutex_free) void g_static_rec_mutex_free (GStaticRecMutex *mutex); -typedef struct _GStaticRWLock GStaticRWLock GLIB_DEPRECATED_TYPE_IN_2_32_FOR(GRWLock); +typedef struct _GStaticRWLock GStaticRWLock; struct _GStaticRWLock { /*< private >*/ @@ -22744,9 +21513,9 @@ struct _GStaticRWLock gboolean have_writer; guint want_to_read; guint want_to_write; -} GLIB_DEPRECATED_TYPE_IN_2_32_FOR(GRWLock); +}; -#define G_STATIC_RW_LOCK_INIT { G_STATIC_MUTEX_INIT, NULL, NULL, 0, FALSE, 0, 0 } GLIB_DEPRECATED_MACRO_IN_2_32_FOR(g_rw_lock_init) +#define G_STATIC_RW_LOCK_INIT { G_STATIC_MUTEX_INIT, NULL, NULL, 0, FALSE, 0, 0 } GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_init) void g_static_rw_lock_init (GStaticRWLock *lock); @@ -22775,14 +21544,14 @@ void g_static_rw_lock_free (GStaticRWLock *lock); GLIB_DEPRECATED_IN_2_32 GPrivate * g_private_new (GDestroyNotify notify); -typedef struct _GStaticPrivate GStaticPrivate GLIB_DEPRECATED_TYPE_IN_2_32_FOR(GPrivate); +typedef struct _GStaticPrivate GStaticPrivate; struct _GStaticPrivate { /*< private >*/ guint index; -} GLIB_DEPRECATED_TYPE_IN_2_32_FOR(GPrivate); +}; -#define G_STATIC_PRIVATE_INIT { 0 } GLIB_DEPRECATED_MACRO_IN_2_32_FOR(G_PRIVATE_INIT) +#define G_STATIC_PRIVATE_INIT { 0 } GLIB_DEPRECATED_IN_2_32 void g_static_private_init (GStaticPrivate *private_key); @@ -22810,7 +21579,7 @@ gboolean g_thread_get_initialized (void); GLIB_VAR gboolean g_threads_got_initialized; -#define g_thread_supported() (1) GLIB_DEPRECATED_MACRO_IN_2_32 +#define g_thread_supported() (1) GLIB_DEPRECATED_IN_2_32 GMutex * g_mutex_new (void); @@ -22825,11 +21594,12 @@ gboolean g_cond_timed_wait (GCond *cond, GMutex *mutex, GTimeVal *timeval); -G_GNUC_END_IGNORE_DEPRECATIONS +#endif G_END_DECLS #endif /* __G_DEPRECATED_THREAD_H__ */ +#endif /* G_DISABLE_DEPRECATED */ /* * Copyright © 2015 Canonical Limited @@ -22868,10 +21638,6 @@ g_autoptr_cleanup_gstring_free (GString *string) g_string_free (string, TRUE); } -/* Ignore deprecations in case we refer to a type which was added in a more - * recent GLib version than the user’s #GLIB_VERSION_MAX_ALLOWED definition. */ -G_GNUC_BEGIN_IGNORE_DEPRECATIONS - /* If adding a cleanup here, please also add a test case to * glib/tests/autoptr.c */ @@ -22880,7 +21646,6 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GBookmarkFile, g_bookmark_file_free) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GBytes, g_bytes_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GChecksum, g_checksum_free) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDateTime, g_date_time_unref) -G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDate, g_date_free) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDir, g_dir_close) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GError, g_error_free) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GHashTable, g_hash_table_unref) @@ -22892,7 +21657,6 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GArray, g_array_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GPtrArray, g_ptr_array_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GByteArray, g_byte_array_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMainContext, g_main_context_unref) -G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMainContextPusher, g_main_context_pusher_free) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMainLoop, g_main_loop_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSource, g_source_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMappedFile, g_mapped_file_unref) @@ -22915,8 +21679,6 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GThread, g_thread_unref) G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(GMutex, g_mutex_clear) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMutexLocker, g_mutex_locker_free) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GRecMutexLocker, g_rec_mutex_locker_free) -G_DEFINE_AUTOPTR_CLEANUP_FUNC(GRWLockWriterLocker, g_rw_lock_writer_locker_free) -G_DEFINE_AUTOPTR_CLEANUP_FUNC(GRWLockReaderLocker, g_rw_lock_reader_locker_free) G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(GCond, g_cond_clear) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GTimer, g_timer_destroy) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GTimeZone, g_time_zone_unref) @@ -22931,8 +21693,6 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GVariantType, g_variant_type_free) G_DEFINE_AUTO_CLEANUP_FREE_FUNC(GStrv, g_strfreev, NULL) G_DEFINE_AUTOPTR_CLEANUP_FUNC (GRefString, g_ref_string_release) -G_GNUC_END_IGNORE_DEPRECATIONS - #undef __GLIB_H_INSIDE__ G_BEGIN_DECLS @@ -23180,9 +21940,7 @@ G_BEGIN_DECLS /* Reserved fundamental type numbers to create new fundamental * type IDs with G_TYPE_MAKE_FUNDAMENTAL(). - * - * Open an issue on https://gitlab.gnome.org/GNOME/glib/issues/new for - * reservations. + * Send email to gtk-devel-list@gnome.org for reservations. */ /** * G_TYPE_FUNDAMENTAL_SHIFT: @@ -23622,7 +22380,7 @@ struct _GTypeQuery * `your_type_get_instance_private()` function instead * Returns: (not nullable): a pointer to the private data structure */ -#define G_TYPE_INSTANCE_GET_PRIVATE(instance, g_type, c_type) ((c_type*) g_type_instance_get_private ((GTypeInstance*) (instance), (g_type))) GLIB_DEPRECATED_MACRO_IN_2_58_FOR(G_ADD_PRIVATE) +#define G_TYPE_INSTANCE_GET_PRIVATE(instance, g_type, c_type) ((c_type*) g_type_instance_get_private ((GTypeInstance*) (instance), (g_type))) /** * G_TYPE_CLASS_GET_PRIVATE: @@ -23664,17 +22422,14 @@ typedef enum /*< skip >*/ G_TYPE_DEBUG_SIGNALS = 1 << 1, G_TYPE_DEBUG_INSTANCE_COUNT = 1 << 2, G_TYPE_DEBUG_MASK = 0x07 -} GTypeDebugFlags GLIB_DEPRECATED_TYPE_IN_2_36; +} GTypeDebugFlags; /* --- prototypes --- */ -G_GNUC_BEGIN_IGNORE_DEPRECATIONS GLIB_DEPRECATED_IN_2_36 void g_type_init (void); GLIB_DEPRECATED_IN_2_36 void g_type_init_with_debug_flags (GTypeDebugFlags debug_flags); -G_GNUC_END_IGNORE_DEPRECATIONS - GLIB_AVAILABLE_IN_ALL const gchar * g_type_name (GType type); GLIB_AVAILABLE_IN_ALL @@ -24388,11 +23143,10 @@ guint g_type_get_type_registration_serial (void); typedef struct { ParentName##Class parent_class; } ModuleObjName##Class; \ \ _GLIB_DEFINE_AUTOPTR_CHAINUP (ModuleObjName, ParentName) \ - G_DEFINE_AUTOPTR_CLEANUP_FUNC (ModuleObjName##Class, g_type_class_unref) \ \ - G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) { \ + static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) { \ return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); } \ - G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) { \ + static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) { \ return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); } \ G_GNUC_END_IGNORE_DEPRECATIONS @@ -24405,8 +23159,8 @@ guint g_type_get_type_registration_serial (void); * @OBJ_NAME: The bare name of the type, in all caps (like 'WIDGET') * @ParentName: the name of the parent type, in camel case (like GtkWidget) * - * A convenience macro for emitting the usual declarations in the - * header file for a type which is intended to be subclassed. + * A convenience macro for emitting the usual declarations in the header file for a type which will is intended + * to be subclassed. * * You might use it in a header as follows: * @@ -24480,17 +23234,16 @@ guint g_type_get_type_registration_serial (void); struct _##ModuleObjName { ParentName parent_instance; }; \ \ _GLIB_DEFINE_AUTOPTR_CHAINUP (ModuleObjName, ParentName) \ - G_DEFINE_AUTOPTR_CLEANUP_FUNC (ModuleObjName##Class, g_type_class_unref) \ \ - G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) { \ + static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) { \ return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); } \ - G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) { \ + static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) { \ return G_TYPE_CHECK_CLASS_CAST (ptr, module_obj_name##_get_type (), ModuleObjName##Class); } \ - G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) { \ + static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) { \ return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); } \ - G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME##_CLASS (gpointer ptr) { \ + static inline gboolean MODULE##_IS_##OBJ_NAME##_CLASS (gpointer ptr) { \ return G_TYPE_CHECK_CLASS_TYPE (ptr, module_obj_name##_get_type ()); } \ - G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_GET_CLASS (gpointer ptr) { \ + static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_GET_CLASS (gpointer ptr) { \ return G_TYPE_INSTANCE_GET_CLASS (ptr, module_obj_name##_get_type (), ModuleObjName##Class); } \ G_GNUC_END_IGNORE_DEPRECATIONS @@ -24560,11 +23313,11 @@ guint g_type_get_type_registration_serial (void); \ _GLIB_DEFINE_AUTOPTR_CHAINUP (ModuleObjName, PrerequisiteName) \ \ - G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) { \ + static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) { \ return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); } \ - G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) { \ + static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) { \ return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); } \ - G_GNUC_UNUSED static inline ModuleObjName##Interface * MODULE##_##OBJ_NAME##_GET_IFACE (gpointer ptr) { \ + static inline ModuleObjName##Interface * MODULE##_##OBJ_NAME##_GET_IFACE (gpointer ptr) { \ return G_TYPE_INSTANCE_GET_INTERFACE (ptr, module_obj_name##_get_type (), ModuleObjName##Interface); } \ G_GNUC_END_IGNORE_DEPRECATIONS @@ -24616,11 +23369,6 @@ guint g_type_get_type_registration_serial (void); * Note that private structs added with this macros must have a struct * name of the form @TN Private. * - * The private instance data can be retrieved using the automatically generated - * getter function `t_n_get_instance_private()`. - * - * See also: G_ADD_PRIVATE() - * * Since: 2.38 */ #define G_DEFINE_TYPE_WITH_PRIVATE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, 0, G_ADD_PRIVATE (TN)) @@ -24685,7 +23433,6 @@ guint g_type_get_type_registration_serial (void); * gtk_gadget, * GTK_TYPE_WIDGET, * 0, - * G_ADD_PRIVATE (GtkGadget) * G_IMPLEMENT_INTERFACE (TYPE_GIZMO, * gtk_gadget_gizmo_init)); * ]| @@ -24694,18 +23441,11 @@ guint g_type_get_type_registration_serial (void); * static void gtk_gadget_init (GtkGadget *self); * static void gtk_gadget_class_init (GtkGadgetClass *klass); * static gpointer gtk_gadget_parent_class = NULL; - * static gint GtkGadget_private_offset; * static void gtk_gadget_class_intern_init (gpointer klass) * { * gtk_gadget_parent_class = g_type_class_peek_parent (klass); - * if (GtkGadget_private_offset != 0) - * g_type_class_adjust_private_offset (klass, &GtkGadget_private_offset); * gtk_gadget_class_init ((GtkGadgetClass*) klass); * } - * static inline gpointer gtk_gadget_get_instance_private (GtkGadget *self) - * { - * return (G_STRUCT_MEMBER_P (self, GtkGadget_private_offset)); - * } * * GType * gtk_gadget_get_type (void) @@ -24722,10 +23462,6 @@ guint g_type_get_type_registration_serial (void); * (GInstanceInitFunc) gtk_gadget_init, * 0); * { - * GtkGadget_private_offset = - * g_type_add_instance_private (g_define_type_id, sizeof (GtkGadgetPrivate)); - * } - * { * const GInterfaceInfo g_implement_interface_info = { * (GInterfaceInitFunc) gtk_gadget_gizmo_init * }; @@ -24869,9 +23605,9 @@ guint g_type_get_type_registration_serial (void); * Also note that private structs added with these macros must have a struct * name of the form `TypeNamePrivate`. * - * It is safe to call the `_get_instance_private` function on %NULL or invalid - * objects since it's only adding an offset to the instance pointer. In that - * case the returned pointer must not be dereferenced. + * It is safe to call _get_instance_private on %NULL or invalid object since + * it's only adding an offset to the instance pointer. In that case the returned + * pointer must not be dereferenced. * * Since: 2.38 */ @@ -25690,7 +24426,9 @@ typedef enum G_PARAM_CONSTRUCT_ONLY = 1 << 3, G_PARAM_LAX_VALIDATION = 1 << 4, G_PARAM_STATIC_NAME = 1 << 5, - G_PARAM_PRIVATE GLIB_DEPRECATED_ENUMERATOR_IN_2_26 = G_PARAM_STATIC_NAME, +#ifndef G_DISABLE_DEPRECATED + G_PARAM_PRIVATE = G_PARAM_STATIC_NAME, +#endif G_PARAM_STATIC_NICK = 1 << 6, G_PARAM_STATIC_BLURB = 1 << 7, /* User defined flags go here */ @@ -25725,7 +24463,7 @@ typedef enum /* --- typedefs & structures --- */ typedef struct _GParamSpec GParamSpec; typedef struct _GParamSpecClass GParamSpecClass; -typedef struct _GParameter GParameter GLIB_DEPRECATED_TYPE_IN_2_54; +typedef struct _GParameter GParameter; typedef struct _GParamSpecPool GParamSpecPool; /** * GParamSpec: (ref-func g_param_spec_ref_sink) (unref-func g_param_spec_uref) (set-value-func g_value_set_param) (get-value-func g_value_get_param) @@ -25806,7 +24544,7 @@ struct _GParameter /* auxiliary structure for _setv() variants */ { const gchar *name; GValue value; -} GLIB_DEPRECATED_TYPE_IN_2_54; +}; /* --- prototypes --- */ @@ -25841,7 +24579,7 @@ void g_param_value_set_default (GParamSpec *pspec, GValue *value); GLIB_AVAILABLE_IN_ALL gboolean g_param_value_defaults (GParamSpec *pspec, - const GValue *value); + GValue *value); GLIB_AVAILABLE_IN_ALL gboolean g_param_value_validate (GParamSpec *pspec, GValue *value); @@ -25929,9 +24667,6 @@ GLIB_AVAILABLE_IN_ALL GType g_param_type_register_static (const gchar *name, const GParamSpecTypeInfo *pspec_info); -GLIB_AVAILABLE_IN_2_66 -gboolean g_param_spec_is_valid_name (const gchar *name); - /* For registering builting types */ GType _g_param_type_register_static_constant (const gchar *name, const GParamSpecTypeInfo *pspec_info, @@ -26895,11 +25630,11 @@ typedef enum /** * GSignalMatchType: * @G_SIGNAL_MATCH_ID: The signal id must be equal. - * @G_SIGNAL_MATCH_DETAIL: The signal detail must be equal. + * @G_SIGNAL_MATCH_DETAIL: The signal detail be equal. * @G_SIGNAL_MATCH_CLOSURE: The closure must be the same. * @G_SIGNAL_MATCH_FUNC: The C closure callback must be the same. * @G_SIGNAL_MATCH_DATA: The closure data must be the same. - * @G_SIGNAL_MATCH_UNBLOCKED: Only unblocked signals may be matched. + * @G_SIGNAL_MATCH_UNBLOCKED: Only unblocked signals may matched. * * The match types specify what g_signal_handlers_block_matched(), * g_signal_handlers_unblock_matched() and g_signal_handlers_disconnect_matched() @@ -27073,8 +25808,6 @@ void g_signal_query (guint signal_id, GLIB_AVAILABLE_IN_ALL guint* g_signal_list_ids (GType itype, guint *n_ids); -GLIB_AVAILABLE_IN_2_66 -gboolean g_signal_is_valid_name (const gchar *name); GLIB_AVAILABLE_IN_ALL gboolean g_signal_parse_name (const gchar *detailed_signal, GType itype, @@ -27173,23 +25906,6 @@ guint g_signal_handlers_disconnect_matched (gpointer instance, gpointer func, gpointer data); -GLIB_AVAILABLE_IN_2_62 -void g_clear_signal_handler (gulong *handler_id_ptr, - gpointer instance); - -#undef g_clear_signal_handler -#define g_clear_signal_handler(handler_id_ptr, instance) \ - G_STMT_START { \ - G_STATIC_ASSERT (sizeof *(handler_id_ptr) == sizeof (gulong)); \ - gulong _handler_id = *(handler_id_ptr); \ - \ - if (_handler_id > 0) \ - { \ - g_signal_handler_disconnect ((instance), _handler_id); \ - *(handler_id_ptr) = 0; \ - } \ - } G_STMT_END \ - GLIB_AVAILABLE_MACRO_IN_2_62 /* --- overriding and chaining --- */ GLIB_AVAILABLE_IN_ALL @@ -28237,16 +26953,10 @@ GObject* g_object_new_with_properties (GType object_type, guint n_properties, const char *names[], const GValue values[]); - -G_GNUC_BEGIN_IGNORE_DEPRECATIONS - GLIB_DEPRECATED_IN_2_54_FOR(g_object_new_with_properties) gpointer g_object_newv (GType object_type, guint n_parameters, GParameter *parameters); - -G_GNUC_END_IGNORE_DEPRECATIONS - GLIB_AVAILABLE_IN_ALL GObject* g_object_new_valist (GType object_type, const gchar *first_property_name, @@ -28554,63 +27264,12 @@ static inline gboolean return TRUE; } -/* We need GCC for __extension__, which we need to sort out strict aliasing of @object_ptr */ -#if defined(__GNUC__) - -#define g_set_object(object_ptr, new_object) \ - (G_GNUC_EXTENSION ({ \ - G_STATIC_ASSERT (sizeof *(object_ptr) == sizeof (new_object)); \ - /* Only one access, please; work around type aliasing */ \ - union { char *in; GObject **out; } _object_ptr; \ - _object_ptr.in = (char *) (object_ptr); \ - /* Check types match */ \ - (void) (0 ? *(object_ptr) = (new_object), FALSE : FALSE); \ - (g_set_object) (_object_ptr.out, (GObject *) new_object); \ - })) \ - GLIB_AVAILABLE_MACRO_IN_2_44 - -#else /* if !defined(__GNUC__) */ - #define g_set_object(object_ptr, new_object) \ (/* Check types match. */ \ 0 ? *(object_ptr) = (new_object), FALSE : \ (g_set_object) ((GObject **) (object_ptr), (GObject *) (new_object)) \ ) -#endif /* !defined(__GNUC__) */ - -/** - * g_assert_finalize_object: (skip) - * @object: (transfer full) (type GObject.Object): an object - * - * Assert that @object is non-%NULL, then release one reference to it with - * g_object_unref() and assert that it has been finalized (i.e. that there - * are no more references). - * - * If assertions are disabled via `G_DISABLE_ASSERT`, - * this macro just calls g_object_unref() without any further checks. - * - * This macro should only be used in regression tests. - * - * Since: 2.62 - */ -static inline void -(g_assert_finalize_object) (GObject *object) -{ - gpointer weak_pointer = object; - - g_assert_true (G_IS_OBJECT (weak_pointer)); - g_object_add_weak_pointer (object, &weak_pointer); - g_object_unref (weak_pointer); - g_assert_null (weak_pointer); -} - -#ifdef G_DISABLE_ASSERT -#define g_assert_finalize_object(object) g_object_unref (object) -#else -#define g_assert_finalize_object(object) (g_assert_finalize_object ((GObject *) object)) -#endif - /** * g_clear_weak_pointer: (skip) * @weak_pointer_location: The memory address of a pointer @@ -29130,30 +27789,6 @@ void g_flags_complete_type_info (GType g_flags_type, G_END_DECLS #endif /* __G_ENUMS_H__ */ - -/* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ - -#ifndef __GOBJECT_ENUM_TYPES_H__ -#define __GOBJECT_ENUM_TYPES_H__ - - -G_BEGIN_DECLS - -/* enumerations from "../../../glib/gobject/../glib/gunicode.h" */ -GLIB_AVAILABLE_IN_2_60 GType g_unicode_type_get_type (void) G_GNUC_CONST; -#define G_TYPE_UNICODE_TYPE (g_unicode_type_get_type ()) -GLIB_AVAILABLE_IN_2_60 GType g_unicode_break_type_get_type (void) G_GNUC_CONST; -#define G_TYPE_UNICODE_BREAK_TYPE (g_unicode_break_type_get_type ()) -GLIB_AVAILABLE_IN_2_60 GType g_unicode_script_get_type (void) G_GNUC_CONST; -#define G_TYPE_UNICODE_SCRIPT (g_unicode_script_get_type ()) -GLIB_AVAILABLE_IN_2_60 GType g_normalize_mode_get_type (void) G_GNUC_CONST; -#define G_TYPE_NORMALIZE_MODE (g_normalize_mode_get_type ()) -G_END_DECLS - -#endif /* __GOBJECT_ENUM_TYPES_H__ */ - -/* Generated data ends here */ - /* GObject - GLib Type, Object, Parameter and Signal Library * Copyright (C) 1997-1999, 2000-2001 Tim Janik and Red Hat, Inc. * @@ -29604,7 +28239,7 @@ G_BEGIN_DECLS * * Deprecated: 2.32: Use #GArray instead of #GValueArray */ -#define G_TYPE_PARAM_VALUE_ARRAY (g_param_spec_types[18]) GLIB_DEPRECATED_MACRO_IN_2_32 +#define G_TYPE_PARAM_VALUE_ARRAY (g_param_spec_types[18]) /** * G_IS_PARAM_SPEC_VALUE_ARRAY: * @pspec: a valid #GParamSpec instance @@ -29615,7 +28250,7 @@ G_BEGIN_DECLS * * Deprecated: 2.32: Use #GArray instead of #GValueArray */ -#define G_IS_PARAM_SPEC_VALUE_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_VALUE_ARRAY)) GLIB_DEPRECATED_MACRO_IN_2_32 +#define G_IS_PARAM_SPEC_VALUE_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_VALUE_ARRAY)) /** * G_PARAM_SPEC_VALUE_ARRAY: * @pspec: a valid #GParamSpec instance @@ -29624,7 +28259,7 @@ G_BEGIN_DECLS * * Deprecated: 2.32: Use #GArray instead of #GValueArray */ -#define G_PARAM_SPEC_VALUE_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_VALUE_ARRAY, GParamSpecValueArray)) GLIB_DEPRECATED_MACRO_IN_2_32 +#define G_PARAM_SPEC_VALUE_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_VALUE_ARRAY, GParamSpecValueArray)) /** * G_TYPE_PARAM_OBJECT: @@ -30302,7 +28937,7 @@ GParamSpec* g_param_spec_variant (const gchar *name, # else /* !GOBJECT_STATIC_COMPILATION */ # ifdef GOBJECT_COMPILATION # ifdef DLL_EXPORT -# define GOBJECT_VAR extern __declspec(dllexport) +# define GOBJECT_VAR __declspec(dllexport) # else /* !DLL_EXPORT */ # define GOBJECT_VAR extern # endif /* !DLL_EXPORT */ @@ -30818,7 +29453,7 @@ G_BEGIN_DECLS * * Deprecated: 2.32: Use #GArray instead of #GValueArray */ -#define G_TYPE_VALUE_ARRAY (g_value_array_get_type ()) GLIB_DEPRECATED_MACRO_IN_2_32_FOR(G_TYPE_ARRAY) +#define G_TYPE_VALUE_ARRAY (g_value_array_get_type ()) /* --- typedefs & structs --- */ typedef struct _GValueArray GValueArray; @@ -31185,6 +29820,30 @@ G_END_DECLS #endif /* __G_VALUETYPES_H__ */ +/* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ + +#ifndef __GOBJECT_ENUM_TYPES_H__ +#define __GOBJECT_ENUM_TYPES_H__ + + +G_BEGIN_DECLS + +/* enumerations from "../../../glib/gobject/../glib/gunicode.h" */ +GLIB_AVAILABLE_IN_2_60 GType g_unicode_type_get_type (void) G_GNUC_CONST; +#define G_TYPE_UNICODE_TYPE (g_unicode_type_get_type ()) +GLIB_AVAILABLE_IN_2_60 GType g_unicode_break_type_get_type (void) G_GNUC_CONST; +#define G_TYPE_UNICODE_BREAK_TYPE (g_unicode_break_type_get_type ()) +GLIB_AVAILABLE_IN_2_60 GType g_unicode_script_get_type (void) G_GNUC_CONST; +#define G_TYPE_UNICODE_SCRIPT (g_unicode_script_get_type ()) +GLIB_AVAILABLE_IN_2_60 GType g_normalize_mode_get_type (void) G_GNUC_CONST; +#define G_TYPE_NORMALIZE_MODE (g_normalize_mode_get_type ()) +G_END_DECLS + +#endif /* __GOBJECT_ENUM_TYPES_H__ */ + +/* Generated data ends here */ + + /* * Copyright © 2015 Canonical Limited * @@ -31268,8 +29927,6 @@ typedef guint GumOS; typedef guint GumCallingConvention; typedef guint GumAbiType; typedef guint GumCpuType; -typedef guint GumCpuFeatures; -typedef guint GumInstructionEncoding; #define GUM_TYPE_CPU_TYPE (gum_cpu_type_get_type ()) typedef guint GumArgType; typedef struct _GumArgument GumArgument; @@ -31279,17 +29936,6 @@ typedef struct _GumX64CpuContext GumX64CpuContext; typedef struct _GumArmCpuContext GumArmCpuContext; typedef struct _GumArm64CpuContext GumArm64CpuContext; typedef struct _GumMipsCpuContext GumMipsCpuContext; -/* - * The only non-legacy big-endian configuration on 32-bit ARM systems is BE8. - * In this configuration, whilst the data is in big-endian, the code stream is - * still in little-endian. Since Capstone is disassembling the code stream, it - * should work in little-endian even on BE8 systems. - */ -#if G_BYTE_ORDER == G_LITTLE_ENDIAN || defined (__arm__) -# define GUM_DEFAULT_CS_ENDIAN CS_MODE_LITTLE_ENDIAN -#else -# define GUM_DEFAULT_CS_ENDIAN CS_MODE_BIG_ENDIAN -#endif #if !defined (__arm__) && !defined (__aarch64__) && !defined (__mips__) # define GUM_DEFAULT_CS_ARCH CS_ARCH_X86 # if GLIB_SIZEOF_VOID_P == 4 @@ -31301,21 +29947,18 @@ typedef GumX64CpuContext GumCpuContext; # endif #elif defined (__arm__) && !defined (__aarch64__) # define GUM_DEFAULT_CS_ARCH CS_ARCH_ARM -# define GUM_DEFAULT_CS_MODE \ - ((cs_mode) (CS_MODE_ARM | CS_MODE_V8 | GUM_DEFAULT_CS_ENDIAN)) +# define GUM_DEFAULT_CS_MODE CS_MODE_ARM typedef GumArmCpuContext GumCpuContext; #elif defined (__aarch64__) # define GUM_DEFAULT_CS_ARCH CS_ARCH_ARM64 -# define GUM_DEFAULT_CS_MODE GUM_DEFAULT_CS_ENDIAN +# define GUM_DEFAULT_CS_MODE CS_MODE_ARM typedef GumArm64CpuContext GumCpuContext; #elif defined (__mips__) # define GUM_DEFAULT_CS_ARCH CS_ARCH_MIPS -# if GLIB_SIZEOF_VOID_P == 4 -# define GUM_DEFAULT_CS_MODE ((cs_mode) \ - (CS_MODE_MIPS32 | GUM_DEFAULT_CS_ENDIAN)) +# if G_BYTE_ORDER == G_LITTLE_ENDIAN +# define GUM_DEFAULT_CS_MODE (CS_MODE_MIPS32 | CS_MODE_LITTLE_ENDIAN) # else -# define GUM_DEFAULT_CS_MODE ((cs_mode) \ - (CS_MODE_MIPS64 | GUM_DEFAULT_CS_ENDIAN)) +# define GUM_DEFAULT_CS_MODE (CS_MODE_MIPS32 | CS_MODE_BIG_ENDIAN) # endif typedef GumMipsCpuContext GumCpuContext; #endif @@ -31353,18 +29996,6 @@ enum _GumCpuType GUM_CPU_MIPS }; -enum _GumCpuFeatures -{ - GUM_CPU_AVX2 = 1 << 0, - GUM_CPU_PTRAUTH = 1 << 1, -}; - -enum _GumInstructionEncoding -{ - GUM_INSTRUCTION_DEFAULT, - GUM_INSTRUCTION_SPECIAL -}; - enum _GumArgType { GUM_ARG_ADDRESS, @@ -31455,57 +30086,48 @@ struct _GumArm64CpuContext struct _GumMipsCpuContext { - /* - * This structure represents the register state pushed onto the stack by the - * trampoline which allows us to vector from the original minimal assembly - * hook to architecture agnostic C code inside frida-gum. These registers are - * natively sized. Even if some have not been expanded to 64-bits from the - * MIPS32 architecture MIPS can only perform aligned data access and as such - * pushing zero extended values is simpler than attempting to push minimally - * sized data types. - */ - gsize pc; + guint32 pc; - gsize gp; - gsize sp; - gsize fp; - gsize ra; + guint32 gp; + guint32 sp; + guint32 fp; + guint32 ra; - gsize hi; - gsize lo; + guint32 hi; + guint32 lo; - gsize at; + guint32 at; - gsize v0; - gsize v1; + guint32 v0; + guint32 v1; - gsize a0; - gsize a1; - gsize a2; - gsize a3; + guint32 a0; + guint32 a1; + guint32 a2; + guint32 a3; - gsize t0; - gsize t1; - gsize t2; - gsize t3; - gsize t4; - gsize t5; - gsize t6; - gsize t7; - gsize t8; - gsize t9; + guint32 t0; + guint32 t1; + guint32 t2; + guint32 t3; + guint32 t4; + guint32 t5; + guint32 t6; + guint32 t7; + guint32 t8; + guint32 t9; - gsize s0; - gsize s1; - gsize s2; - gsize s3; - gsize s4; - gsize s5; - gsize s6; - gsize s7; + guint32 s0; + guint32 s1; + guint32 s2; + guint32 s3; + guint32 s4; + guint32 s5; + guint32 s6; + guint32 s7; - gsize k0; - gsize k1; + guint32 k0; + guint32 k1; }; enum _GumRelocationScenario @@ -31558,7 +30180,7 @@ enum _GumRelocationScenario #define GUM_MAX_PATH 260 #define GUM_MAX_TYPE_NAME 16 -#define GUM_MAX_SYMBOL_NAME 2048 +#define GUM_MAX_SYMBOL_NAME 2000 #define GUM_MAX_THREADS 768 #define GUM_MAX_CALL_DEPTH 32 @@ -31618,29 +30240,23 @@ enum _GumRelocationScenario #define GUM_FUNCPTR_TO_POINTER(f) (GSIZE_TO_POINTER (f)) #define GUM_POINTER_TO_FUNCPTR(t, p) ((t) GPOINTER_TO_SIZE (p)) -#define GUM_INT2_MASK 0x00000003U -#define GUM_INT4_MASK 0x0000000fU -#define GUM_INT5_MASK 0x0000001fU -#define GUM_INT6_MASK 0x0000003fU -#define GUM_INT8_MASK 0x000000ffU -#define GUM_INT10_MASK 0x000003ffU -#define GUM_INT11_MASK 0x000007ffU -#define GUM_INT12_MASK 0x00000fffU -#define GUM_INT14_MASK 0x00003fffU -#define GUM_INT16_MASK 0x0000ffffU -#define GUM_INT18_MASK 0x0003ffffU -#define GUM_INT19_MASK 0x0007ffffU -#define GUM_INT24_MASK 0x00ffffffU -#define GUM_INT26_MASK 0x03ffffffU -#define GUM_INT28_MASK 0x0fffffffU -#define GUM_INT32_MASK 0xffffffffU +#define GUM_INT5_MASK 0x0000001f +#define GUM_INT6_MASK 0x0000003f +#define GUM_INT8_MASK 0x000000ff +#define GUM_INT10_MASK 0x000003ff +#define GUM_INT11_MASK 0x000007ff +#define GUM_INT12_MASK 0x00000fff +#define GUM_INT14_MASK 0x00003fff +#define GUM_INT16_MASK 0x0000ffff +#define GUM_INT18_MASK 0x0003ffff +#define GUM_INT19_MASK 0x0007ffff +#define GUM_INT24_MASK 0x00ffffff +#define GUM_INT26_MASK 0x03ffffff +#define GUM_INT28_MASK 0x0fffffff #define GUM_IS_WITHIN_UINT7_RANGE(i) \ (((gint64) (i)) >= G_GINT64_CONSTANT (0) && \ ((gint64) (i)) <= G_GINT64_CONSTANT (127)) -#define GUM_IS_WITHIN_UINT8_RANGE(i) \ - (((gint64) (i)) >= G_GINT64_CONSTANT (0) && \ - ((gint64) (i)) <= G_GINT64_CONSTANT (255)) #define GUM_IS_WITHIN_INT8_RANGE(i) \ (((gint64) (i)) >= G_GINT64_CONSTANT (-128) && \ ((gint64) (i)) <= G_GINT64_CONSTANT (127)) @@ -31678,8 +30294,6 @@ enum _GumRelocationScenario (((gint64) (i)) >= (gint64) G_MININT32 && \ ((gint64) (i)) <= (gint64) G_MAXINT32) -GUM_API GumCpuFeatures gum_query_cpu_features (void); - GUM_API gpointer gum_cpu_context_get_nth_argument (GumCpuContext * self, guint n); GUM_API void gum_cpu_context_replace_nth_argument (GumCpuContext * self, @@ -31823,7 +30437,7 @@ G_END_DECLS #define __GUM_CLOAK_H__ /* - * Copyright (C) 2008-2020 Ole André Vadla Ravnås + * Copyright (C) 2008-2019 Ole André Vadla Ravnås * Copyright (C) 2008 Christian Berentsen * * Licence: wxWindows Library Licence, Version 3.1 @@ -31844,8 +30458,6 @@ G_END_DECLS G_BEGIN_DECLS -typedef guint GumPtrauthSupport; -typedef guint GumRwxSupport; typedef guint GumMemoryOperation; typedef guint GumPageProtection; typedef struct _GumAddressSpec GumAddressSpec; @@ -31854,20 +30466,6 @@ typedef struct _GumMatchPattern GumMatchPattern; typedef gboolean (* GumMemoryIsNearFunc) (gpointer memory, gpointer address); -enum _GumPtrauthSupport -{ - GUM_PTRAUTH_INVALID, - GUM_PTRAUTH_UNSUPPORTED, - GUM_PTRAUTH_SUPPORTED -}; - -enum _GumRwxSupport -{ - GUM_RWX_NONE, - GUM_RWX_ALLOCATIONS_ONLY, - GUM_RWX_FULL -}; - enum _GumMemoryOperation { GUM_MEMOP_INVALID, @@ -31900,17 +30498,11 @@ typedef void (* GumMemoryPatchApplyFunc) (gpointer mem, gpointer user_data); typedef gboolean (* GumMemoryScanMatchFunc) (GumAddress address, gsize size, gpointer user_data); -GUM_API void gum_internal_heap_ref (void); -GUM_API void gum_internal_heap_unref (void); +GUM_API void gum_memory_init (void); +GUM_API void gum_memory_deinit (void); -GUM_API gpointer gum_sign_code_pointer (gpointer value); -GUM_API gpointer gum_strip_code_pointer (gpointer value); -GUM_API GumAddress gum_sign_code_address (GumAddress value); -GUM_API GumAddress gum_strip_code_address (GumAddress value); -GUM_API GumPtrauthSupport gum_query_ptrauth_support (void); GUM_API guint gum_query_page_size (void); GUM_API gboolean gum_query_is_rwx_supported (void); -GUM_API GumRwxSupport gum_query_rwx_support (void); GUM_API gboolean gum_memory_is_readable (gconstpointer address, gsize len); GUM_API guint8 * gum_memory_read (gconstpointer address, gsize len, gsize * n_bytes_read); @@ -31928,8 +30520,6 @@ GUM_API GumMatchPattern * gum_match_pattern_new_from_string ( const gchar * match_combined_str); GUM_API void gum_match_pattern_free (GumMatchPattern * pattern); -GUM_API void gum_ensure_code_readable (gconstpointer address, gsize size); - GUM_API void gum_mprotect (gpointer address, gsize size, GumPageProtection page_prot); GUM_API gboolean gum_try_mprotect (gpointer address, gsize size, @@ -32095,7 +30685,6 @@ struct _GumSymbolDetails const GumSymbolSection * section; const gchar * name; GumAddress address; - gssize size; }; struct _GumSymbolSection @@ -32143,11 +30732,9 @@ typedef gboolean (* GumFoundMallocRangeFunc) ( GUM_API GumOS gum_process_get_native_os (void); GUM_API GumCodeSigningPolicy gum_process_get_code_signing_policy (void); GUM_API void gum_process_set_code_signing_policy (GumCodeSigningPolicy policy); -GUM_API const gchar * gum_process_query_libc_name (void); GUM_API gboolean gum_process_is_debugger_attached (void); GUM_API GumProcessId gum_process_get_id (void); GUM_API GumThreadId gum_process_get_current_thread_id (void); -GUM_API gboolean gum_process_has_thread (GumThreadId thread_id); GUM_API gboolean gum_process_modify_thread (GumThreadId thread_id, GumModifyThreadFunc func, gpointer user_data); GUM_API void gum_process_enumerate_threads (GumFoundThreadFunc func, @@ -32175,8 +30762,6 @@ GUM_API void gum_module_enumerate_ranges (const gchar * module_name, GUM_API GumAddress gum_module_find_base_address (const gchar * module_name); GUM_API GumAddress gum_module_find_export_by_name (const gchar * module_name, const gchar * symbol_name); -GUM_API GumAddress gum_module_find_symbol_by_name (const gchar * module_name, - const gchar * symbol_name); GUM_API GType gum_code_signing_policy_get_type (void) G_GNUC_CONST; GUM_API const gchar * gum_code_signing_policy_to_string ( @@ -32311,430 +30896,6 @@ GUM_API gboolean gum_code_segment_mark (gpointer code, gsize size, G_END_DECLS -#endif -/* - * Copyright (C) 2015-2020 Ole André Vadla Ravnås - * - * Licence: wxWindows Library Licence, Version 3.1 - */ - -#ifndef __GUM_DARWIN_MODULE_H__ -#define __GUM_DARWIN_MODULE_H__ - - -#define GUM_DARWIN_EXPORT_SYMBOL_FLAGS_KIND_ABSOLUTE 2 - -G_BEGIN_DECLS - -#define GUM_TYPE_DARWIN_MODULE (gum_darwin_module_get_type ()) -G_DECLARE_FINAL_TYPE (GumDarwinModule, gum_darwin_module, GUM_DARWIN, MODULE, - GObject) - -#define GUM_TYPE_DARWIN_MODULE_FLAGS (gum_darwin_module_flags_get_type ()) - -#define GUM_DARWIN_PORT_NULL 0 -#define GUM_DARWIN_EXPORT_KIND_MASK 3 - -typedef guint GumDarwinModuleFiletype; -typedef guint GumDarwinModuleFlags; -typedef gint GumDarwinCpuType; -typedef gint GumDarwinCpuSubtype; - -typedef struct _GumDarwinModuleImage GumDarwinModuleImage; - -typedef struct _GumDarwinModuleImageSegment GumDarwinModuleImageSegment; -typedef struct _GumDarwinSectionDetails GumDarwinSectionDetails; -typedef struct _GumDarwinChainedFixupsDetails GumDarwinChainedFixupsDetails; -typedef struct _GumDarwinRebaseDetails GumDarwinRebaseDetails; -typedef struct _GumDarwinBindDetails GumDarwinBindDetails; -typedef struct _GumDarwinThreadedItem GumDarwinThreadedItem; -typedef struct _GumDarwinInitPointersDetails GumDarwinInitPointersDetails; -typedef struct _GumDarwinInitOffsetsDetails GumDarwinInitOffsetsDetails; -typedef struct _GumDarwinTermPointersDetails GumDarwinTermPointersDetails; -typedef struct _GumDarwinSegment GumDarwinSegment; -typedef struct _GumDarwinExportDetails GumDarwinExportDetails; -typedef struct _GumDarwinSymbolDetails GumDarwinSymbolDetails; - -typedef guint8 GumDarwinRebaseType; -typedef guint8 GumDarwinBindType; -typedef guint8 GumDarwinThreadedItemType; -typedef gint GumDarwinBindOrdinal; -typedef guint8 GumDarwinBindSymbolFlags; -typedef guint8 GumDarwinExportSymbolKind; -typedef guint8 GumDarwinExportSymbolFlags; - -typedef guint GumDarwinPort; -typedef gint GumDarwinPageProtection; - -typedef gboolean (* GumFoundDarwinExportFunc) ( - const GumDarwinExportDetails * details, gpointer user_data); -typedef gboolean (* GumFoundDarwinSymbolFunc) ( - const GumDarwinSymbolDetails * details, gpointer user_data); -typedef gboolean (* GumFoundDarwinSectionFunc) ( - const GumDarwinSectionDetails * details, gpointer user_data); -typedef gboolean (* GumFoundDarwinChainedFixupsFunc) ( - const GumDarwinChainedFixupsDetails * details, gpointer user_data); -typedef gboolean (* GumFoundDarwinRebaseFunc) ( - const GumDarwinRebaseDetails * details, gpointer user_data); -typedef gboolean (* GumFoundDarwinBindFunc) ( - const GumDarwinBindDetails * details, gpointer user_data); -typedef gboolean (* GumFoundDarwinInitPointersFunc) ( - const GumDarwinInitPointersDetails * details, gpointer user_data); -typedef gboolean (* GumFoundDarwinInitOffsetsFunc) ( - const GumDarwinInitOffsetsDetails * details, gpointer user_data); -typedef gboolean (* GumFoundDarwinTermPointersFunc) ( - const GumDarwinTermPointersDetails * details, gpointer user_data); -typedef gboolean (* GumFoundDarwinDependencyFunc) (const gchar * path, - gpointer user_data); - -typedef struct _GumDyldInfoCommand GumDyldInfoCommand; -typedef struct _GumSymtabCommand GumSymtabCommand; -typedef struct _GumDysymtabCommand GumDysymtabCommand; - -struct _GumDarwinModule -{ - GObject parent; - - GumDarwinModuleFiletype filetype; - gchar * name; - gchar * uuid; - - GumDarwinPort task; - gboolean is_local; - gboolean is_kernel; - GumCpuType cpu_type; - GumPtrauthSupport ptrauth_support; - gsize pointer_size; - GumAddress base_address; - gchar * source_path; - GBytes * source_blob; - GumDarwinModuleFlags flags; - - GumDarwinModuleImage * image; - - const GumDyldInfoCommand * info; - const GumSymtabCommand * symtab; - const GumDysymtabCommand * dysymtab; - - GumAddress preferred_address; - - GArray * segments; - GArray * text_ranges; - - const guint8 * rebases; - const guint8 * rebases_end; - gpointer rebases_malloc_data; - - const guint8 * binds; - const guint8 * binds_end; - gpointer binds_malloc_data; - - const guint8 * lazy_binds; - const guint8 * lazy_binds_end; - gpointer lazy_binds_malloc_data; - - const guint8 * exports; - const guint8 * exports_end; - gpointer exports_malloc_data; - - GPtrArray * dependencies; - GPtrArray * reexports; -}; - -enum _GumDarwinModuleFiletype -{ - GUM_DARWIN_MODULE_FILETYPE_OBJECT = 1, - GUM_DARWIN_MODULE_FILETYPE_EXECUTE, - GUM_DARWIN_MODULE_FILETYPE_FVMLIB, - GUM_DARWIN_MODULE_FILETYPE_CORE, - GUM_DARWIN_MODULE_FILETYPE_PRELOAD, - GUM_DARWIN_MODULE_FILETYPE_DYLIB, - GUM_DARWIN_MODULE_FILETYPE_DYLINKER, - GUM_DARWIN_MODULE_FILETYPE_BUNDLE, - GUM_DARWIN_MODULE_FILETYPE_DYLIB_STUB, - GUM_DARWIN_MODULE_FILETYPE_DSYM, - GUM_DARWIN_MODULE_FILETYPE_KEXT_BUNDLE, - GUM_DARWIN_MODULE_FILETYPE_FILESET, -}; - -enum _GumDarwinModuleFlags -{ - GUM_DARWIN_MODULE_FLAGS_NONE = 0, - GUM_DARWIN_MODULE_FLAGS_HEADER_ONLY = (1 << 0), -}; - -enum _GumDarwinCpuArchType -{ - GUM_DARWIN_CPU_ARCH_ABI64 = 0x01000000, - GUM_DARWIN_CPU_ARCH_ABI64_32 = 0x02000000, -}; - -enum _GumDarwinCpuType -{ - GUM_DARWIN_CPU_X86 = 7, - GUM_DARWIN_CPU_X86_64 = 7 | GUM_DARWIN_CPU_ARCH_ABI64, - GUM_DARWIN_CPU_ARM = 12, - GUM_DARWIN_CPU_ARM64 = 12 | GUM_DARWIN_CPU_ARCH_ABI64, - GUM_DARWIN_CPU_ARM64_32 = 12 | GUM_DARWIN_CPU_ARCH_ABI64_32, -}; - -enum _GumDarwinCpuSubtype -{ - GUM_DARWIN_CPU_SUBTYPE_ARM64E = 2, - - GUM_DARWIN_CPU_SUBTYPE_MASK = 0x00ffffff, -}; - -struct _GumDarwinModuleImage -{ - gpointer data; - guint64 size; - gconstpointer linkedit; - - guint64 source_offset; - guint64 source_size; - guint64 shared_offset; - guint64 shared_size; - GArray * shared_segments; - - GBytes * bytes; - gpointer malloc_data; -}; - -struct _GumDarwinModuleImageSegment -{ - guint64 offset; - guint64 size; - GumDarwinPageProtection protection; -}; - -struct _GumDarwinSectionDetails -{ - gchar segment_name[17]; - gchar section_name[17]; - GumAddress vm_address; - guint64 size; - GumDarwinPageProtection protection; - guint32 file_offset; - guint32 flags; -}; - -struct _GumDarwinChainedFixupsDetails -{ - GumAddress vm_address; - guint64 file_offset; - guint32 size; -}; - -struct _GumDarwinRebaseDetails -{ - const GumDarwinSegment * segment; - guint64 offset; - GumDarwinRebaseType type; - GumAddress slide; -}; - -struct _GumDarwinBindDetails -{ - const GumDarwinSegment * segment; - guint64 offset; - GumDarwinBindType type; - GumDarwinBindOrdinal library_ordinal; - const gchar * symbol_name; - GumDarwinBindSymbolFlags symbol_flags; - gint64 addend; - guint16 threaded_table_size; -}; - -struct _GumDarwinThreadedItem -{ - gboolean is_authenticated; - GumDarwinThreadedItemType type; - guint16 delta; - guint8 key; - gboolean has_address_diversity; - guint16 diversity; - - guint16 bind_ordinal; - - GumAddress rebase_address; -}; - -struct _GumDarwinInitPointersDetails -{ - GumAddress address; - guint64 count; -}; - -struct _GumDarwinInitOffsetsDetails -{ - GumAddress address; - guint64 count; -}; - -struct _GumDarwinTermPointersDetails -{ - GumAddress address; - guint64 count; -}; - -struct _GumDarwinSegment -{ - gchar name[17]; - GumAddress vm_address; - guint64 vm_size; - guint64 file_offset; - guint64 file_size; - GumDarwinPageProtection protection; -}; - -struct _GumDarwinExportDetails -{ - const gchar * name; - guint64 flags; - - union - { - struct - { - guint64 offset; - }; - - struct - { - guint64 stub; - guint64 resolver; - }; - - struct - { - gint reexport_library_ordinal; - const gchar * reexport_symbol; - }; - }; -}; - -struct _GumDarwinSymbolDetails -{ - const gchar * name; - GumAddress address; - - /* These map 1:1 to their struct nlist / nlist_64 equivalents. */ - guint8 type; - guint8 section; - guint16 description; -}; - -enum _GumDarwinRebaseType -{ - GUM_DARWIN_REBASE_POINTER = 1, - GUM_DARWIN_REBASE_TEXT_ABSOLUTE32, - GUM_DARWIN_REBASE_TEXT_PCREL32, -}; - -enum _GumDarwinBindType -{ - GUM_DARWIN_BIND_POINTER = 1, - GUM_DARWIN_BIND_TEXT_ABSOLUTE32, - GUM_DARWIN_BIND_TEXT_PCREL32, - GUM_DARWIN_BIND_THREADED_TABLE, - GUM_DARWIN_BIND_THREADED_ITEMS, -}; - -enum _GumDarwinThreadedItemType -{ - GUM_DARWIN_THREADED_REBASE, - GUM_DARWIN_THREADED_BIND -}; - -enum _GumDarwinBindOrdinal -{ - GUM_DARWIN_BIND_SELF = 0, - GUM_DARWIN_BIND_MAIN_EXECUTABLE = -1, - GUM_DARWIN_BIND_FLAT_LOOKUP = -2, - GUM_DARWIN_BIND_WEAK_LOOKUP = -3, -}; - -enum _GumDarwinBindSymbolFlags -{ - GUM_DARWIN_BIND_WEAK_IMPORT = 0x1, - GUM_DARWIN_BIND_NON_WEAK_DEFINITION = 0x8, -}; - -enum _GumDarwinExportSymbolKind -{ - GUM_DARWIN_EXPORT_REGULAR, - GUM_DARWIN_EXPORT_THREAD_LOCAL, - GUM_DARWIN_EXPORT_ABSOLUTE -}; - -enum _GumDarwinExportSymbolFlags -{ - GUM_DARWIN_EXPORT_WEAK_DEFINITION = 0x04, - GUM_DARWIN_EXPORT_REEXPORT = 0x08, - GUM_DARWIN_EXPORT_STUB_AND_RESOLVER = 0x10, -}; - -GUM_API GumDarwinModule * gum_darwin_module_new_from_file (const gchar * path, - GumCpuType cpu_type, GumPtrauthSupport ptrauth_support, - GumDarwinModuleFlags flags, GError ** error); -GUM_API GumDarwinModule * gum_darwin_module_new_from_blob (GBytes * blob, - GumCpuType cpu_type, GumPtrauthSupport ptrauth_support, - GumDarwinModuleFlags flags, GError ** error); -GUM_API GumDarwinModule * gum_darwin_module_new_from_memory (const gchar * name, - GumDarwinPort task, GumAddress base_address, GumDarwinModuleFlags flags, - GError ** error); - -GUM_API gboolean gum_darwin_module_resolve_export (GumDarwinModule * self, - const gchar * symbol, GumDarwinExportDetails * details); -GUM_API GumAddress gum_darwin_module_resolve_symbol_address ( - GumDarwinModule * self, const gchar * symbol); -GUM_API gboolean gum_darwin_module_get_lacks_exports_for_reexports ( - GumDarwinModule * self); -GUM_API void gum_darwin_module_enumerate_imports (GumDarwinModule * self, - GumFoundImportFunc func, gpointer user_data); -GUM_API void gum_darwin_module_enumerate_exports (GumDarwinModule * self, - GumFoundDarwinExportFunc func, gpointer user_data); -GUM_API void gum_darwin_module_enumerate_symbols (GumDarwinModule * self, - GumFoundDarwinSymbolFunc func, gpointer user_data); -GUM_API GumAddress gum_darwin_module_get_slide (GumDarwinModule * self); -GUM_API const GumDarwinSegment * gum_darwin_module_get_nth_segment ( - GumDarwinModule * self, gsize index); -GUM_API void gum_darwin_module_enumerate_sections (GumDarwinModule * self, - GumFoundDarwinSectionFunc func, gpointer user_data); -GUM_API gboolean gum_darwin_module_is_address_in_text_section ( - GumDarwinModule * self, GumAddress address); -GUM_API void gum_darwin_module_enumerate_chained_fixups (GumDarwinModule * self, - GumFoundDarwinChainedFixupsFunc func, gpointer user_data); -GUM_API void gum_darwin_module_enumerate_rebases (GumDarwinModule * self, - GumFoundDarwinRebaseFunc func, gpointer user_data); -GUM_API void gum_darwin_module_enumerate_binds (GumDarwinModule * self, - GumFoundDarwinBindFunc func, gpointer user_data); -GUM_API void gum_darwin_module_enumerate_lazy_binds (GumDarwinModule * self, - GumFoundDarwinBindFunc func, gpointer user_data); -GUM_API void gum_darwin_module_enumerate_init_pointers (GumDarwinModule * self, - GumFoundDarwinInitPointersFunc func, gpointer user_data); -GUM_API void gum_darwin_module_enumerate_init_offsets (GumDarwinModule * self, - GumFoundDarwinInitOffsetsFunc func, gpointer user_data); -GUM_API void gum_darwin_module_enumerate_term_pointers (GumDarwinModule * self, - GumFoundDarwinTermPointersFunc func, gpointer user_data); -GUM_API void gum_darwin_module_enumerate_dependencies (GumDarwinModule * self, - GumFoundDarwinDependencyFunc func, gpointer user_data); -GUM_API const gchar * gum_darwin_module_get_dependency_by_ordinal ( - GumDarwinModule * self, gint ordinal); - -GUM_API void gum_darwin_threaded_item_parse (guint64 value, - GumDarwinThreadedItem * result); - -GUM_API GumDarwinModuleImage * gum_darwin_module_image_new (void); -GUM_API GumDarwinModuleImage * gum_darwin_module_image_dup ( - const GumDarwinModuleImage * other); -GUM_API void gum_darwin_module_image_free (GumDarwinModuleImage * image); - -GUM_API GType gum_darwin_module_flags_get_type (void) G_GNUC_CONST; - -G_END_DECLS - #endif /* * Copyright (C) 2009 Ole André Vadla Ravnås @@ -32845,10 +31006,6 @@ G_BEGIN_DECLS #define GUM_TYPE_EVENT_SINK (gum_event_sink_get_type ()) G_DECLARE_INTERFACE (GumEventSink, gum_event_sink, GUM, EVENT_SINK, GObject) -#define GUM_TYPE_DEFAULT_EVENT_SINK (gum_default_event_sink_get_type ()) -G_DECLARE_FINAL_TYPE (GumDefaultEventSink, gum_default_event_sink, GUM, - DEFAULT_EVENT_SINK, GObject) - struct _GumEventSinkInterface { GTypeInterface parent; @@ -32866,8 +31023,6 @@ GUM_API void gum_event_sink_process (GumEventSink * self, const GumEvent * ev); GUM_API void gum_event_sink_flush (GumEventSink * self); GUM_API void gum_event_sink_stop (GumEventSink * self); -GUM_API GumEventSink * gum_event_sink_make_default (void); - G_END_DECLS #endif @@ -33008,7 +31163,7 @@ G_END_DECLS #endif /* - * Copyright (C) 2008-2019 Ole André Vadla Ravnås + * Copyright (C) 2008-2018 Ole André Vadla Ravnås * Copyright (C) 2008 Christian Berentsen * * Licence: wxWindows Library Licence, Version 3.1 @@ -33027,7 +31182,7 @@ G_END_DECLS #define __GUM_INVOCATION_LISTENER_H__ /* - * Copyright (C) 2008-2019 Ole André Vadla Ravnås + * Copyright (C) 2008-2018 Ole André Vadla Ravnås * * Licence: wxWindows Library Licence, Version 3.1 */ @@ -33037,18 +31192,18 @@ G_END_DECLS -#define GUM_IC_GET_THREAD_DATA(context, data_type) \ +#define GUM_LINCTX_GET_THREAD_DATA(context, data_type) \ ((data_type *) gum_invocation_context_get_listener_thread_data (context, \ sizeof (data_type))) -#define GUM_IC_GET_FUNC_DATA(context, data_type) \ +#define GUM_LINCTX_GET_FUNC_DATA(context, data_type) \ ((data_type) gum_invocation_context_get_listener_function_data (context)) -#define GUM_IC_GET_INVOCATION_DATA(context, data_type) \ +#define GUM_LINCTX_GET_FUNC_INVDATA(context, data_type) \ ((data_type *) \ - gum_invocation_context_get_listener_invocation_data (context,\ + gum_invocation_context_get_listener_function_invocation_data (context,\ sizeof (data_type))) -#define GUM_IC_GET_REPLACEMENT_DATA(ctx, data_type) \ - ((data_type) gum_invocation_context_get_replacement_data (ctx)) +#define GUM_RINCTX_GET_FUNC_DATA(ctx, data_type) \ + ((data_type) gum_invocation_context_get_replacement_function_data (ctx)) typedef struct _GumInvocationBackend GumInvocationBackend; typedef struct _GumInvocationContext GumInvocationContext; @@ -33064,10 +31219,10 @@ struct _GumInvocationBackend gpointer (* get_listener_thread_data) (GumInvocationContext * context, gsize required_size); gpointer (* get_listener_function_data) (GumInvocationContext * context); - gpointer (* get_listener_invocation_data) ( + gpointer (* get_listener_function_invocation_data) ( GumInvocationContext * context, gsize required_size); - gpointer (* get_replacement_data) (GumInvocationContext * context); + gpointer (* get_replacement_function_data) (GumInvocationContext * context); gpointer state; gpointer data; @@ -33115,10 +31270,10 @@ GUM_API gpointer gum_invocation_context_get_listener_thread_data ( GumInvocationContext * context, gsize required_size); GUM_API gpointer gum_invocation_context_get_listener_function_data ( GumInvocationContext * context); -GUM_API gpointer gum_invocation_context_get_listener_invocation_data ( +GUM_API gpointer gum_invocation_context_get_listener_function_invocation_data ( GumInvocationContext * context, gsize required_size); -GUM_API gpointer gum_invocation_context_get_replacement_data ( +GUM_API gpointer gum_invocation_context_get_replacement_function_data ( GumInvocationContext * context); G_END_DECLS @@ -33157,7 +31312,6 @@ G_DECLARE_FINAL_TYPE (GumInterceptor, gum_interceptor, GUM, INTERCEPTOR, GObject) typedef GArray GumInvocationStack; -typedef guint GumInvocationState; typedef enum { @@ -33177,16 +31331,16 @@ typedef enum GUM_API GumInterceptor * gum_interceptor_obtain (void); -GUM_API GumAttachReturn gum_interceptor_attach (GumInterceptor * self, +GUM_API GumAttachReturn gum_interceptor_attach_listener (GumInterceptor * self, gpointer function_address, GumInvocationListener * listener, gpointer listener_function_data); -GUM_API void gum_interceptor_detach (GumInterceptor * self, +GUM_API void gum_interceptor_detach_listener (GumInterceptor * self, GumInvocationListener * listener); -GUM_API GumReplaceReturn gum_interceptor_replace (GumInterceptor * self, - gpointer function_address, gpointer replacement_function, - gpointer replacement_data); -GUM_API void gum_interceptor_revert (GumInterceptor * self, +GUM_API GumReplaceReturn gum_interceptor_replace_function ( + GumInterceptor * self, gpointer function_address, + gpointer replacement_function, gpointer replacement_function_data); +GUM_API void gum_interceptor_revert_function (GumInterceptor * self, gpointer function_address); GUM_API void gum_interceptor_begin_transaction (GumInterceptor * self); @@ -33205,9 +31359,6 @@ GUM_API void gum_interceptor_unignore_other_threads (GumInterceptor * self); GUM_API gpointer gum_invocation_stack_translate (GumInvocationStack * self, gpointer return_address); -GUM_API void gum_interceptor_save (GumInvocationState * state); -GUM_API void gum_interceptor_restore (GumInvocationState * state); - G_END_DECLS #endif @@ -33261,25 +31412,6 @@ GUM_API void gum_kernel_set_base_address (GumAddress base); G_END_DECLS -#endif -/* - * Copyright (C) 2015 Ole André Vadla Ravnås - * - * Licence: wxWindows Library Licence, Version 3.1 - */ - -#ifndef __GUM_LIBC_H__ -#define __GUM_LIBC_H__ - - -G_BEGIN_DECLS - -G_GNUC_INTERNAL gpointer gum_memset (gpointer dst, gint c, gsize n); -G_GNUC_INTERNAL gpointer gum_memcpy (gpointer dst, gconstpointer src, gsize n); -G_GNUC_INTERNAL gpointer gum_memmove (gpointer dst, gconstpointer src, gsize n); - -G_END_DECLS - #endif /* * Copyright (C) 2010-2018 Ole André Vadla Ravnås @@ -33351,143 +31483,6 @@ GUM_API void gum_memory_map_update (GumMemoryMap * self); G_END_DECLS -#endif -/* - * Copyright (C) 2017-2019 Ole André Vadla Ravnås - * - * Licence: wxWindows Library Licence, Version 3.1 - */ - -#ifndef __GUM_METAL_ARRAY_H__ -#define __GUM_METAL_ARRAY_H__ - - -typedef struct _GumMetalArray GumMetalArray; - -struct _GumMetalArray -{ - gpointer data; - guint length; - guint capacity; - - guint element_size; -}; - -G_BEGIN_DECLS - -GUM_API void gum_metal_array_init (GumMetalArray * array, guint element_size); -GUM_API void gum_metal_array_free (GumMetalArray * array); - -GUM_API gpointer gum_metal_array_element_at (GumMetalArray * self, - guint index_); -GUM_API gpointer gum_metal_array_insert_at (GumMetalArray * self, guint index_); -GUM_API void gum_metal_array_remove_at (GumMetalArray * self, guint index_); -GUM_API void gum_metal_array_remove_all (GumMetalArray * self); -GUM_API gpointer gum_metal_array_append (GumMetalArray * self); - -GUM_API void gum_metal_array_get_extents (GumMetalArray * self, - gpointer * start, gpointer * end); -GUM_API void gum_metal_array_ensure_capacity (GumMetalArray * self, - guint capacity); - -G_END_DECLS - -#endif -/* GLIB - Library of useful routines for C programming - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, see . - */ - -/* - * Modified by the GLib Team and others 1997-2000. See the AUTHORS - * file for a list of people on the GLib Team. See the ChangeLog - * files for a list of changes. These files are distributed with - * GLib at ftp://ftp.gtk.org/pub/gtk/. - */ - -#ifndef __GUM_METAL_HASH_H__ -#define __GUM_METAL_HASH_H__ - - -G_BEGIN_DECLS - -typedef struct _GumMetalHashTable GumMetalHashTable; -typedef struct _GumMetalHashTableIter GumMetalHashTableIter; - -struct _GumMetalHashTableIter -{ - gpointer dummy1; - gpointer dummy2; - gpointer dummy3; - int dummy4; - gboolean dummy5; - gpointer dummy6; -}; - -GUM_API GumMetalHashTable * gum_metal_hash_table_new (GHashFunc hash_func, - GEqualFunc key_equal_func); -GUM_API GumMetalHashTable * gum_metal_hash_table_new_full (GHashFunc hash_func, - GEqualFunc key_equal_func, GDestroyNotify key_destroy_func, - GDestroyNotify value_destroy_func); -GUM_API void gum_metal_hash_table_destroy (GumMetalHashTable * hash_table); -GUM_API gboolean gum_metal_hash_table_insert (GumMetalHashTable * hash_table, - gpointer key, gpointer value); -GUM_API gboolean gum_metal_hash_table_replace (GumMetalHashTable * hash_table, - gpointer key, gpointer value); -GUM_API gboolean gum_metal_hash_table_add (GumMetalHashTable * hash_table, - gpointer key); -GUM_API gboolean gum_metal_hash_table_remove (GumMetalHashTable * hash_table, - gconstpointer key); -GUM_API void gum_metal_hash_table_remove_all (GumMetalHashTable * hash_table); -GUM_API gboolean gum_metal_hash_table_steal (GumMetalHashTable * hash_table, - gconstpointer key); -GUM_API void gum_metal_hash_table_steal_all (GumMetalHashTable * hash_table); -GUM_API gpointer gum_metal_hash_table_lookup (GumMetalHashTable * hash_table, - gconstpointer key); -GUM_API gboolean gum_metal_hash_table_contains (GumMetalHashTable * hash_table, - gconstpointer key); -GUM_API gboolean gum_metal_hash_table_lookup_extended ( - GumMetalHashTable * hash_table, gconstpointer lookup_key, - gpointer * orig_key, gpointer * value); -GUM_API void gum_metal_hash_table_foreach (GumMetalHashTable * hash_table, - GHFunc func, gpointer user_data); -GUM_API gpointer gum_metal_hash_table_find (GumMetalHashTable * hash_table, - GHRFunc predicate, gpointer user_data); -GUM_API guint gum_metal_hash_table_foreach_remove ( - GumMetalHashTable * hash_table, GHRFunc func, gpointer user_data); -GUM_API guint gum_metal_hash_table_foreach_steal (GumMetalHashTable * hash_table, - GHRFunc func, gpointer user_data); -GUM_API guint gum_metal_hash_table_size (GumMetalHashTable * hash_table); - -GUM_API void gum_metal_hash_table_iter_init (GumMetalHashTableIter * iter, - GumMetalHashTable * hash_table); -GUM_API gboolean gum_metal_hash_table_iter_next (GumMetalHashTableIter * iter, - gpointer * key, gpointer * value); -GUM_API GumMetalHashTable* gum_metal_hash_table_iter_get_hash_table ( - GumMetalHashTableIter * iter); -GUM_API void gum_metal_hash_table_iter_remove (GumMetalHashTableIter * iter); -GUM_API void gum_metal_hash_table_iter_replace (GumMetalHashTableIter * iter, - gpointer value); -GUM_API void gum_metal_hash_table_iter_steal (GumMetalHashTableIter * iter); - -GUM_API GumMetalHashTable * gum_metal_hash_table_ref ( - GumMetalHashTable * hash_table); -GUM_API void gum_metal_hash_table_unref (GumMetalHashTable * hash_table); - -G_END_DECLS - #endif /* * Copyright (C) 2016 Ole André Vadla Ravnås @@ -33564,7 +31559,7 @@ G_END_DECLS #endif /* - * Copyright (C) 2010-2019 Ole André Vadla Ravnås + * Copyright (C) 2010 Ole André Vadla Ravnås * * Licence: wxWindows Library Licence, Version 3.1 */ @@ -33573,8 +31568,6 @@ G_END_DECLS #define __GUM_SPINLOCK_H__ -#define GUM_SPINLOCK_INIT { { 0, } } - G_BEGIN_DECLS typedef struct _GumSpinlock GumSpinlock; @@ -33585,6 +31578,7 @@ struct _GumSpinlock }; void gum_spinlock_init (GumSpinlock * spinlock); +void gum_spinlock_free (GumSpinlock * spinlock); void gum_spinlock_acquire (GumSpinlock * spinlock); void gum_spinlock_release (GumSpinlock * spinlock); @@ -33755,14 +31749,14 @@ typedef unsigned long long uint64_t; #endif #else #define CAPSTONE_API -#if (defined(__GNUC__) || defined(__IBMC__)) && !defined(CAPSTONE_STATIC) +#if defined(__GNUC__) && !defined(CAPSTONE_STATIC) #define CAPSTONE_EXPORT __attribute__((visibility("default"))) #else // defined(CAPSTONE_STATIC) #define CAPSTONE_EXPORT #endif #endif -#if (defined(__GNUC__) || defined(__IBMC__)) +#ifdef __GNUC__ #define CAPSTONE_DEPRECATED __attribute__((deprecated)) #elif defined(_MSC_VER) #define CAPSTONE_DEPRECATED __declspec(deprecated) @@ -33870,13 +31864,6 @@ typedef enum cs_mode { CS_MODE_RISCV32 = 1 << 0, ///< RISCV RV32G CS_MODE_RISCV64 = 1 << 1, ///< RISCV RV64G CS_MODE_RISCVC = 1 << 2, ///< RISCV compressed instructure mode - CS_MODE_MOS65XX_6502 = 1 << 1, ///< MOS65XXX MOS 6502 - CS_MODE_MOS65XX_65C02 = 1 << 2, ///< MOS65XXX WDC 65c02 - CS_MODE_MOS65XX_W65C02 = 1 << 3, ///< MOS65XXX WDC W65c02 - CS_MODE_MOS65XX_65816 = 1 << 4, ///< MOS65XXX WDC 65816, 8-bit m/x - CS_MODE_MOS65XX_65816_LONG_M = (1 << 5), ///< MOS65XXX WDC 65816, 16-bit m, 8-bit x - CS_MODE_MOS65XX_65816_LONG_X = (1 << 6), ///< MOS65XXX WDC 65816, 8-bit m, 16-bit x - CS_MODE_MOS65XX_65816_LONG_MX = CS_MODE_MOS65XX_65816_LONG_M | CS_MODE_MOS65XX_65816_LONG_X, } cs_mode; typedef void* (CAPSTONE_API *cs_malloc_t)(size_t size); @@ -33929,7 +31916,6 @@ typedef enum cs_opt_value { CS_OPT_SYNTAX_ATT, ///< X86 ATT asm syntax (CS_OPT_SYNTAX). CS_OPT_SYNTAX_NOREGNAME, ///< Prints register name with only number (CS_OPT_SYNTAX) CS_OPT_SYNTAX_MASM, ///< X86 Intel Masm syntax (CS_OPT_SYNTAX). - CS_OPT_SYNTAX_MOTOROLA, ///< MOS65XX use $ as hex prefix } cs_opt_value; /// Common instruction operand types - to be consistent across all architectures. @@ -35805,6 +33791,27 @@ typedef enum arm64_sysreg { ARM64_SYSREG_CPM_IOACC_CTL_EL3 = 0xFF90, } arm64_sysreg; +#if 0 +typedef enum arm64_msr_reg { + // System registers for MSR + ARM64_SYSREG_DBGDTRTX_EL0 = 0x9828, // 10 011 0000 0101 000 + ARM64_SYSREG_OSLAR_EL1 = 0x8084, // 10 000 0001 0000 100 + ARM64_SYSREG_PMSWINC_EL0 = 0xdce4, // 11 011 1001 1100 100 + + // Trace Registers + ARM64_SYSREG_TRCOSLAR = 0x8884, // 10 001 0001 0000 100 + ARM64_SYSREG_TRCLAR = 0x8be6, // 10 001 0111 1100 110 + + // GICv3 registers + ARM64_SYSREG_ICC_EOIR1_EL1 = 0xc661, // 11 000 1100 1100 001 + ARM64_SYSREG_ICC_EOIR0_EL1 = 0xc641, // 11 000 1100 1000 001 + ARM64_SYSREG_ICC_DIR_EL1 = 0xc659, // 11 000 1100 1011 001 + ARM64_SYSREG_ICC_SGI1R_EL1 = 0xc65d, // 11 000 1100 1011 101 + ARM64_SYSREG_ICC_ASGI1R_EL1 = 0xc65e, // 11 000 1100 1011 110 + ARM64_SYSREG_ICC_SGI0R_EL1 = 0xc65f, // 11 000 1100 1011 111 +} arm64_msr_reg; +#endif + /// System PState Field (MSR instruction) typedef enum arm64_pstate { ARM64_PSTATE_INVALID = 0, @@ -36015,6 +34022,35 @@ typedef enum arm64_prefetch_op { ARM64_PRFM_PSTL3STRM = 0x15 + 1, } arm64_prefetch_op; +#if 0 +static const SVEPREDPAT SVEPREDPATsList[] = { + { "pow2", 0x0 }, // 0 + { "vl1", 0x1 }, // 1 + { "vl2", 0x2 }, // 2 + { "vl3", 0x3 }, // 3 + { "vl4", 0x4 }, // 4 + { "vl5", 0x5 }, // 5 + { "vl6", 0x6 }, // 6 + { "vl7", 0x7 }, // 7 + { "vl8", 0x8 }, // 8 + { "vl16", 0x9 }, // 9 + { "vl32", 0xa }, // 10 + { "vl64", 0xb }, // 11 + { "vl128", 0xc }, // 12 + { "vl256", 0xd }, // 13 + { "mul4", 0x1d }, // 14 + { "mul3", 0x1e }, // 15 + { "all", 0x1f }, // 16 +}; + +static const ExactFPImm ExactFPImmsList[] = { + { "zero", 0x0, "0.0" }, // 0 + { "half", 0x1, "0.5" }, // 1 + { "one", 0x2, "1.0" }, // 2 + { "two", 0x3, "2.0" }, // 3 +}; +#endif + /// ARM64 registers typedef enum arm64_reg { ARM64_REG_INVALID = 0, @@ -37357,7 +35393,6 @@ typedef enum arm64_insn_group { ARM64_GRP_INT, ARM64_GRP_PRIVILEGE = 6, ///< = CS_GRP_PRIVILEGE ARM64_GRP_BRANCH_RELATIVE, ///< = CS_GRP_BRANCH_RELATIVE - ARM64_GRP_PAC, // Architecture-specific groups ARM64_GRP_CRYPTO = 128, @@ -37537,12 +35572,6 @@ typedef struct m68k_op_br_disp { uint8_t disp_size; ///< Size from m68k_op_br_disp_size type above } m68k_op_br_disp; -/// Register pair in one operand. -typedef struct cs_m68k_op_reg_pair { - m68k_reg reg_0; - m68k_reg reg_1; -} cs_m68k_op_reg_pair; - /// Instruction operand typedef struct cs_m68k_op { union { @@ -37550,7 +35579,10 @@ typedef struct cs_m68k_op { double dimm; ///< double imm float simm; ///< float imm m68k_reg reg; ///< register value for REG operand - cs_m68k_op_reg_pair reg_pair; ///< register pair in one operand + struct { ///< register pair in one operand + m68k_reg reg_0; + m68k_reg reg_1; + } reg_pair; }; m68k_op_mem mem; ///< data when operand is targeting memory @@ -47918,6 +45950,22 @@ typedef enum riscv_insn { //> Group of RISCV instructions typedef enum riscv_insn_group { +#if 0 + { RISCV_GRP_HASSTDEXTA, 0 }, + { RISCV_GRP_HASSTDEXTA, RISCV_GRP_ISRV64, 0 }, + { RISCV_GRP_HASSTDEXTC, 0 }, + { RISCV_GRP_HASSTDEXTC, RISCV_GRP_HASSTDEXTD, 0 }, + { RISCV_GRP_HASSTDEXTC, RISCV_GRP_HASSTDEXTF, RISCV_GRP_ISRV32, 0 }, + { RISCV_GRP_HASSTDEXTC, RISCV_GRP_ISRV32, 0 }, + { RISCV_GRP_HASSTDEXTC, RISCV_GRP_ISRV64, 0 }, + { RISCV_GRP_HASSTDEXTD, 0 }, + { RISCV_GRP_HASSTDEXTD, RISCV_GRP_ISRV64, 0 }, + { RISCV_GRP_HASSTDEXTF, 0 }, + { RISCV_GRP_HASSTDEXTF, RISCV_GRP_ISRV64, 0 }, + { RISCV_GRP_HASSTDEXTM, 0 }, + { RISCV_GRP_HASSTDEXTM, RISCV_GRP_ISRV64, 0 }, + { RISCV_GRP_ISRV64, 0 }, +#endif RISCV_GRP_INVALID = 0, // = CS_GRP_INVALID RISCV_GRP_JUMP, @@ -48220,9 +46268,6 @@ typedef enum mos65xx_reg { MOS65XX_REG_Y, ///< Y index register MOS65XX_REG_P, ///< status register MOS65XX_REG_SP, ///< stack pointer register - MOS65XX_REG_DP, ///< direct page register - MOS65XX_REG_B, ///< data bank register - MOS65XX_REG_K, ///< program bank register MOS65XX_REG_ENDING, // <-- mark the end of the list of registers } mos65xx_reg; @@ -48231,29 +46276,17 @@ typedef enum mos65xx_address_mode { MOS65XX_AM_NONE = 0, ///< No address mode. MOS65XX_AM_IMP, ///< implied addressing (no addressing mode) MOS65XX_AM_ACC, ///< accumulator addressing - MOS65XX_AM_IMM, ///< 8/16 Bit immediate value - MOS65XX_AM_REL, ///< relative addressing used by branches - MOS65XX_AM_INT, ///< interrupt addressing - MOS65XX_AM_BLOCK, ///< memory block addressing - MOS65XX_AM_ZP, ///< zeropage addressing - MOS65XX_AM_ZP_X, ///< indexed zeropage addressing by the X index register - MOS65XX_AM_ZP_Y, ///< indexed zeropage addressing by the Y index register - MOS65XX_AM_ZP_REL, ///< zero page address, branch relative address - MOS65XX_AM_ZP_IND, ///< indirect zeropage addressing - MOS65XX_AM_ZP_X_IND, ///< indexed zeropage indirect addressing by the X index register - MOS65XX_AM_ZP_IND_Y, ///< indirect zeropage indexed addressing by the Y index register - MOS65XX_AM_ZP_IND_LONG, ///< zeropage indirect long addressing - MOS65XX_AM_ZP_IND_LONG_Y, ///< zeropage indirect long addressing indexed by Y register MOS65XX_AM_ABS, ///< absolute addressing - MOS65XX_AM_ABS_X, ///< indexed absolute addressing by the X index register - MOS65XX_AM_ABS_Y, ///< indexed absolute addressing by the Y index register - MOS65XX_AM_ABS_IND, ///< absolute indirect addressing - MOS65XX_AM_ABS_X_IND, ///< indexed absolute indirect addressing by the X index register - MOS65XX_AM_ABS_IND_LONG, ///< absolute indirect long addressing - MOS65XX_AM_ABS_LONG, ///< absolute long address mode - MOS65XX_AM_ABS_LONG_X, ///< absolute long address mode, indexed by X register - MOS65XX_AM_SR, ///< stack relative addressing - MOS65XX_AM_SR_IND_Y, ///< indirect stack relative addressing indexed by the Y index register + MOS65XX_AM_ZP, ///< zeropage addressing + MOS65XX_AM_IMM, ///< 8 Bit immediate value + MOS65XX_AM_ABSX, ///< indexed absolute addressing by the X index register + MOS65XX_AM_ABSY, ///< indexed absolute addressing by the Y index register + MOS65XX_AM_INDX, ///< indexed indirect addressing by the X index register + MOS65XX_AM_INDY, ///< indirect indexed addressing by the Y index register + MOS65XX_AM_ZPX, ///< indexed zeropage addressing by the X index register + MOS65XX_AM_ZPY, ///< indexed zeropage addressing by the Y index register + MOS65XX_AM_REL, ///< relative addressing used by branches + MOS65XX_AM_IND, ///< absolute indirect addressing } mos65xx_address_mode; /// MOS65XX instruction @@ -48262,8 +46295,6 @@ typedef enum mos65xx_insn { MOS65XX_INS_ADC, MOS65XX_INS_AND, MOS65XX_INS_ASL, - MOS65XX_INS_BBR, - MOS65XX_INS_BBS, MOS65XX_INS_BCC, MOS65XX_INS_BCS, MOS65XX_INS_BEQ, @@ -48271,9 +46302,7 @@ typedef enum mos65xx_insn { MOS65XX_INS_BMI, MOS65XX_INS_BNE, MOS65XX_INS_BPL, - MOS65XX_INS_BRA, MOS65XX_INS_BRK, - MOS65XX_INS_BRL, MOS65XX_INS_BVC, MOS65XX_INS_BVS, MOS65XX_INS_CLC, @@ -48281,7 +46310,6 @@ typedef enum mos65xx_insn { MOS65XX_INS_CLI, MOS65XX_INS_CLV, MOS65XX_INS_CMP, - MOS65XX_INS_COP, MOS65XX_INS_CPX, MOS65XX_INS_CPY, MOS65XX_INS_DEC, @@ -48291,70 +46319,35 @@ typedef enum mos65xx_insn { MOS65XX_INS_INC, MOS65XX_INS_INX, MOS65XX_INS_INY, - MOS65XX_INS_JML, MOS65XX_INS_JMP, - MOS65XX_INS_JSL, MOS65XX_INS_JSR, MOS65XX_INS_LDA, MOS65XX_INS_LDX, MOS65XX_INS_LDY, MOS65XX_INS_LSR, - MOS65XX_INS_MVN, - MOS65XX_INS_MVP, MOS65XX_INS_NOP, MOS65XX_INS_ORA, - MOS65XX_INS_PEA, - MOS65XX_INS_PEI, - MOS65XX_INS_PER, MOS65XX_INS_PHA, - MOS65XX_INS_PHB, - MOS65XX_INS_PHD, - MOS65XX_INS_PHK, - MOS65XX_INS_PHP, - MOS65XX_INS_PHX, - MOS65XX_INS_PHY, MOS65XX_INS_PLA, - MOS65XX_INS_PLB, - MOS65XX_INS_PLD, + MOS65XX_INS_PHP, MOS65XX_INS_PLP, - MOS65XX_INS_PLX, - MOS65XX_INS_PLY, - MOS65XX_INS_REP, - MOS65XX_INS_RMB, MOS65XX_INS_ROL, MOS65XX_INS_ROR, MOS65XX_INS_RTI, - MOS65XX_INS_RTL, MOS65XX_INS_RTS, MOS65XX_INS_SBC, MOS65XX_INS_SEC, MOS65XX_INS_SED, MOS65XX_INS_SEI, - MOS65XX_INS_SEP, - MOS65XX_INS_SMB, MOS65XX_INS_STA, - MOS65XX_INS_STP, MOS65XX_INS_STX, MOS65XX_INS_STY, - MOS65XX_INS_STZ, MOS65XX_INS_TAX, MOS65XX_INS_TAY, - MOS65XX_INS_TCD, - MOS65XX_INS_TCS, - MOS65XX_INS_TDC, - MOS65XX_INS_TRB, - MOS65XX_INS_TSB, - MOS65XX_INS_TSC, MOS65XX_INS_TSX, MOS65XX_INS_TXA, MOS65XX_INS_TXS, - MOS65XX_INS_TXY, MOS65XX_INS_TYA, - MOS65XX_INS_TYX, - MOS65XX_INS_WAI, - MOS65XX_INS_WDM, - MOS65XX_INS_XBA, - MOS65XX_INS_XCE, MOS65XX_INS_ENDING, // <-- mark the end of the list of instructions } mos65xx_insn; @@ -48364,7 +46357,6 @@ typedef enum mos65xx_group_type { MOS65XX_GRP_JUMP, ///< = CS_GRP_JUMP MOS65XX_GRP_CALL, ///< = CS_GRP_RET MOS65XX_GRP_RET, ///< = CS_GRP_RET - MOS65XX_GRP_INT, ///< = CS_GRP_INT MOS65XX_GRP_IRET = 5, ///< = CS_GRP_IRET MOS65XX_GRP_BRANCH_RELATIVE = 6, ///< = CS_GRP_BRANCH_RELATIVE MOS65XX_GRP_ENDING,// <-- mark the end of the list of groups @@ -48383,8 +46375,8 @@ typedef struct cs_mos65xx_op { mos65xx_op_type type; ///< operand type union { mos65xx_reg reg; ///< register value for REG operand - uint16_t imm; ///< immediate value for IMM operand - uint32_t mem; ///< base/index/scale/disp value for MEM operand + uint8_t imm; ///< immediate value for IMM operand + uint16_t mem; ///< base/index/scale/disp value for MEM operand }; } cs_mos65xx_op; @@ -49092,7 +47084,7 @@ cs_err CAPSTONE_API cs_regs_access(csh handle, const cs_insn *insn, #endif /* - * Copyright (C) 2009-2019 Ole André Vadla Ravnås + * Copyright (C) 2009-2018 Ole André Vadla Ravnås * * Licence: wxWindows Library Licence, Version 3.1 */ @@ -49119,8 +47111,8 @@ struct _GumX86Writer guint8 * code; GumAddress pc; - GumMetalHashTable * label_defs; - GumMetalArray label_refs; + GHashTable * id_to_address; + GArray * label_refs; }; enum _GumCpuReg @@ -49436,7 +47428,7 @@ G_END_DECLS #endif /* - * Copyright (C) 2010-2020 Ole André Vadla Ravnås + * Copyright (C) 2010-2018 Ole André Vadla Ravnås * * Licence: wxWindows Library Licence, Version 3.1 */ @@ -49461,9 +47453,9 @@ struct _GumArmWriter guint32 * code; GumAddress pc; - GumMetalHashTable * label_defs; - GumMetalArray label_refs; - GumMetalArray literal_refs; + GHashTable * id_to_address; + GArray * label_refs; + GArray * literal_refs; const guint32 * earliest_literal_insn; }; @@ -49487,94 +47479,24 @@ GUM_API gboolean gum_arm_writer_flush (GumArmWriter * self); GUM_API gboolean gum_arm_writer_put_label (GumArmWriter * self, gconstpointer id); -GUM_API void gum_arm_writer_put_call_address_with_arguments ( - GumArmWriter * self, GumAddress func, guint n_args, ...); -GUM_API void gum_arm_writer_put_call_address_with_arguments_array ( - GumArmWriter * self, GumAddress func, guint n_args, - const GumArgument * args); - -GUM_API void gum_arm_writer_put_branch_address (GumArmWriter * self, - GumAddress address); - -GUM_API gboolean gum_arm_writer_can_branch_directly_between ( - GumArmWriter * self, GumAddress from, GumAddress to); GUM_API gboolean gum_arm_writer_put_b_imm (GumArmWriter * self, GumAddress target); -GUM_API gboolean gum_arm_writer_put_b_cond_imm (GumArmWriter * self, - arm_cc cc, GumAddress target); +GUM_API void gum_arm_writer_put_bx_reg (GumArmWriter * self, arm_reg reg); GUM_API void gum_arm_writer_put_b_label (GumArmWriter * self, gconstpointer label_id); -GUM_API void gum_arm_writer_put_b_cond_label (GumArmWriter * self, - arm_cc cc, gconstpointer label_id); -GUM_API gboolean gum_arm_writer_put_bl_imm (GumArmWriter * self, - GumAddress target); -GUM_API gboolean gum_arm_writer_put_blx_imm (GumArmWriter * self, - GumAddress target); -GUM_API void gum_arm_writer_put_bl_label (GumArmWriter * self, - gconstpointer label_id); -GUM_API void gum_arm_writer_put_bx_reg (GumArmWriter * self, arm_reg reg); -GUM_API void gum_arm_writer_put_blx_reg (GumArmWriter * self, arm_reg reg); -GUM_API void gum_arm_writer_put_ret (GumArmWriter * self); - -GUM_API void gum_arm_writer_put_push_registers (GumArmWriter * self, guint n, - ...); -GUM_API void gum_arm_writer_put_pop_registers (GumArmWriter * self, guint n, - ...); GUM_API gboolean gum_arm_writer_put_ldr_reg_address (GumArmWriter * self, arm_reg reg, GumAddress address); GUM_API gboolean gum_arm_writer_put_ldr_reg_u32 (GumArmWriter * self, arm_reg reg, guint32 val); -GUM_API gboolean gum_arm_writer_put_ldr_reg_reg_offset (GumArmWriter * self, - arm_reg dst_reg, arm_reg src_reg, gssize src_offset); -GUM_API gboolean gum_arm_writer_put_ldr_cond_reg_reg_offset ( - GumArmWriter * self, arm_cc cc, arm_reg dst_reg, arm_reg src_reg, - gssize src_offset); -GUM_API void gum_arm_writer_put_ldmia_reg_mask (GumArmWriter * self, - arm_reg reg, guint16 mask); -GUM_API gboolean gum_arm_writer_put_str_reg_reg_offset ( - GumArmWriter * self, arm_reg src_reg, arm_reg dst_reg, - gssize dst_offset); -GUM_API gboolean gum_arm_writer_put_str_cond_reg_reg_offset ( - GumArmWriter * self, arm_cc cc, arm_reg src_reg, - arm_reg dst_reg, gssize dst_offset); -GUM_API void gum_arm_writer_put_mov_reg_reg (GumArmWriter * self, - arm_reg dst_reg, arm_reg src_reg); -GUM_API void gum_arm_writer_put_mov_reg_reg_shift (GumArmWriter * self, - arm_reg dst_reg, arm_reg src_reg, arm_shifter shift, - guint16 shift_value); -GUM_API void gum_arm_writer_put_mov_reg_cpsr (GumArmWriter * self, arm_reg reg); -GUM_API void gum_arm_writer_put_mov_cpsr_reg (GumArmWriter * self, arm_reg reg); -GUM_API void gum_arm_writer_put_add_reg_u16 (GumArmWriter * self, - arm_reg dst_reg, guint16 val); -GUM_API void gum_arm_writer_put_add_reg_u32 (GumArmWriter * self, - arm_reg dst_reg, guint32 val); + GUM_API void gum_arm_writer_put_add_reg_reg_imm (GumArmWriter * self, arm_reg dst_reg, arm_reg src_reg, guint32 imm_val); -GUM_API void gum_arm_writer_put_add_reg_reg_reg (GumArmWriter * self, - arm_reg dst_reg, arm_reg src_reg1, arm_reg src_reg2); -GUM_API void gum_arm_writer_put_add_reg_reg_reg_shift (GumArmWriter * self, - arm_reg dst_reg, arm_reg src_reg1, arm_reg src_reg2, arm_shifter shift, - guint16 shift_value); -GUM_API void gum_arm_writer_put_sub_reg_u16 (GumArmWriter * self, - arm_reg dst_reg, guint16 val); -GUM_API void gum_arm_writer_put_sub_reg_u32 (GumArmWriter * self, - arm_reg dst_reg, guint32 val); -GUM_API void gum_arm_writer_put_sub_reg_reg_imm (GumArmWriter * self, +GUM_API void gum_arm_writer_put_ldr_reg_reg_imm (GumArmWriter * self, arm_reg dst_reg, arm_reg src_reg, guint32 imm_val); -GUM_API void gum_arm_writer_put_sub_reg_reg_reg (GumArmWriter * self, - arm_reg dst_reg, arm_reg src_reg1, arm_reg src_reg2); -GUM_API void gum_arm_writer_put_rsb_reg_reg_imm (GumArmWriter * self, - arm_reg dst_reg, arm_reg src_reg, guint32 imm_val); -GUM_API void gum_arm_writer_put_ands_reg_reg_imm (GumArmWriter * self, - arm_reg dst_reg, arm_reg src_reg, guint32 imm_val); -GUM_API void gum_arm_writer_put_cmp_reg_imm (GumArmWriter * self, - arm_reg dst_reg, guint32 imm_val); GUM_API void gum_arm_writer_put_nop (GumArmWriter * self); GUM_API void gum_arm_writer_put_breakpoint (GumArmWriter * self); -GUM_API void gum_arm_writer_put_brk_imm (GumArmWriter * self, - guint16 imm); GUM_API void gum_arm_writer_put_instruction (GumArmWriter * self, guint32 insn); GUM_API gboolean gum_arm_writer_put_bytes (GumArmWriter * self, @@ -49584,7 +47506,7 @@ G_END_DECLS #endif /* - * Copyright (C) 2010-2019 Ole André Vadla Ravnås + * Copyright (C) 2010-2018 Ole André Vadla Ravnås * * Licence: wxWindows Library Licence, Version 3.1 */ @@ -49609,9 +47531,9 @@ struct _GumThumbWriter guint16 * code; GumAddress pc; - GumMetalHashTable * label_defs; - GumMetalArray label_refs; - GumMetalArray literal_refs; + GHashTable * id_to_address; + GArray * label_refs; + GArray * literal_refs; const guint16 * earliest_literal_insn; }; @@ -49635,8 +47557,6 @@ GUM_API gboolean gum_thumb_writer_flush (GumThumbWriter * self); GUM_API gboolean gum_thumb_writer_put_label (GumThumbWriter * self, gconstpointer id); -GUM_API gboolean gum_thumb_writer_commit_label (GumThumbWriter * self, - gconstpointer id); GUM_API void gum_thumb_writer_put_call_address_with_arguments ( GumThumbWriter * self, GumAddress func, guint n_args, ...); @@ -49648,11 +47568,6 @@ GUM_API void gum_thumb_writer_put_call_reg_with_arguments ( GUM_API void gum_thumb_writer_put_call_reg_with_arguments_array ( GumThumbWriter * self, arm_reg reg, guint n_args, const GumArgument * args); -GUM_API void gum_thumb_writer_put_branch_address (GumThumbWriter * self, - GumAddress address); - -GUM_API gboolean gum_thumb_writer_can_branch_directly_between ( - GumThumbWriter * self, GumAddress from, GumAddress to); GUM_API void gum_thumb_writer_put_b_imm (GumThumbWriter * self, GumAddress target); GUM_API void gum_thumb_writer_put_b_label (GumThumbWriter * self, @@ -49698,14 +47613,6 @@ GUM_API void gum_thumb_writer_put_ldr_reg_reg (GumThumbWriter * self, arm_reg dst_reg, arm_reg src_reg); GUM_API gboolean gum_thumb_writer_put_ldr_reg_reg_offset (GumThumbWriter * self, arm_reg dst_reg, arm_reg src_reg, gsize src_offset); -GUM_API void gum_thumb_writer_put_ldrb_reg_reg (GumThumbWriter * self, - arm_reg dst_reg, arm_reg src_reg); -void gum_thumb_writer_put_ldrh_reg_reg (GumThumbWriter * self, arm_reg dst_reg, - arm_reg src_reg); -GUM_API gboolean gum_thumb_writer_put_vldr_reg_reg_offset ( - GumThumbWriter * self, arm_reg dst_reg, arm_reg src_reg, gssize src_offset); -GUM_API void gum_thumb_writer_put_ldmia_reg_mask (GumThumbWriter * self, - arm_reg reg, guint16 mask); GUM_API void gum_thumb_writer_put_str_reg_reg (GumThumbWriter * self, arm_reg src_reg, arm_reg dst_reg); GUM_API gboolean gum_thumb_writer_put_str_reg_reg_offset (GumThumbWriter * self, @@ -49714,10 +47621,6 @@ GUM_API void gum_thumb_writer_put_mov_reg_reg (GumThumbWriter * self, arm_reg dst_reg, arm_reg src_reg); GUM_API void gum_thumb_writer_put_mov_reg_u8 (GumThumbWriter * self, arm_reg dst_reg, guint8 imm_value); -GUM_API void gum_thumb_writer_put_mov_reg_cpsr (GumThumbWriter * self, - arm_reg reg); -GUM_API void gum_thumb_writer_put_mov_cpsr_reg (GumThumbWriter * self, - arm_reg reg); GUM_API gboolean gum_thumb_writer_put_add_reg_imm (GumThumbWriter * self, arm_reg dst_reg, gssize imm_value); GUM_API void gum_thumb_writer_put_add_reg_reg (GumThumbWriter * self, @@ -49734,14 +47637,6 @@ GUM_API void gum_thumb_writer_put_sub_reg_reg_reg (GumThumbWriter * self, arm_reg dst_reg, arm_reg left_reg, arm_reg right_reg); GUM_API gboolean gum_thumb_writer_put_sub_reg_reg_imm (GumThumbWriter * self, arm_reg dst_reg, arm_reg left_reg, gssize right_value); -GUM_API gboolean gum_thumb_writer_put_and_reg_reg_imm (GumThumbWriter * self, - arm_reg dst_reg, arm_reg left_reg, gssize right_value); -GUM_API gboolean gum_thumb_writer_put_or_reg_reg_imm (GumThumbWriter * self, - arm_reg dst_reg, arm_reg left_reg, gssize right_value); -GUM_API gboolean gum_thumb_writer_put_lsls_reg_reg_imm (GumThumbWriter * self, - arm_reg dst_reg, arm_reg left_reg, guint8 right_value); -GUM_API gboolean gum_thumb_writer_put_lsrs_reg_reg_imm (GumThumbWriter * self, - arm_reg dst_reg, arm_reg left_reg, guint8 right_value); GUM_API gboolean gum_thumb_writer_put_mrs_reg_reg (GumThumbWriter * self, arm_reg dst_reg, arm_sysreg src_reg); GUM_API gboolean gum_thumb_writer_put_msr_reg_reg (GumThumbWriter * self, @@ -49762,7 +47657,7 @@ G_END_DECLS #endif /* - * Copyright (C) 2014-2020 Ole André Vadla Ravnås + * Copyright (C) 2014-2018 Ole André Vadla Ravnås * Copyright (C) 2017 Antonio Ken Iannillo * * Licence: wxWindows Library Licence, Version 3.1 @@ -49784,17 +47679,13 @@ struct _GumArm64Writer { volatile gint ref_count; - GumOS target_os; - GumPtrauthSupport ptrauth_support; - GumAddress (* sign) (GumAddress value); - guint32 * base; guint32 * code; GumAddress pc; - GumMetalHashTable * label_defs; - GumMetalArray label_refs; - GumMetalArray literal_refs; + GHashTable * id_to_address; + GArray * label_refs; + GArray * literal_refs; const guint32 * earliest_literal_insn; }; @@ -49836,11 +47727,11 @@ GUM_API void gum_arm64_writer_put_call_reg_with_arguments_array ( GumArm64Writer * self, arm64_reg reg, guint n_args, const GumArgument * args); -GUM_API void gum_arm64_writer_put_branch_address (GumArm64Writer * self, +GUM_API gboolean gum_arm64_writer_put_branch_address (GumArm64Writer * self, GumAddress address); -GUM_API gboolean gum_arm64_writer_can_branch_directly_between ( - GumArm64Writer * self, GumAddress from, GumAddress to); +GUM_API gboolean gum_arm64_writer_can_branch_directly_between (GumAddress from, + GumAddress to); GUM_API gboolean gum_arm64_writer_put_b_imm (GumArm64Writer * self, GumAddress address); GUM_API void gum_arm64_writer_put_b_label (GumArm64Writer * self, @@ -49853,12 +47744,8 @@ GUM_API void gum_arm64_writer_put_bl_label (GumArm64Writer * self, gconstpointer label_id); GUM_API gboolean gum_arm64_writer_put_br_reg (GumArm64Writer * self, arm64_reg reg); -GUM_API gboolean gum_arm64_writer_put_br_reg_no_auth (GumArm64Writer * self, - arm64_reg reg); GUM_API gboolean gum_arm64_writer_put_blr_reg (GumArm64Writer * self, arm64_reg reg); -GUM_API gboolean gum_arm64_writer_put_blr_reg_no_auth (GumArm64Writer * self, - arm64_reg reg); GUM_API void gum_arm64_writer_put_ret (GumArm64Writer * self); GUM_API void gum_arm64_writer_put_cbz_reg_label (GumArm64Writer * self, arm64_reg reg, gconstpointer label_id); @@ -49920,9 +47807,6 @@ GUM_API gboolean gum_arm64_writer_put_tst_reg_imm (GumArm64Writer * self, GUM_API gboolean gum_arm64_writer_put_cmp_reg_reg (GumArm64Writer * self, arm64_reg reg_a, arm64_reg reg_b); -GUM_API gboolean gum_arm64_writer_put_xpaci_reg (GumArm64Writer * self, - arm64_reg reg); - GUM_API void gum_arm64_writer_put_nop (GumArm64Writer * self); GUM_API void gum_arm64_writer_put_brk_imm (GumArm64Writer * self, guint16 imm); @@ -49931,15 +47815,11 @@ GUM_API void gum_arm64_writer_put_instruction (GumArm64Writer * self, GUM_API gboolean gum_arm64_writer_put_bytes (GumArm64Writer * self, const guint8 * data, guint n); -GUM_API GumAddress gum_arm64_writer_sign (GumArm64Writer * self, - GumAddress value); - G_END_DECLS #endif /* - * Copyright (C) 2014-2019 Ole André Vadla Ravnås - * Copyright (C) 2019 Jon Wilson + * Copyright (C) 2014-2018 Ole André Vadla Ravnås * * Licence: wxWindows Library Licence, Version 3.1 */ @@ -49962,8 +47842,8 @@ struct _GumMipsWriter guint32 * code; GumAddress pc; - GumMetalHashTable * label_defs; - GumMetalArray label_refs; + GHashTable * id_to_address; + GArray * label_refs; }; GUM_API GumMipsWriter * gum_mips_writer_new (gpointer code_address); @@ -50000,8 +47880,6 @@ GUM_API gboolean gum_mips_writer_can_branch_directly_between (GumAddress from, GumAddress to); GUM_API gboolean gum_mips_writer_put_j_address (GumMipsWriter * self, GumAddress address); -GUM_API gboolean gum_mips_writer_put_j_address_without_nop ( - GumMipsWriter * self, GumAddress address); GUM_API void gum_mips_writer_put_j_label (GumMipsWriter * self, gconstpointer label_id); GUM_API void gum_mips_writer_put_jr_reg (GumMipsWriter * self, mips_reg reg); @@ -50017,12 +47895,8 @@ GUM_API void gum_mips_writer_put_la_reg_address (GumMipsWriter * self, mips_reg reg, GumAddress address); GUM_API void gum_mips_writer_put_lui_reg_imm (GumMipsWriter * self, mips_reg reg, guint imm); -GUM_API void gum_mips_writer_put_dsll_reg_reg (GumMipsWriter * self, - mips_reg dst_reg, mips_reg src_reg, guint amount); GUM_API void gum_mips_writer_put_ori_reg_reg_imm (GumMipsWriter * self, mips_reg rt, mips_reg rs, guint imm); -GUM_API void gum_mips_writer_put_ld_reg_reg_offset (GumMipsWriter * self, - mips_reg dst_reg, mips_reg src_reg, gsize src_offset); GUM_API void gum_mips_writer_put_lw_reg_reg_offset (GumMipsWriter * self, mips_reg dst_reg, mips_reg src_reg, gsize src_offset); GUM_API void gum_mips_writer_put_sw_reg_reg_offset (GumMipsWriter * self, @@ -50032,11 +47906,11 @@ GUM_API void gum_mips_writer_put_move_reg_reg (GumMipsWriter * self, GUM_API void gum_mips_writer_put_addu_reg_reg_reg (GumMipsWriter * self, mips_reg dst_reg, mips_reg left_reg, mips_reg right_reg); GUM_API void gum_mips_writer_put_addi_reg_reg_imm (GumMipsWriter * self, - mips_reg dst_reg, mips_reg left_reg, gint32 imm); + mips_reg dest_reg, mips_reg left_reg, gint32 imm); GUM_API void gum_mips_writer_put_addi_reg_imm (GumMipsWriter * self, - mips_reg dst_reg, gint32 imm); + mips_reg dest_reg, gint32 imm); GUM_API void gum_mips_writer_put_sub_reg_reg_imm (GumMipsWriter * self, - mips_reg dst_reg, mips_reg left_reg, gint32 imm); + mips_reg dest_reg, mips_reg left_reg, gint32 imm); GUM_API void gum_mips_writer_put_push_reg (GumMipsWriter * self, mips_reg reg); GUM_API void gum_mips_writer_put_pop_reg (GumMipsWriter * self, mips_reg reg); @@ -50049,9 +47923,6 @@ GUM_API void gum_mips_writer_put_mtlo_reg (GumMipsWriter * self, mips_reg reg); GUM_API void gum_mips_writer_put_nop (GumMipsWriter * self); GUM_API void gum_mips_writer_put_break (GumMipsWriter * self); -GUM_API void gum_mips_writer_put_prologue_trampoline (GumMipsWriter * self, - mips_reg reg, GumAddress address); - GUM_API void gum_mips_writer_put_instruction (GumMipsWriter * self, guint32 insn); GUM_API gboolean gum_mips_writer_put_bytes (GumMipsWriter * self, @@ -50083,10 +47954,9 @@ G_DECLARE_FINAL_TYPE (GumCallbackStalkerTransformer, GObject) typedef struct _GumStalkerIterator GumStalkerIterator; -typedef struct _GumStalkerOutput GumStalkerOutput; typedef union _GumStalkerWriter GumStalkerWriter; typedef void (* GumStalkerTransformerCallback) (GumStalkerIterator * iterator, - GumStalkerOutput * output, gpointer user_data); + GumStalkerWriter * output, gpointer user_data); typedef void (* GumStalkerCallout) (GumCpuContext * cpu_context, gpointer user_data); @@ -50099,23 +47969,16 @@ struct _GumStalkerTransformerInterface GTypeInterface parent; void (* transform_block) (GumStalkerTransformer * self, - GumStalkerIterator * iterator, GumStalkerOutput * output); + GumStalkerIterator * iterator, GumStalkerWriter * output); }; union _GumStalkerWriter { - gpointer instance; - GumX86Writer * x86; - GumArmWriter * arm; - GumThumbWriter * thumb; - GumArm64Writer * arm64; - GumMipsWriter * mips; -}; - -struct _GumStalkerOutput -{ - GumStalkerWriter writer; - GumInstructionEncoding encoding; + GumX86Writer x86; + GumArmWriter arm; + GumThumbWriter thumb; + GumArm64Writer arm64; + GumMipsWriter mips; }; struct _GumCallSite @@ -50149,9 +48012,6 @@ GUM_API void gum_stalker_follow (GumStalker * self, GumThreadId thread_id, GumStalkerTransformer * transformer, GumEventSink * sink); GUM_API void gum_stalker_unfollow (GumStalker * self, GumThreadId thread_id); -GUM_API void gum_stalker_activate (GumStalker * self, gconstpointer target); -GUM_API void gum_stalker_deactivate (GumStalker * self); - GUM_API GumProbeId gum_stalker_add_call_probe (GumStalker * self, gpointer target_address, GumCallProbeCallback callback, gpointer data, GDestroyNotify notify); @@ -50170,7 +48030,7 @@ GUM_API GumStalkerTransformer * gum_stalker_transformer_make_from_callback ( GUM_API void gum_stalker_transformer_transform_block ( GumStalkerTransformer * self, GumStalkerIterator * iterator, - GumStalkerOutput * output); + GumStalkerWriter * output); GUM_API gboolean gum_stalker_iterator_next (GumStalkerIterator * self, const cs_insn ** insn); @@ -50187,7 +48047,6 @@ G_END_DECLS /* * Copyright (C) 2008-2010 Ole André Vadla Ravnås * Copyright (C) 2008 Christian Berentsen - * Copyright (C) 2020 Matt Oh * * Licence: wxWindows Library Licence, Version 3.1 */ @@ -50216,7 +48075,6 @@ GUM_API gchar * gum_symbol_name_from_address (gpointer address); GUM_API gpointer gum_find_function (const gchar * name); GUM_API GArray * gum_find_functions_named (const gchar * name); GUM_API GArray * gum_find_functions_matching (const gchar * str); -GUM_API gboolean gum_load_symbols (const gchar * path); G_END_DECLS