diff options
author | Thomas Haller <thaller@redhat.com> | 2016-10-11 16:40:00 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2016-10-12 10:50:45 +0200 |
commit | cf39f767f25329d1c19f4391638ddc8e369d7c61 (patch) | |
tree | 197705eaa282404e3adcdb625b3ada25b97ea8f4 | |
parent | 3d2e3873c24e3c70cd28a22f2a82c7c4e81414f6 (diff) | |
download | NetworkManager-th/nm-symbols.tar.gz |
build: explicitly whitelist symbols in NetworkManager binaryth/nm-symbols
- this allows the linker to drop unused symbols via link-time optimization
or with --gc-sections:
git clean -fdx
./autogen.sh --enable-ld-gc --enable-ifcfg-rh --enable-ifupdown \
--enable-ifnet --enable-ibft --enable-teamdctl --enable-wifi \
--with-modem-manager-1 --with-ofono --with-more-asserts \
--with-more-logging
make -j20
strip ./src/NetworkManager
gives 2822840 vs. 2625960 bytes (-7%).
- this also gives more control over the symbols that are used by the
plugins. Yes, it means if you modify a plugin to use a new symbols,
you have to extend NetworkManager.ver file.
You can try to run the script for that, but be sure to enable
debugging option and all plugins.
./tools/create-exports-NetworkManager.sh update
-rw-r--r-- | src/NetworkManager.ver | 560 | ||||
-rwxr-xr-x | tools/create-exports-NetworkManager.sh | 103 |
2 files changed, 654 insertions, 9 deletions
diff --git a/src/NetworkManager.ver b/src/NetworkManager.ver index 0e092f44ad..2f625c392d 100644 --- a/src/NetworkManager.ver +++ b/src/NetworkManager.ver @@ -1,15 +1,557 @@ { global: - nm_*; - nmp_*; - _nm*; - NM*; - _NM*; + NM_ASSERT_VALID_PATH_COMPONENT; + _nm_dbus_error_has_name; + _nm_dbus_proxy_call_finish; + _nm_dbus_signal_connect_data; + _nm_device_factory_no_default_links; + _nm_exported_object_clear_and_unexport; + _nm_log_impl; + _nm_logging_enabled_state; + _nm_platform_error_to_string; + _nm_singleton_instance_register_destruction; + _nm_utils_ascii_str_to_int64; + _nm_utils_dns_option_find_idx; + _nm_utils_hash_values_to_slist; + _nm_utils_strsplit_set; + _nm_utils_uuid_generate_from_strings; + nm_act_request_cancel_secrets; + nm_act_request_clear_secrets; + nm_act_request_get_applied_connection; + nm_act_request_get_secrets; + nm_act_request_get_settings_connection; + nm_act_request_get_type; + nm_active_connection_get_specific_object; + nm_active_connection_get_type; + nm_active_connection_set_specific_object; + nm_config_data_get_connection_default; + nm_config_data_get_device_config; + nm_config_data_get_device_config_boolean; + nm_config_data_get_value_boolean; + nm_config_get; + nm_config_get_data; + nm_config_get_data_orig; + nm_config_get_dhcp_client; + nm_config_get_monitor_connection_files; + nm_connection_add_setting; + nm_connection_compare; + nm_connection_error_quark; + nm_connection_for_each_setting_value; + nm_connection_get_id; + nm_connection_get_interface_name; + nm_connection_get_path; + nm_connection_get_setting_802_1x; + nm_connection_get_setting_adsl; + nm_connection_get_setting_bluetooth; + nm_connection_get_setting_bond; + nm_connection_get_setting_bridge; + nm_connection_get_setting_bridge_port; + nm_connection_get_setting_cdma; + nm_connection_get_setting_connection; + nm_connection_get_setting_dcb; + nm_connection_get_setting_gsm; + nm_connection_get_setting_infiniband; + nm_connection_get_setting_ip4_config; + nm_connection_get_setting_ip6_config; + nm_connection_get_setting_olpc_mesh; + nm_connection_get_setting_ppp; + nm_connection_get_setting_pppoe; + nm_connection_get_setting_proxy; + nm_connection_get_setting_serial; + nm_connection_get_setting_team; + nm_connection_get_setting_team_port; + nm_connection_get_setting_vlan; + nm_connection_get_setting_wired; + nm_connection_get_setting_wireless; + nm_connection_get_setting_wireless_security; + nm_connection_get_type; + nm_connection_get_uuid; + nm_connection_is_type; + nm_connection_need_secrets; + nm_connection_normalize; + nm_connection_set_path; + nm_connection_verify; + nm_device_activate_ip4_state_done; + nm_device_activate_ip4_state_in_conf; + nm_device_activate_ip6_state_done; + nm_device_activate_ip6_state_in_conf; + nm_device_activate_schedule_ip4_config_result; + nm_device_activate_schedule_ip4_config_timeout; + nm_device_activate_schedule_ip6_config_result; + nm_device_activate_schedule_ip6_config_timeout; + nm_device_activate_schedule_stage1_device_prepare; + nm_device_activate_schedule_stage2_device_config; + nm_device_activate_schedule_stage3_ip_config_start; + nm_device_add_pending_action; + nm_device_bring_up; + nm_device_emit_recheck_auto_activate; + nm_device_error_quark; + nm_device_factory_emit_component_added; + nm_device_factory_get_type; + nm_device_get_act_request; + nm_device_get_applied_connection; + nm_device_get_applied_setting; + nm_device_get_firmware_missing; + nm_device_get_hw_address; + nm_device_get_iface; + nm_device_get_ifindex; + nm_device_get_initial_hw_address; + nm_device_get_ip_iface; + nm_device_get_ip_ifindex; + nm_device_get_permanent_hw_address; + nm_device_get_settings; + nm_device_get_settings_connection; + nm_device_get_state; + nm_device_get_type; + nm_device_has_unmodified_applied_connection; + nm_device_hw_addr_reset; + nm_device_hw_addr_set; + nm_device_hw_addr_set_cloned; + nm_device_ip_method_failed; + nm_device_ipv6_sysctl_set; + nm_device_is_activating; + nm_device_master_check_slave_physical_port; + nm_device_queue_recheck_assume; + nm_device_queue_recheck_available; + nm_device_queue_state; + nm_device_recheck_available_connections; + nm_device_remove_pending_action; + nm_device_set_autoconnect; + nm_device_set_carrier; + nm_device_set_dhcp_anycast_address; + nm_device_set_dhcp_timeout; + nm_device_set_firmware_missing; + nm_device_set_ip_iface; + nm_device_set_wwan_ip4_config; + nm_device_set_wwan_ip6_config; + nm_device_state_changed; + nm_device_take_down; + nm_device_uses_assumed_connection; + nm_ethernet_address_is_valid; + nm_exported_object_class_add_interface; + nm_exported_object_export; + nm_exported_object_get_path; + nm_exported_object_get_type; + nm_exported_object_is_exported; + nm_exported_object_skeleton_create; + nm_exported_object_skeleton_release; + nm_exported_object_skeletonify_method_name; + nm_exported_object_unexport; + nm_inotify_helper_add_watch; + nm_inotify_helper_get; + nm_inotify_helper_remove_watch; + nm_ip4_config_add_address; + nm_ip4_config_add_nameserver; + nm_ip4_config_add_route; + nm_ip4_config_get_address; + nm_ip4_config_get_nameserver; + nm_ip4_config_get_num_nameservers; + nm_ip4_config_new; + nm_ip4_config_reset_nameservers; + nm_ip4_config_set_gateway; + nm_ip4_config_set_mtu; + nm_ip6_config_add_address; + nm_ip6_config_add_nameserver; + nm_ip6_config_get_address; + nm_ip6_config_get_num_addresses; + nm_ip6_config_new; + nm_ip6_config_set_gateway; + nm_ip_address_get_address; + nm_ip_address_get_attribute; + nm_ip_address_get_prefix; + nm_ip_address_new; + nm_ip_address_set_attribute; + nm_ip_address_unref; + nm_ip_route_get_dest; + nm_ip_route_get_metric; + nm_ip_route_get_next_hop; + nm_ip_route_get_prefix; + nm_ip_route_new; + nm_ip_route_unref; + nm_manager_get; + nm_manager_get_devices; + nm_manager_set_capability; + nm_platform_address_flush; + nm_platform_get; + nm_platform_link_enslave; + nm_platform_link_get_by_ifname; + nm_platform_link_get_ifindex; + nm_platform_link_get_mtu; + nm_platform_link_get_type; + nm_platform_link_release; + nm_platform_link_set_down; + nm_platform_link_set_noarp; + nm_platform_link_set_up; + nm_platform_link_team_add; + nm_platform_mesh_get_channel; + nm_platform_mesh_set_channel; + nm_platform_mesh_set_ssid; + nm_platform_sysctl_get_int_checked; + nm_platform_wifi_find_frequency; + nm_platform_wifi_get_bssid; + nm_platform_wifi_get_capabilities; + nm_platform_wifi_get_frequency; + nm_platform_wifi_get_mode; + nm_platform_wifi_get_quality; + nm_platform_wifi_get_rate; + nm_platform_wifi_indicate_addressing_running; + nm_platform_wifi_set_mode; + nm_platform_wifi_set_powersave; + nm_ppp_manager_new; + nm_ppp_manager_start; + nm_ppp_manager_stop; + nm_ppp_manager_stop_finish; + nm_route_manager_get; + nm_route_manager_route_flush; + nm_setting_802_1x_add_eap_method; + nm_setting_802_1x_get_altsubject_match; + nm_setting_802_1x_get_anonymous_identity; + nm_setting_802_1x_get_ca_cert_blob; + nm_setting_802_1x_get_ca_cert_path; + nm_setting_802_1x_get_ca_cert_scheme; + nm_setting_802_1x_get_client_cert_blob; + nm_setting_802_1x_get_client_cert_path; + nm_setting_802_1x_get_client_cert_scheme; + nm_setting_802_1x_get_domain_suffix_match; + nm_setting_802_1x_get_eap_method; + nm_setting_802_1x_get_identity; + nm_setting_802_1x_get_num_altsubject_matches; + nm_setting_802_1x_get_num_eap_methods; + nm_setting_802_1x_get_num_phase2_altsubject_matches; + nm_setting_802_1x_get_pac_file; + nm_setting_802_1x_get_password; + nm_setting_802_1x_get_password_flags; + nm_setting_802_1x_get_phase1_fast_provisioning; + nm_setting_802_1x_get_phase1_peaplabel; + nm_setting_802_1x_get_phase1_peapver; + nm_setting_802_1x_get_phase2_altsubject_match; + nm_setting_802_1x_get_phase2_auth; + nm_setting_802_1x_get_phase2_autheap; + nm_setting_802_1x_get_phase2_ca_cert_blob; + nm_setting_802_1x_get_phase2_ca_cert_path; + nm_setting_802_1x_get_phase2_ca_cert_scheme; + nm_setting_802_1x_get_phase2_client_cert_blob; + nm_setting_802_1x_get_phase2_client_cert_path; + nm_setting_802_1x_get_phase2_client_cert_scheme; + nm_setting_802_1x_get_phase2_domain_suffix_match; + nm_setting_802_1x_get_phase2_private_key_blob; + nm_setting_802_1x_get_phase2_private_key_format; + nm_setting_802_1x_get_phase2_private_key_password; + nm_setting_802_1x_get_phase2_private_key_password_flags; + nm_setting_802_1x_get_phase2_private_key_path; + nm_setting_802_1x_get_phase2_private_key_scheme; + nm_setting_802_1x_get_phase2_subject_match; + nm_setting_802_1x_get_private_key_blob; + nm_setting_802_1x_get_private_key_format; + nm_setting_802_1x_get_private_key_password; + nm_setting_802_1x_get_private_key_password_flags; + nm_setting_802_1x_get_private_key_path; + nm_setting_802_1x_get_private_key_scheme; + nm_setting_802_1x_get_subject_match; + nm_setting_802_1x_new; + nm_setting_802_1x_set_ca_cert; + nm_setting_802_1x_set_client_cert; + nm_setting_802_1x_set_phase2_ca_cert; + nm_setting_802_1x_set_phase2_client_cert; + nm_setting_802_1x_set_phase2_private_key; + nm_setting_802_1x_set_private_key; + nm_setting_adsl_get_encapsulation; + nm_setting_adsl_get_protocol; + nm_setting_adsl_get_type; + nm_setting_adsl_get_username; + nm_setting_adsl_get_vci; + nm_setting_adsl_get_vpi; + nm_setting_bluetooth_get_bdaddr; + nm_setting_bluetooth_get_connection_type; + nm_setting_bluetooth_new; + nm_setting_bond_add_option; + nm_setting_bond_get_num_options; + nm_setting_bond_get_option; + nm_setting_bond_get_type; + nm_setting_bond_new; + nm_setting_bridge_get_ageing_time; + nm_setting_bridge_get_forward_delay; + nm_setting_bridge_get_hello_time; + nm_setting_bridge_get_mac_address; + nm_setting_bridge_get_max_age; + nm_setting_bridge_get_multicast_snooping; + nm_setting_bridge_get_priority; + nm_setting_bridge_get_stp; + nm_setting_bridge_get_type; + nm_setting_bridge_new; + nm_setting_bridge_port_get_hairpin_mode; + nm_setting_bridge_port_get_path_cost; + nm_setting_bridge_port_get_priority; + nm_setting_bridge_port_new; + nm_setting_cdma_get_number; + nm_setting_cdma_get_password; + nm_setting_cdma_get_username; + nm_setting_cdma_new; + nm_setting_connection_add_permission; + nm_setting_connection_add_secondary; + nm_setting_connection_get_autoconnect; + nm_setting_connection_get_autoconnect_priority; + nm_setting_connection_get_autoconnect_slaves; + nm_setting_connection_get_connection_type; + nm_setting_connection_get_gateway_ping_timeout; + nm_setting_connection_get_id; + nm_setting_connection_get_interface_name; + nm_setting_connection_get_lldp; + nm_setting_connection_get_master; + nm_setting_connection_get_metered; + nm_setting_connection_get_num_permissions; + nm_setting_connection_get_num_secondaries; + nm_setting_connection_get_permission; + nm_setting_connection_get_secondary; + nm_setting_connection_get_stable_id; + nm_setting_connection_get_type; + nm_setting_connection_get_uuid; + nm_setting_connection_get_zone; + nm_setting_connection_is_slave_type; + nm_setting_connection_new; + nm_setting_dcb_get_app_fcoe_flags; + nm_setting_dcb_get_app_fcoe_mode; + nm_setting_dcb_get_app_fcoe_priority; + nm_setting_dcb_get_app_fip_flags; + nm_setting_dcb_get_app_fip_priority; + nm_setting_dcb_get_app_iscsi_flags; + nm_setting_dcb_get_app_iscsi_priority; + nm_setting_dcb_get_priority_bandwidth; + nm_setting_dcb_get_priority_flow_control; + nm_setting_dcb_get_priority_flow_control_flags; + nm_setting_dcb_get_priority_group_bandwidth; + nm_setting_dcb_get_priority_group_flags; + nm_setting_dcb_get_priority_group_id; + nm_setting_dcb_get_priority_strict_bandwidth; + nm_setting_dcb_get_priority_traffic_class; + nm_setting_dcb_new; + nm_setting_dcb_set_priority_bandwidth; + nm_setting_dcb_set_priority_flow_control; + nm_setting_dcb_set_priority_group_bandwidth; + nm_setting_dcb_set_priority_group_id; + nm_setting_dcb_set_priority_strict_bandwidth; + nm_setting_dcb_set_priority_traffic_class; + nm_setting_generic_new; + nm_setting_get_secret_flags; + nm_setting_get_type; + nm_setting_gsm_get_apn; + nm_setting_gsm_get_device_id; + nm_setting_gsm_get_home_only; + nm_setting_gsm_get_network_id; + nm_setting_gsm_get_number; + nm_setting_gsm_get_password; + nm_setting_gsm_get_pin; + nm_setting_gsm_get_sim_id; + nm_setting_gsm_get_sim_operator_id; + nm_setting_gsm_get_username; + nm_setting_infiniband_get_mac_address; + nm_setting_infiniband_get_mtu; + nm_setting_infiniband_get_p_key; + nm_setting_infiniband_get_parent; + nm_setting_infiniband_get_transport_mode; + nm_setting_infiniband_get_type; + nm_setting_infiniband_new; + nm_setting_ip4_config_get_dhcp_client_id; + nm_setting_ip4_config_get_dhcp_fqdn; + nm_setting_ip4_config_get_type; + nm_setting_ip4_config_new; + nm_setting_ip6_config_addr_gen_mode_get_type; + nm_setting_ip6_config_get_addr_gen_mode; + nm_setting_ip6_config_get_ip6_privacy; + nm_setting_ip6_config_get_token; + nm_setting_ip6_config_get_type; + nm_setting_ip6_config_new; + nm_setting_ip_config_add_address; + nm_setting_ip_config_add_dns; + nm_setting_ip_config_add_dns_option; + nm_setting_ip_config_add_dns_search; + nm_setting_ip_config_add_route; + nm_setting_ip_config_clear_dns_options; + nm_setting_ip_config_get_address; + nm_setting_ip_config_get_dad_timeout; + nm_setting_ip_config_get_dhcp_hostname; + nm_setting_ip_config_get_dhcp_send_hostname; + nm_setting_ip_config_get_dhcp_timeout; + nm_setting_ip_config_get_dns; + nm_setting_ip_config_get_dns_option; + nm_setting_ip_config_get_dns_priority; + nm_setting_ip_config_get_dns_search; + nm_setting_ip_config_get_gateway; + nm_setting_ip_config_get_ignore_auto_dns; + nm_setting_ip_config_get_ignore_auto_routes; + nm_setting_ip_config_get_may_fail; + nm_setting_ip_config_get_method; + nm_setting_ip_config_get_never_default; + nm_setting_ip_config_get_num_addresses; + nm_setting_ip_config_get_num_dns; + nm_setting_ip_config_get_num_dns_options; + nm_setting_ip_config_get_num_dns_searches; + nm_setting_ip_config_get_num_routes; + nm_setting_ip_config_get_route; + nm_setting_ip_config_get_route_metric; + nm_setting_ip_config_get_type; + nm_setting_ip_config_has_dns_options; + nm_setting_olpc_mesh_get_channel; + nm_setting_olpc_mesh_get_dhcp_anycast_address; + nm_setting_olpc_mesh_get_ssid; + nm_setting_olpc_mesh_new; + nm_setting_ppp_get_noauth; + nm_setting_ppp_get_refuse_chap; + nm_setting_ppp_get_refuse_eap; + nm_setting_ppp_get_refuse_mschap; + nm_setting_ppp_get_refuse_mschapv2; + nm_setting_ppp_get_refuse_pap; + nm_setting_ppp_new; + nm_setting_pppoe_get_password; + nm_setting_pppoe_get_type; + nm_setting_pppoe_get_username; + nm_setting_pppoe_new; + nm_setting_proxy_get_browser_only; + nm_setting_proxy_get_method; + nm_setting_proxy_get_pac_script; + nm_setting_proxy_get_pac_url; + nm_setting_proxy_new; + nm_setting_team_get_config; + nm_setting_team_get_type; + nm_setting_team_new; + nm_setting_team_port_get_config; + nm_setting_team_port_new; + nm_setting_verify; + nm_setting_vlan_add_priority_str; + nm_setting_vlan_get_flags; + nm_setting_vlan_get_id; + nm_setting_vlan_get_parent; + nm_setting_vlan_get_type; + nm_setting_vlan_new; + nm_setting_wired_add_s390_option; + nm_setting_wired_get_cloned_mac_address; + nm_setting_wired_get_generate_mac_address_mask; + nm_setting_wired_get_mac_address; + nm_setting_wired_get_mac_address_blacklist; + nm_setting_wired_get_mtu; + nm_setting_wired_get_num_s390_options; + nm_setting_wired_get_s390_nettype; + nm_setting_wired_get_s390_option; + nm_setting_wired_get_s390_option_by_key; + nm_setting_wired_get_s390_subchannels; + nm_setting_wired_get_type; + nm_setting_wired_get_wake_on_lan; + nm_setting_wired_get_wake_on_lan_password; + nm_setting_wired_new; + nm_setting_wireless_ap_security_compatible; + nm_setting_wireless_get_band; + nm_setting_wireless_get_bssid; + nm_setting_wireless_get_channel; + nm_setting_wireless_get_cloned_mac_address; + nm_setting_wireless_get_generate_mac_address_mask; + nm_setting_wireless_get_hidden; + nm_setting_wireless_get_mac_address; + nm_setting_wireless_get_mac_address_blacklist; + nm_setting_wireless_get_mac_address_randomization; + nm_setting_wireless_get_mode; + nm_setting_wireless_get_mtu; + nm_setting_wireless_get_powersave; + nm_setting_wireless_get_ssid; + nm_setting_wireless_get_type; + nm_setting_wireless_new; + nm_setting_wireless_security_add_group; + nm_setting_wireless_security_add_pairwise; + nm_setting_wireless_security_add_proto; + nm_setting_wireless_security_get_auth_alg; + nm_setting_wireless_security_get_group; + nm_setting_wireless_security_get_key_mgmt; + nm_setting_wireless_security_get_leap_password; + nm_setting_wireless_security_get_leap_password_flags; + nm_setting_wireless_security_get_leap_username; + nm_setting_wireless_security_get_num_groups; + nm_setting_wireless_security_get_num_pairwise; + nm_setting_wireless_security_get_num_protos; + nm_setting_wireless_security_get_pairwise; + nm_setting_wireless_security_get_proto; + nm_setting_wireless_security_get_psk; + nm_setting_wireless_security_get_psk_flags; + nm_setting_wireless_security_get_type; + nm_setting_wireless_security_get_wep_key; + nm_setting_wireless_security_get_wep_key_flags; + nm_setting_wireless_security_get_wep_key_type; + nm_setting_wireless_security_get_wep_tx_keyidx; + nm_setting_wireless_security_new; + nm_setting_wireless_security_set_wep_key; + nm_settings_add_connection; + nm_settings_connection_add_seen_bssid; + nm_settings_connection_commit_changes; + nm_settings_connection_delete; + nm_settings_connection_get_filename; + nm_settings_connection_get_nm_generated; + nm_settings_connection_get_timestamp; + nm_settings_connection_get_type; + nm_settings_connection_has_seen_bssid; + nm_settings_connection_replace_settings; + nm_settings_connection_set_autoconnect_blocked_reason; + nm_settings_connection_set_filename; + nm_settings_connection_set_flags; + nm_settings_connection_set_ready; + nm_settings_connection_signal_remove; + nm_settings_error_quark; + nm_settings_get; + nm_settings_get_best_connections; + nm_settings_get_connections; + nm_settings_get_type; + nm_settings_plugin_get_type; + nm_simple_connection_new; + nm_supplicant_config_add_no_security; + nm_supplicant_config_add_setting_wireless; + nm_supplicant_config_add_setting_wireless_security; + nm_supplicant_config_new; + nm_supplicant_interface_disconnect; + nm_supplicant_interface_get_ap_support; + nm_supplicant_interface_get_current_bss; + nm_supplicant_interface_get_last_scan_time; + nm_supplicant_interface_get_max_scan_ssids; + nm_supplicant_interface_get_scanning; + nm_supplicant_interface_get_state; + nm_supplicant_interface_request_scan; + nm_supplicant_interface_set_config; + nm_supplicant_interface_state_to_string; + nm_supplicant_manager_create_interface; + nm_supplicant_manager_get; + nm_utils_bin2hexstr; + nm_utils_complete_generic; + nm_utils_enum_from_str; + nm_utils_enum_to_str; + nm_utils_escape_ssid; + nm_utils_find_helper; + nm_utils_g_value_set_object_path; + nm_utils_get_ip_config_method; + nm_utils_get_monotonic_timestamp_s; + nm_utils_hexstr2bin; + nm_utils_hw_addr_gen_random_eth; + nm_utils_hwaddr_aton; + nm_utils_hwaddr_matches; + nm_utils_hwaddr_ntoa; + nm_utils_hwaddr_valid; + nm_utils_iface_valid_name; + nm_utils_inet4_ntop; + nm_utils_ip4_get_default_prefix; + nm_utils_ip4_netmask_to_prefix; + nm_utils_ip4_prefix_to_netmask; + nm_utils_ipaddr_valid; + nm_utils_is_empty_ssid; + nm_utils_is_json_object; + nm_utils_kill_child_async; + nm_utils_monotonic_timestamp_as_boottime; + nm_utils_rsa_key_encrypt; + nm_utils_same_ssid; + nm_utils_setpgid; + nm_utils_ssid_to_utf8; + nm_utils_strbuf_append; + nm_utils_strbuf_append_str; + nm_utils_uuid_generate; + nm_utils_uuid_generate_from_string; + nm_utils_wep_key_valid; + nm_utils_wifi_channel_to_freq; + nm_utils_wifi_freq_to_channel; - /* The _IO_stdin_used symbol is used by the GNU libc to determine - which version of the I/O function should be used. Not - exporting it means that the "old" version is used, causing - crashes or other issues on some architectures. */ _IO_stdin_used; local: *; diff --git a/tools/create-exports-NetworkManager.sh b/tools/create-exports-NetworkManager.sh new file mode 100755 index 0000000000..a9ed1fc819 --- /dev/null +++ b/tools/create-exports-NetworkManager.sh @@ -0,0 +1,103 @@ +#!/bin/bash + +set -e + +# generates the linker version script src/NetworkManager.ver +# by looking at the symbols needed by the device and settings +# plugins. Note that this depends on how NetworkManager and +# the plugins are build. For example, compiling without +# --with-more-asserts will yield less symbols. +# +# _build re-builds NetworkManager with relevant compile time +# options to yield the most symbols. +_build() { + git clean -fdx + ./autogen.sh --enable-ld-gc --enable-ifcfg-rh --enable-ifupdown \ + --enable-ifnet --enable-ibft --enable-teamdctl --enable-wifi \ + --with-modem-manager-1 --with-ofono --with-more-asserts \ + --with-more-logging + make -j20 +} + +_sort() { + LANG=C sort -u +} + +call_nm() { + nm "$1" | + sed -n 's/^................ \(.\) \(.*\)$/\1 \2/p' +} + +get_symbols_nm () { + call_nm ./src/NetworkManager | + sed -n 's/^[tTDR] //p' | + _sort +} + +get_symbols_explict() { + cat <<EOF | _sort +_IO_stdin_used +EOF +} + +get_symbols_missing() { + (for f in ./src/settings/plugins/*/.libs/*.so ./src/devices/*/.libs/*.so; do + call_nm "$f" | + sed -n 's/^\([U]\) \(\(nm_\|nmp_\|_nm\|NM\|_NM\).*\)$/\2/p' + done) | + _sort | + grep -Fx -f <(get_symbols_explict) -v | + grep -Fx -f <(get_symbols_nm) +} + +pretty() { + sed 's/.*/\t\0;/' +} + +do_build() { + do_update + touch src/main.c + make +} + +do_rebuild() { + _build + do_build +} + +do_update() { + do_generate > ./src/NetworkManager.ver +} + +do_generate() { + cd "$(realpath $(dirname "$0"))/.." + test -f ./src/NetworkManager + + cat <<EOF +{ +global: +$(get_symbols_missing | pretty) + +$(get_symbols_explict | pretty) +local: + *; +}; +EOF +} + + +case "$1" in + rebuild) + do_rebuild + ;; + build) + do_build + ;; + update) + do_update + ;; + *) + do_generate + ;; +esac + |