Add ABI control using the same technique that is used in GTK+.

2004-09-16  Matthias Clasen  <mclasen@redhat.com>

	Add ABI control using the same technique that is used in GTK+.

	* gobject.symbols: Master list of symbols.

	* gobject.def: Removed. It is now generated from gobject.symbols.

	* Makefile.am (gobject.def): Generate from gobject.symbols.
	(TESTS): Add abicheck.sh
	(EXTRA_DIST): Add abicheck.sh
	(export_symbols): Don't export _-prefixed symbols.

	* gtype.h:
	* gtype.c: Move the declarations of the various _init() functions
	to the header, and mark them as G_GNUC_INTERNAL.
This commit is contained in:
Matthias Clasen 2004-09-16 18:33:02 +00:00 committed by Matthias Clasen
parent b241f9e215
commit 88e7569e65
7 changed files with 369 additions and 337 deletions

View File

@ -1,3 +1,20 @@
2004-09-16 Matthias Clasen <mclasen@redhat.com>
Add ABI control using the same technique that is used in GTK+.
* gobject.symbols: Master list of symbols.
* gobject.def: Removed. It is now generated from gobject.symbols.
* Makefile.am (gobject.def): Generate from gobject.symbols.
(TESTS): Add abicheck.sh
(EXTRA_DIST): Add abicheck.sh
(export_symbols): Don't export _-prefixed symbols.
* gtype.h:
* gtype.c: Move the declarations of the various _init() functions
to the header, and mark them as G_GNUC_INTERNAL.
2004-08-25 Matthias Clasen <mclasen@redhat.com>
* === Released 2.5.2 ===

View File

@ -13,6 +13,13 @@ INCLUDES = \
-DGOBJECT_COMPILATION \
-DG_DISABLE_CONST_RETURNS
gobject.def: gobject.symbols
(echo -e EXPORTS; cpp -P -DINCLUDE_VARIABLES -DINCLUDE_INTERNAL_SYMBOLS -DG_OS_WIN32 $(srcdir)/gobject.symbols | sed -e '/^$$/d' -e 's/^/\t/' | sort) > gobject.def
if OS_UNIX
TESTS = abicheck.sh
endif
libglib = $(top_builddir)/glib/libglib-2.0.la
# libraries to compile and install
@ -47,6 +54,8 @@ uninstall-libtool-import-lib:
else
install-libtool-import-lib:
uninstall-libtool-import-lib:
export_symbols = $(LIBTOOL_EXPORT_OPTIONS)
endif
# libtool stuff: set version and export symbols for resolving
@ -103,14 +112,15 @@ gobject_c_sources = \
gvaluetypes.c
# these sources (also mentioned above) are generated.
BUILT_SOURCES = gmarshal.h gmarshal.c
BUILT_SOURCES = gmarshal.h gmarshal.c
# non-header sources (headers should be specified in the above variables)
# that don't serve as direct make target sources, i.e. they don't have
# their own .lo rules and don't get publically installed
gobject_extra_sources = \
gmarshal.list \
gmarshal.strings
gmarshal.strings \
gobject.symbols
#
@ -197,7 +207,8 @@ EXTRA_DIST += \
gobject.rc.in \
glib-genmarshal.1 \
glib-mkenums.in \
glib-mkenums.1
glib-mkenums.1 \
abicheck.sh
BUILT_EXTRA_DIST = \
makefile.msc \

5
gobject/abicheck.sh Executable file
View File

@ -0,0 +1,5 @@
#! /bin/sh
cpp -P -DG_OS_UNIX -DINCLUDE_INTERNAL_SYMBOLS ${srcdir:-.}/gobject.symbols | sed -e '/^$/d' | sort > expected-abi
nm -D .libs/libgobject-2.0.so | grep " T " | cut -c12- | sort > actual-abi
diff -u expected-abi actual-abi && rm expected-abi actual-abi

View File

