summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2016-10-11 16:40:00 +0200
committerThomas Haller <thaller@redhat.com>2016-10-12 10:50:45 +0200
commitcf39f767f25329d1c19f4391638ddc8e369d7c61 (patch)
tree197705eaa282404e3adcdb625b3ada25b97ea8f4
parent3d2e3873c24e3c70cd28a22f2a82c7c4e81414f6 (diff)
downloadNetworkManager-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.ver560
-rwxr-xr-xtools/create-exports-NetworkManager.sh103
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
+