GNOME Bugzilla – Bug 510740
Missing symbols from core libraries
Last modified: 2008-01-21 19:48:15 UTC
Hi, after running a tool to list all exported symbols of libraries over all releases since 0.10.0 it seems that quite many symbols got lost over time. Some of them between 0.10.15 and the current pre-release. Below is the list of symbols, the first version number being the one where it disappeared and the one at the end of the line being the version number where it was introduced. All versions were compiled with the default configure parameters and the same installed software. libgstreamer-0.10: #MISSING: 0.10.13# _gst_parse__yydebug@Base 0.10.0 #MISSING: 0.10.13# _gst_parse__yyparse@Base 0.10.0 #MISSING: 0.10.13# _gst_parse_yy_flex_debug@Base 0.10.0 #MISSING: 0.10.13# _gst_parse_yyin@Base 0.10.0 #MISSING: 0.10.13# _gst_parse_yyleng@Base 0.10.0 #MISSING: 0.10.13# _gst_parse_yylineno@Base 0.10.0 #MISSING: 0.10.13# _gst_parse_yyout@Base 0.10.0 #MISSING: 0.10.13# _gst_parse_yytext@Base 0.10.0 #MISSING: 0.10.13# gst_registry_binary_read_cache@Base 0.10.12 #MISSING: 0.10.13# gst_registry_binary_write_cache@Base 0.10.12 #MISSING: 0.10.15# _gst_disable_segtrap@Base 0.10.0 #MISSING: 0.10.15# _gst_trace_default@Base 0.10.0 #MISSING: 0.10.15# gst_plugin_loading_mutex@Base 0.10.0 #MISSING: 0.10.15# gst_type_array@Base 0.10.0 #MISSING: 0.10.15# gst_type_date@Base 0.10.0 #MISSING: 0.10.15# gst_type_double_range@Base 0.10.0 #MISSING: 0.10.15# gst_type_fraction@Base 0.10.0 #MISSING: 0.10.15# gst_type_fraction_range@Base 0.10.0 #MISSING: 0.10.15# gst_type_list@Base 0.10.0 #MISSING: 0.10.15.1# __gst_in_valgrind@Base 0.10.0 #MISSING: 0.10.15.1# gst_proxy_pad_do_query_type@Base 0.10.0 #MISSING: 0.10.15.1# gst_proxy_pad_get_type@Base 0.10.0 #MISSING: 0.10.15.1# gst_type_find_debug@Base 0.10.0 libgstcontroller-0.10: #MISSING: 0.10.11# interpolation_methods@Base 0.10.0 #MISSING: 0.10.11# on_object_controlled_property_changed@Base 0.10.0 #MISSING: 0.10.13# gst_controlled_property_find_timed_value_node@Base 0.10.0 #MISSING: 0.10.14# gst_controlled_property_find_control_point_node@Base 0.10.13 #MISSING: 0.10.15.1# __gst_controller_key@Base 0.10.0 #MISSING: 0.10.15.1# gst_controller_debug@Base 0.10.0 libgstdataprotocol-0.10: #MISSING: 0.10.10# data_protocol_debug@Base 0.10.0 #MISSING: 0.10.10# gst_dp_packet_from_caps_1_0@Base 0.10.7 libgstnet-0.10: #MISSING: 0.10.9# ncc_debug@Base 0.10.0 #MISSING: 0.10.9# ntp_debug@Base 0.10.0 If I didn't miss anything all of them were never in a public header so it shouldn't be a problem. Would still be nice if someone could have a second look before we close this.
Most, if not all, of these disappearances are probably my doing and were intentional. I discovered them when I did the win32 exported symbols check script. At the time I made sure to only un-export those that were never in a public header. Where symbols were in a public header, I either added a FIXME 0.11 (if it is conceivable that someone actually ever used those functions), or moved them to gst_private.h with a FIXME. Some double-checking would be good of course.
Rah, so here goes: $ for v in 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0; do cvs -z9 -d`cat /home/tpm/uninstalled/head/gstreamer/CVS/Root` co -rRELEASE-0_10_$v gstreamer; mv gstreamer gstreamer-0.10.$v; done libgstreamer-0.10: #MISSING: 0.10.13# _gst_parse_*@Base 0.10.0 These were never in a public header (gst/parse/types.h). #MISSING: 0.10.13# gst_registry_binary_read_cache@Base 0.10.12 #MISSING: 0.10.13# gst_registry_binary_write_cache@Base 0.10.12 These should never have been included in the default build, but only if the experimental configure option --enable-binary-registry is passed to configure. Besides, the declarations in gstregistry.h are guarded by a (completely bogus) #ifdef USE_BINARY_REGISTRY, which is bound to evaluate to FALSE unless the user specifically defines this preprocessor symbol to get the declarations. And even if someone did that, they'd still be using an experimental feature for which ABI or API guarantees do not apply. In other words: the removal of these symbols should be fine. #MISSING: 0.10.15# _gst_disable_segtrap@Base 0.10.0 #MISSING: 0.10.15# _gst_trace_default@Base 0.10.0 #MISSING: 0.10.15# gst_plugin_loading_mutex@Base 0.10.0 Never in any header, installed or private. #MISSING: 0.10.15# gst_type_array@Base 0.10.0 #MISSING: 0.10.15# gst_type_date@Base 0.10.0 #MISSING: 0.10.15# gst_type_double_range@Base 0.10.0 #MISSING: 0.10.15# gst_type_fraction@Base 0.10.0 #MISSING: 0.10.15# gst_type_fraction_range@Base 0.10.0 #MISSING: 0.10.15# gst_type_list@Base 0.10.0 Never in any header, installed or private. Not even used/functional. #MISSING: 0.10.15.1# __gst_in_valgrind@Base 0.10.0 Has always been declared in gst_private.h. #MISSING: 0.10.15.1# gst_proxy_pad_do_query_type@Base 0.10.0 #MISSING: 0.10.15.1# gst_proxy_pad_get_type@Base 0.10.0 #MISSING: 0.10.15.1# gst_type_find_debug@Base 0.10.0 Never been in any header file, installed or private. libgstcontroller-0.10: #MISSING: 0.10.11# interpolation_methods@Base 0.10.0 #MISSING: 0.10.11# on_object_controlled_property_changed@Base 0.10.0 #MISSING: 0.10.13# gst_controlled_property_find_timed_value_node@Base 0.10.0 #MISSING: 0.10.14# gst_controlled_property_find_control_point_node@Base 0.10.13 #MISSING: 0.10.15.1# __gst_controller_key@Base 0.10.0 #MISSING: 0.10.15.1# gst_controller_debug@Base 0.10.0 Never been in any header file, installed or private. libgstdataprotocol-0.10: #MISSING: 0.10.10# data_protocol_debug@Base 0.10.0 #MISSING: 0.10.10# gst_dp_packet_from_caps_1_0@Base 0.10.7 Never been in any header file, installed or private. libgstnet-0.10: #MISSING: 0.10.9# ncc_debug@Base 0.10.0 #MISSING: 0.10.9# ntp_debug@Base 0.10.0 Never been in any header file, installed or private.