@ -1,322 +0,0 @@
EXPORTS
g_boxed_copy
g_boxed_free
g_boxed_type_register_static
g_cclosure_marshal_BOOLEAN__FLAGS
g_cclosure_marshal_STRING__OBJECT_POINTER
g_cclosure_marshal_VOID__BOOLEAN
g_cclosure_marshal_VOID__BOXED
g_cclosure_marshal_VOID__CHAR
g_cclosure_marshal_VOID__DOUBLE
g_cclosure_marshal_VOID__ENUM
g_cclosure_marshal_VOID__FLAGS
g_cclosure_marshal_VOID__FLOAT
g_cclosure_marshal_VOID__INT
g_cclosure_marshal_VOID__LONG
g_cclosure_marshal_VOID__OBJECT
g_cclosure_marshal_VOID__PARAM
g_cclosure_marshal_VOID__POINTER
g_cclosure_marshal_VOID__STRING
g_cclosure_marshal_VOID__UCHAR
g_cclosure_marshal_VOID__UINT
g_cclosure_marshal_VOID__UINT_POINTER
g_cclosure_marshal_VOID__ULONG
g_cclosure_marshal_VOID__VOID
g_cclosure_new
g_cclosure_new_object
g_cclosure_new_object_swap
g_cclosure_new_swap
g_closure_add_finalize_notifier
g_closure_add_invalidate_notifier
g_closure_add_marshal_guards
g_closure_get_type
g_closure_invalidate
g_closure_invoke
g_closure_new_object
g_closure_new_simple
g_closure_ref
g_closure_remove_finalize_notifier
g_closure_remove_invalidate_notifier
g_closure_set_marshal
g_closure_set_meta_marshal
g_closure_sink
g_closure_unref
g_enum_complete_type_info
g_enum_get_value
g_enum_get_value_by_name
g_enum_get_value_by_nick
g_enum_register_static
g_flags_complete_type_info
g_flags_get_first_value
g_flags_get_value_by_name
g_flags_get_value_by_nick
g_flags_register_static
g_gstring_get_type
g_io_channel_get_type
g_io_condition_get_type
g_object_add_weak_pointer
g_object_class_find_property
g_object_class_install_property
g_object_class_list_properties
g_object_class_override_property
g_object_connect
g_object_disconnect
g_object_freeze_notify
g_object_get
g_object_get_data
g_object_get_property
g_object_get_qdata
g_object_get_valist
g_object_interface_find_property
g_object_interface_install_property
g_object_interface_list_properties
g_object_new
g_object_new_valist
g_object_newv
g_object_notify
g_object_ref
g_object_remove_weak_pointer
g_object_run_dispose
g_object_set
g_object_set_data
g_object_set_data_full
g_object_set_property
g_object_set_qdata
g_object_set_qdata_full
g_object_set_valist
g_object_steal_data
g_object_steal_qdata
g_object_thaw_notify
g_object_unref
g_object_watch_closure
g_object_weak_ref
g_object_weak_unref
g_param_spec_boolean
g_param_spec_boxed
g_param_spec_char
g_param_spec_double
g_param_spec_enum
g_param_spec_flags
g_param_spec_float
g_param_spec_get_blurb
g_param_spec_get_name
g_param_spec_get_nick
g_param_spec_get_qdata
g_param_spec_get_redirect_target
g_param_spec_int
g_param_spec_int64
g_param_spec_internal
g_param_spec_long
g_param_spec_object
g_param_spec_override
g_param_spec_param
g_param_spec_pointer
g_param_spec_pool_insert
g_param_spec_pool_list
g_param_spec_pool_list_owned
g_param_spec_pool_lookup
g_param_spec_pool_new
g_param_spec_pool_remove
g_param_spec_ref
g_param_spec_set_qdata
g_param_spec_set_qdata_full
g_param_spec_sink
g_param_spec_steal_qdata
g_param_spec_string
g_param_spec_types
g_param_spec_uchar
g_param_spec_uint
g_param_spec_uint64
g_param_spec_ulong
g_param_spec_unichar
g_param_spec_unref
g_param_spec_value_array
g_param_type_register_static
g_param_value_convert
g_param_value_defaults
g_param_value_set_default
g_param_value_validate
g_param_values_cmp
g_pointer_type_register_static
g_signal_accumulator_true_handled
g_signal_add_emission_hook
g_signal_chain_from_overridden
g_signal_connect_closure
g_signal_connect_closure_by_id
g_signal_connect_data
g_signal_connect_object
g_signal_emit
g_signal_emit_by_name
g_signal_emit_valist
g_signal_emitv
g_signal_get_invocation_hint
g_signal_handler_block
g_signal_handler_disconnect
g_signal_handler_find
g_signal_handler_is_connected
g_signal_handler_unblock
g_signal_handlers_block_matched
g_signal_handlers_destroy
g_signal_handlers_disconnect_matched
g_signal_handlers_unblock_matched
g_signal_has_handler_pending
g_signal_list_ids
g_signal_lookup
g_signal_name
g_signal_new
g_signal_new_valist
g_signal_newv
g_signal_override_class_closure
g_signal_parse_name
g_signal_query
g_signal_remove_emission_hook
g_signal_stop_emission
g_signal_stop_emission_by_name
g_signal_type_cclosure_new
g_slist_remove_all PRIVATE
g_source_set_closure
g_strdup_value_contents
g_strv_get_type
g_type_add_class_cache_func
g_type_add_interface_check
g_type_add_interface_dynamic
g_type_add_interface_static
g_type_check_class_cast
g_type_check_class_is_a
g_type_check_instance
g_type_check_instance_cast
g_type_check_instance_is_a
g_type_check_is_value_type
g_type_check_value
g_type_check_value_holds
g_type_children
g_type_class_add_private
g_type_class_peek
g_type_class_peek_parent
g_type_class_peek_static
g_type_class_ref
g_type_class_unref
g_type_class_unref_uncached
g_type_create_instance
g_type_default_interface_peek
g_type_default_interface_ref
g_type_default_interface_unref
g_type_depth
g_type_free_instance
g_type_from_name
g_type_fundamental
g_type_fundamental_next
g_type_get_plugin
g_type_get_qdata
g_type_init
g_type_init_with_debug_flags
g_type_instance_get_private
g_type_interface_add_prerequisite
g_type_interface_get_plugin
g_type_interface_peek
g_type_interface_peek_parent
g_type_interface_prerequisites
g_type_interfaces
g_type_is_a
g_type_module_add_interface
g_type_module_get_type
g_type_module_register_type
g_type_module_set_name
g_type_module_unuse
g_type_module_use
g_type_name
g_type_name_from_class
g_type_name_from_instance
g_type_next_base
g_type_parent
g_type_plugin_complete_interface_info
g_type_plugin_complete_type_info
g_type_plugin_get_type
g_type_plugin_unuse
g_type_plugin_use
g_type_qname
g_type_query
g_type_register_dynamic
g_type_register_fundamental
g_type_register_static
g_type_remove_class_cache_func
g_type_remove_interface_check
g_type_set_qdata
g_type_test_flags
g_type_value_table_peek
g_unichar_validate PRIVATE
g_value_array_append
g_value_array_copy
g_value_array_free
g_value_array_get_nth
g_value_array_get_type
g_value_array_insert
g_value_array_new
g_value_array_prepend
g_value_array_remove
g_value_array_sort
g_value_array_sort_with_data
g_value_copy
g_value_dup_boxed
g_value_dup_object
g_value_dup_param
g_value_dup_string
g_value_fits_pointer
g_value_get_boolean
g_value_get_boxed
g_value_get_char
g_value_get_double
g_value_get_enum
g_value_get_flags
g_value_get_float
g_value_get_int
g_value_get_int64
g_value_get_long
g_value_get_object
g_value_get_param
g_value_get_pointer
g_value_get_string
g_value_get_type
g_value_get_uchar
g_value_get_uint
g_value_get_uint64
g_value_get_ulong
g_value_init
g_value_peek_pointer
g_value_register_transform_func
g_value_reset
g_value_set_boolean
g_value_set_boxed
g_value_set_boxed_take_ownership
g_value_set_char
g_value_set_double
g_value_set_enum
g_value_set_flags
g_value_set_float
g_value_set_instance
g_value_set_int
g_value_set_int64
g_value_set_long
g_value_set_object
g_value_set_object_take_ownership
g_value_set_param
g_value_set_param_take_ownership
g_value_set_pointer
g_value_set_static_boxed
g_value_set_static_string
g_value_set_string
g_value_set_string_take_ownership
g_value_set_uchar
g_value_set_uint
g_value_set_uint64
g_value_set_ulong
g_value_take_boxed
g_value_take_object
g_value_take_param
g_value_take_string
g_value_transform
g_value_type_compatible
g_value_type_transformable
g_value_types_init
g_value_unset

