Hiding all non-API symbols from the linker by use of --version-script

This commit is contained in:
Thomas Schmitt 2010-07-05 18:20:59 +02:00
parent 73bc3ae512
commit b01f017a6d
4 changed files with 313 additions and 0 deletions

View File

@ -262,6 +262,7 @@ EXTRA_DIST = \
doc/susp_aaip_isofs_names.txt \
doc/zisofs_format.txt \
doc/checksums.txt \
libisofs/libisofs.ver \
libisofs/aaip-os-dummy.c \
libisofs/aaip-os-linux.c \
libisofs/aaip-os-freebsd.c

View File

@ -205,6 +205,24 @@ else
fi
AC_SUBST(ZLIB_DEF)
# Library versioning normally serves a complex purpose.
# Since libisofs obeys strict ABI backward compatibility, it needs only the
# simple feature to declare function names "global:" or "local:". Only the
# global ones are visible to applications at library load time.
dnl
dnl >>> TODO:
dnl >>> make an actual try whether -Wl,--version-script=libisofs/libisofs.ver
dnl >>> is accepted by the compiler
dnl
AC_ARG_ENABLE(versioned-libs,
[ --enable-versioned-libs Enable strict symbol encapsulation , default=yes],
, enable_versioned_libs=yes)
if test x$enable_versioned_libs = xyes; then
LDFLAGS="$LDFLAGS -Wl,--version-script=libisofs/libisofs.ver"
echo "enabled strict symbol encapsulation"
else
echo "disabled strict symbol encapsulation"
fi
AC_CONFIG_FILES([
Makefile

View File

@ -8,6 +8,10 @@
* See COPYING file for details.
*/
/* Important: If you add a public API function then add its name to file
libisofs/libisofs.ver
*/
/*
*
* Applications must use 64 bit off_t, e.g. on 32-bit GNU/Linux by defining

290
libisofs/libisofs.ver Normal file
View File

@ -0,0 +1,290 @@
LIBISOFS6 {
global:
aaip_xinfo_func;
el_torito_get_bootable;
el_torito_get_boot_media_type;
el_torito_get_boot_platform_id;
el_torito_get_id_string;
el_torito_get_isolinux_options;
el_torito_get_load_seg;
el_torito_get_load_size;
el_torito_get_selection_crit;
el_torito_patch_isolinux_image;
el_torito_seems_boot_info_table;
el_torito_set_boot_platform_id;
el_torito_set_id_string;
el_torito_set_isolinux_options;
el_torito_set_load_seg;
el_torito_set_load_size;
el_torito_set_no_bootable;
el_torito_set_selection_crit;
iso_data_source_new_from_file;
iso_data_source_ref;
iso_data_source_unref;
iso_dir_add_node;
iso_dir_find_children;
iso_dir_get_children;
iso_dir_get_children_count;
iso_dir_get_node;
iso_dir_iter_free;
iso_dir_iter_has_next;
iso_dir_iter_next;
iso_dir_iter_remove;
iso_dir_iter_take;
iso_error_get_code;
iso_error_get_priority;
iso_error_get_severity;
iso_error_to_msg;
iso_file_add_external_filter;
iso_file_add_gzip_filter;
iso_file_add_zisofs_filter;
iso_file_get_md5;
iso_file_get_old_image_lba;
iso_file_get_old_image_sections;
iso_file_get_size;
iso_file_get_sort_weight;
iso_file_get_stream;
iso_file_make_md5;
iso_file_remove_filter;
iso_file_source_access;
iso_file_source_close;
iso_file_source_get_aa_string;
iso_file_source_get_filesystem;
iso_file_source_get_name;
iso_file_source_get_path;
iso_file_source_lseek;
iso_file_source_lstat;
iso_file_source_open;
iso_file_source_read;
iso_file_source_readdir;
iso_file_source_readlink;
iso_file_source_ref;
iso_file_source_stat;
iso_file_source_unref;
iso_filesystem_ref;
iso_filesystem_unref;
iso_finish;
iso_get_local_charset;
iso_get_messenger;
iso_gzip_get_refcounts;
iso_image_add_boot_image;
iso_image_attach_data;
iso_image_create_burn_source;
iso_image_filesystem_new;
iso_image_fs_get_abstract_file_id;
iso_image_fs_get_application_id;
iso_image_fs_get_biblio_file_id;
iso_image_fs_get_copyright_file_id;
iso_image_fs_get_data_preparer_id;
iso_image_fs_get_publisher_id;
iso_image_fs_get_system_id;
iso_image_fs_get_volset_id;
iso_image_fs_get_volume_id;
iso_image_get_abstract_file_id;
iso_image_get_all_boot_imgs;
iso_image_get_application_id;
iso_image_get_attached_data;
iso_image_get_biblio_file_id;
iso_image_get_boot_image;
iso_image_get_copyright_file_id;
iso_image_get_data_preparer_id;
iso_image_get_msg_id;
iso_image_get_publisher_id;
iso_image_get_root;
iso_image_get_session_md5;
iso_image_get_system_area;
iso_image_get_system_id;
iso_image_get_volset_id;
iso_image_get_volume_id;
iso_image_import;
iso_image_new;
iso_image_ref;
iso_image_remove_boot_image;
iso_image_set_abstract_file_id;
iso_image_set_application_id;
iso_image_set_biblio_file_id;
iso_image_set_boot_catalog_hidden;
iso_image_set_boot_catalog_weight;
iso_image_set_boot_image;
iso_image_set_copyright_file_id;
iso_image_set_data_preparer_id;
iso_image_set_ignore_aclea;
iso_image_set_publisher_id;
iso_image_set_system_id;
iso_image_set_volset_id;
iso_image_set_volume_id;
iso_image_unref;
iso_image_update_sizes;
iso_init;
iso_init_with_flag;
iso_lib_is_compatible;
iso_lib_version;
iso_local_get_acl_text;
iso_local_get_attrs;
iso_local_get_perms_wo_acl;
iso_local_set_acl_text;
iso_local_set_attrs;
iso_md5_clone;
iso_md5_compute;
iso_md5_end;
iso_md5_match;
iso_md5_start;
iso_msgs_submit;
iso_new_find_conditions_and;
iso_new_find_conditions_atime;
iso_new_find_conditions_ctime;
iso_new_find_conditions_gid;
iso_new_find_conditions_mode;
iso_new_find_conditions_mtime;
iso_new_find_conditions_name;
iso_new_find_conditions_not;
iso_new_find_conditions_or;
iso_new_find_conditions_uid;
iso_node_add_xinfo;
iso_node_cmp_ino;
iso_node_get_acl_text;
iso_node_get_atime;
iso_node_get_attrs;
iso_node_get_ctime;
iso_node_get_gid;
iso_node_get_hidden;
iso_node_get_mode;
iso_node_get_mtime;
iso_node_get_name;
iso_node_get_old_image_lba;
iso_node_get_parent;
iso_node_get_permissions;
iso_node_get_perms_wo_acl;
iso_node_get_type;
iso_node_get_uid;
iso_node_get_xinfo;
iso_node_lookup_attr;
iso_node_ref;
iso_node_remove;
iso_node_remove_xinfo;
iso_node_set_acl_text;
iso_node_set_atime;
iso_node_set_attrs;
iso_node_set_ctime;
iso_node_set_gid;
iso_node_set_hidden;
iso_node_set_mtime;
iso_node_set_name;
iso_node_set_permissions;
iso_node_set_sort_weight;
iso_node_set_uid;
iso_node_take;
iso_node_unref;
iso_node_zf_by_magic;
iso_obtain_msgs;
iso_read_image_features_destroy;
iso_read_image_features_get_size;
iso_read_image_features_has_eltorito;
iso_read_image_features_has_iso1999;
iso_read_image_features_has_joliet;
iso_read_image_features_has_rockridge;
iso_read_opts_auto_input_charset;
iso_read_opts_free;
iso_read_opts_load_system_area;
iso_read_opts_new;
iso_read_opts_set_default_gid;
iso_read_opts_set_default_permissions;
iso_read_opts_set_default_uid;
iso_read_opts_set_input_charset;
iso_read_opts_set_new_inos;
iso_read_opts_set_no_aaip;
iso_read_opts_set_no_iso1999;
iso_read_opts_set_no_joliet;
iso_read_opts_set_no_md5;
iso_read_opts_set_no_rockridge;
iso_read_opts_set_preferjoliet;
iso_read_opts_set_start_block;
iso_ring_buffer_get_status;
iso_set_abort_severity;
iso_set_local_charset;
iso_set_msgs_severities;
iso_sev_to_text;
iso_special_get_dev;
iso_stream_close;
iso_stream_cmp_ino;
iso_stream_get_external_filter;
iso_stream_get_id;
iso_stream_get_input_stream;
iso_stream_get_size;
iso_stream_get_source_path;
iso_stream_is_repeatable;
iso_stream_open;
iso_stream_read;
iso_stream_ref;
iso_stream_unref;
iso_stream_update_size;
iso_symlink_get_dest;
iso_symlink_set_dest;
iso_text_to_sev;
iso_tree_add_dir_rec;
iso_tree_add_exclude;
iso_tree_add_new_cut_out_node;
iso_tree_add_new_dir;
iso_tree_add_new_file;
iso_tree_add_new_node;
iso_tree_add_new_special;
iso_tree_add_new_symlink;
iso_tree_add_node;
iso_tree_get_follow_symlinks;
iso_tree_get_ignore_hidden;
iso_tree_get_ignore_special;
iso_tree_get_node_path;
iso_tree_get_replace_mode;
iso_tree_path_to_node;
iso_tree_remove_exclude;
iso_tree_set_follow_symlinks;
iso_tree_set_ignore_hidden;
iso_tree_set_ignore_special;
iso_tree_set_replace_mode;
iso_tree_set_report_callback;
iso_util_decode_md5_tag;
iso_write_opts_free;
iso_write_opts_get_data_start;
iso_write_opts_new;
iso_write_opts_set_aaip;
iso_write_opts_set_aaip_susp_1_10;
iso_write_opts_set_allow_deep_paths;
iso_write_opts_set_allow_full_ascii;
iso_write_opts_set_allow_longer_paths;
iso_write_opts_set_allow_lowercase;
iso_write_opts_set_always_gmt;
iso_write_opts_set_appendable;
iso_write_opts_set_default_dir_mode;
iso_write_opts_set_default_file_mode;
iso_write_opts_set_default_gid;
iso_write_opts_set_default_timestamp;
iso_write_opts_set_default_uid;
iso_write_opts_set_dir_rec_mtime;
iso_write_opts_set_fifo_size;
iso_write_opts_set_hardlinks;
iso_write_opts_set_iso1999;
iso_write_opts_set_iso_level;
iso_write_opts_set_joliet;
iso_write_opts_set_joliet_longer_paths;
iso_write_opts_set_max_37_char_filenames;
iso_write_opts_set_ms_block;
iso_write_opts_set_no_force_dots;
iso_write_opts_set_omit_version_numbers;
iso_write_opts_set_output_charset;
iso_write_opts_set_overwrite_buf;
iso_write_opts_set_pvd_times;
iso_write_opts_set_record_md5;
iso_write_opts_set_relaxed_vol_atts;
iso_write_opts_set_replace_mode;
iso_write_opts_set_replace_timestamps;
iso_write_opts_set_rockridge;
iso_write_opts_set_rrip_1_10_px_ino;
iso_write_opts_set_rrip_version_1_10;
iso_write_opts_set_scdbackup_tag;
iso_write_opts_set_sort_files;
iso_write_opts_set_system_area;
iso_zisofs_get_params;
iso_zisofs_get_refcounts;
iso_zisofs_set_params;
local: *;
};