321
gobject/gobject.symbols Normal file
View File

@ -0,0 +1,321 @@
g_boxed_copy
g_boxed_free
g_boxed_type_register_static
g_cclosure_marshal_BOOLEAN__FLAGS
g_cclosure_marshal_STRING__OBJECT_POINTER
g_cclosure_marshal_VOID__BOOLEAN
g_cclosure_marshal_VOID__BOXED
g_cclosure_marshal_VOID__CHAR
g_cclosure_marshal_VOID__DOUBLE
g_cclosure_marshal_VOID__ENUM
g_cclosure_marshal_VOID__FLAGS
g_cclosure_marshal_VOID__FLOAT
g_cclosure_marshal_VOID__INT
g_cclosure_marshal_VOID__LONG
g_cclosure_marshal_VOID__OBJECT
g_cclosure_marshal_VOID__PARAM
g_cclosure_marshal_VOID__POINTER
g_cclosure_marshal_VOID__STRING
g_cclosure_marshal_VOID__UCHAR
g_cclosure_marshal_VOID__UINT
g_cclosure_marshal_VOID__UINT_POINTER
g_cclosure_marshal_VOID__ULONG
g_cclosure_marshal_VOID__VOID
g_cclosure_new
g_cclosure_new_object
g_cclosure_new_object_swap
g_cclosure_new_swap
g_closure_add_finalize_notifier
g_closure_add_invalidate_notifier
g_closure_add_marshal_guards
g_closure_get_type
g_closure_invalidate
g_closure_invoke
g_closure_new_object
g_closure_new_simple
g_closure_ref
g_closure_remove_finalize_notifier
g_closure_remove_invalidate_notifier
g_closure_set_marshal
g_closure_set_meta_marshal
g_closure_sink
g_closure_unref
g_enum_complete_type_info
g_enum_get_value
g_enum_get_value_by_name
g_enum_get_value_by_nick
g_enum_register_static
g_flags_complete_type_info
g_flags_get_first_value
g_flags_get_value_by_name
g_flags_get_value_by_nick
g_flags_register_static
g_gstring_get_type
g_io_channel_get_type
g_io_condition_get_type
g_object_add_weak_pointer
g_object_class_find_property
g_object_class_install_property
g_object_class_list_properties
g_object_class_override_property
g_object_connect
g_object_disconnect
g_object_freeze_notify
g_object_get
g_object_get_data
g_object_get_property
g_object_get_qdata
g_object_get_valist
g_object_interface_find_property
g_object_interface_install_property
g_object_interface_list_properties
g_object_new
g_object_newv
g_object_new_valist
g_object_notify
g_object_ref
g_object_remove_weak_pointer
g_object_run_dispose
g_object_set
g_object_set_data
g_object_set_data_full
g_object_set_property
g_object_set_qdata
g_object_set_qdata_full
g_object_set_valist
g_object_steal_data
g_object_steal_qdata
g_object_thaw_notify
g_object_unref
g_object_watch_closure
g_object_weak_ref
g_object_weak_unref
g_param_spec_boolean
g_param_spec_boxed
g_param_spec_char
g_param_spec_double
g_param_spec_enum
g_param_spec_flags
g_param_spec_float
g_param_spec_get_blurb
g_param_spec_get_name
g_param_spec_get_nick
g_param_spec_get_qdata
g_param_spec_get_redirect_target
g_param_spec_int
g_param_spec_int64
g_param_spec_internal
g_param_spec_long
g_param_spec_object
g_param_spec_override
g_param_spec_param
g_param_spec_pointer
g_param_spec_pool_insert
g_param_spec_pool_list
g_param_spec_pool_list_owned
g_param_spec_pool_lookup
g_param_spec_pool_new
g_param_spec_pool_remove
g_param_spec_ref
g_param_spec_set_qdata
g_param_spec_set_qdata_full
g_param_spec_sink
g_param_spec_steal_qdata
g_param_spec_string
g_param_spec_uchar
g_param_spec_uint
g_param_spec_uint64
g_param_spec_ulong
g_param_spec_unichar
g_param_spec_unref
g_param_spec_value_array
g_param_type_register_static
g_param_value_convert
g_param_value_defaults
g_param_values_cmp
g_param_value_set_default
g_param_value_validate
g_pointer_type_register_static
g_signal_accumulator_true_handled
g_signal_add_emission_hook
g_signal_chain_from_overridden
g_signal_connect_closure
g_signal_connect_closure_by_id
g_signal_connect_data
g_signal_connect_object
g_signal_emit
g_signal_emit_by_name
g_signal_emitv
g_signal_emit_valist
g_signal_get_invocation_hint
g_signal_handler_block
g_signal_handler_disconnect
g_signal_handler_find
g_signal_handler_is_connected
g_signal_handlers_block_matched
g_signal_handlers_destroy
g_signal_handlers_disconnect_matched
g_signal_handlers_unblock_matched
g_signal_handler_unblock
g_signal_has_handler_pending
g_signal_list_ids
g_signal_lookup
g_signal_name
g_signal_new
g_signal_newv
g_signal_new_valist
g_signal_override_class_closure
g_signal_parse_name
g_signal_query
g_signal_remove_emission_hook
g_signal_stop_emission
g_signal_stop_emission_by_name
g_signal_type_cclosure_new
g_source_set_closure
g_strdup_value_contents
g_strv_get_type
g_type_add_class_cache_func
g_type_add_interface_check
g_type_add_interface_dynamic
g_type_add_interface_static
g_type_check_class_cast
g_type_check_class_is_a
g_type_check_instance
g_type_check_instance_cast
g_type_check_instance_is_a
g_type_check_is_value_type
g_type_check_value
g_type_check_value_holds
g_type_children
g_type_class_add_private
g_type_class_peek
g_type_class_peek_parent
g_type_class_peek_static
g_type_class_ref
g_type_class_unref
g_type_class_unref_uncached
g_type_create_instance
g_type_default_interface_peek
g_type_default_interface_ref
g_type_default_interface_unref
g_type_depth
g_type_free_instance
g_type_from_name
g_type_fundamental
g_type_fundamental_next
g_type_get_plugin
g_type_get_qdata
g_type_init
g_type_init_with_debug_flags
g_type_instance_get_private
g_type_interface_add_prerequisite
g_type_interface_get_plugin
g_type_interface_peek
g_type_interface_peek_parent
g_type_interface_prerequisites
g_type_interfaces
g_type_is_a
g_type_module_add_interface
g_type_module_get_type
g_type_module_register_enum
g_type_module_register_flags
g_type_module_register_type
g_type_module_set_name
g_type_module_unuse
g_type_module_use
g_type_name
g_type_name_from_class
g_type_name_from_instance
g_type_next_base
g_type_parent
g_type_plugin_complete_interface_info
g_type_plugin_complete_type_info
g_type_plugin_get_type
g_type_plugin_unuse
g_type_plugin_use
g_type_qname
g_type_query
g_type_register_dynamic
g_type_register_fundamental
g_type_register_static
g_type_remove_class_cache_func
g_type_remove_interface_check
g_type_set_qdata
g_type_test_flags
g_type_value_table_peek
g_value_array_append
g_value_array_copy
g_value_array_free
g_value_array_get_nth
g_value_array_get_type
g_value_array_insert
g_value_array_new
g_value_array_prepend
g_value_array_remove
g_value_array_sort
g_value_array_sort_with_data
g_value_copy
g_value_dup_boxed
g_value_dup_object
g_value_dup_param
g_value_dup_string
g_value_fits_pointer
g_value_get_boolean
g_value_get_boxed
g_value_get_char
g_value_get_double
g_value_get_enum
g_value_get_flags
g_value_get_float
g_value_get_int
g_value_get_int64
g_value_get_long
g_value_get_object
g_value_get_param
g_value_get_pointer
g_value_get_string
g_value_get_type
g_value_get_uchar
g_value_get_uint
g_value_get_uint64
g_value_get_ulong
g_value_init
g_value_peek_pointer
g_value_register_transform_func
g_value_reset
g_value_set_boolean
g_value_set_boxed
g_value_set_boxed_take_ownership
g_value_set_char
g_value_set_double
g_value_set_enum
g_value_set_flags
g_value_set_float
g_value_set_instance
g_value_set_int
g_value_set_int64
g_value_set_long
g_value_set_object
g_value_set_object_take_ownership
g_value_set_param
g_value_set_param_take_ownership
g_value_set_pointer
g_value_set_static_boxed
g_value_set_static_string
g_value_set_string
g_value_set_string_take_ownership
g_value_set_uchar
g_value_set_uint
g_value_set_uint64
g_value_set_ulong
g_value_take_boxed
g_value_take_object
g_value_take_param
g_value_take_string
g_value_transform
g_value_type_compatible
g_value_type_transformable
g_value_unset
#ifdef INCLUDE_VARIABLES
g_param_spec_types
#endif

View File

@ -3374,18 +3374,6 @@ g_type_name_from_class (GTypeClass *g_class)
}
/* --- foreign prototypes --- */
extern void g_value_c_init (void); /* sync with gvalue.c */
extern void g_value_types_init (void); /* sync with gvaluetypes.c */
extern void g_enum_types_init (void); /* sync with genums.c */
extern void g_param_type_init (void); /* sync with gparam.c */
extern void g_boxed_type_init (void); /* sync with gboxed.c */
extern void g_object_type_init (void); /* sync with gobject.c */
extern void g_param_spec_types_init (void); /* sync with gparamspecs.c */
extern void g_value_transforms_init (void); /* sync with gvaluetransform.c */
extern void g_signal_init (void); /* sync with gsignal.c */
/* --- initialization --- */
void
g_type_init_with_debug_flags (GTypeDebugFlags debug_flags)

View File

@ -427,6 +427,18 @@ G_CONST_RETURN gchar* g_type_name_from_instance (GTypeInstance *instance);
G_CONST_RETURN gchar* g_type_name_from_class (GTypeClass *g_class);
/* --- internal functions --- */
void g_value_c_init (void) G_GNUC_INTERNAL; /* sync with gvalue.c */
void g_value_types_init (void) G_GNUC_INTERNAL; /* sync with gvaluetypes.c */
void g_enum_types_init (void) G_GNUC_INTERNAL; /* sync with genums.c */
void g_param_type_init (void) G_GNUC_INTERNAL; /* sync with gparam.c */
void g_boxed_type_init (void) G_GNUC_INTERNAL; /* sync with gboxed.c */
void g_object_type_init (void) G_GNUC_INTERNAL; /* sync with gobject.c */
void g_param_spec_types_init (void) G_GNUC_INTERNAL; /* sync with gparamspecs.c */
void g_value_transforms_init (void) G_GNUC_INTERNAL; /* sync with gvaluetransform.c */
void g_signal_init (void) G_GNUC_INTERNAL; /* sync with gsignal.c */
/* --- implementation bits --- */
#ifndef G_DISABLE_CAST_CHECKS
# define _G_TYPE_CIC(ip, gt, ct) \