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

This commit is contained in:
Thomas Schmitt 2010-07-04 17:01:21 +00:00
parent c866b6bc35
commit 85eb091025
4 changed files with 190 additions and 4 deletions

View File

@ -199,6 +199,7 @@ EXTRA_DIST = \
cdrskin/wiki_plain.txt \
cdrskin/cleanup.h \
cdrskin/cleanup.c \
libburn/libburn.ver \
libburn/os-dummy.h \
libburn/os-freebsd.h \
libburn/os-linux.h \

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2010.07.04.131219"
#define Cdrskin_timestamP "2010.07.04.170035"

View File

@ -188,7 +188,7 @@ CFLAGS="$CFLAGS $STATVFS_DEF"
dnl ts A91122
AC_ARG_ENABLE(track-src-odirect,
[ --enable-track-src-odirect Enable use of O_DIRECT with track input, default=no],
[ --enable-track-src-odirect Enable use of O_DIRECT with track input, default=no],
, enable_track_src_odirect=no)
if test x$enable_track_src_odirect = xyes; then
LIBBURN_O_DIRECT_DEF="-DLibburn_read_o_direcT"
@ -203,7 +203,7 @@ CFLAGS="$CFLAGS $LIBBURN_O_DIRECT_DEF"
dnl ts A91116
AC_ARG_ENABLE(dvd-obs-64k,
[ --enable-dvd-obs-64k 64 KB default size for DVD/BD writing, default=no],
[ --enable-dvd-obs-64k 64 KB default size for DVD/BD writing, default=no],
, enable_dvd_obs_64k=no)
if test x$enable_dvd_obs_64k = xyes; then
LIBBURN_DVD_OBS_64K="-DLibburn_dvd_obs_default_64K"
@ -216,7 +216,7 @@ CFLAGS="$CFLAGS $LIBBURN_DVD_OBS_64K"
dnl ts A91218
AC_ARG_ENABLE(libcdio,
[ --enable-libcdio Enable EXPERIMENTAL use of libcdio as system adapter, default=no],
[ --enable-libcdio Enable EXPERIMENTAL use of libcdio as system adapter, default=no],
, enable_libcdio=no)
if test x$enable_libcdio = xyes; then
dnl Check whether there is libcdio-devel and libcdio-runtime.
@ -242,6 +242,26 @@ else
fi
dnl ts B00704
# Library versioning normally serves a complex purpose.
# Since libburn 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=libburn/libburn.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=libburn/libburn.ver"
echo "enabled strict symbol encapsulation"
else
echo "disabled strict symbol encapsulation"
fi
dnl Add compiler-specific flags

165
libburn/libburn.ver Normal file
View File

@ -0,0 +1,165 @@
LIBBURN4 {
global:
burn_abort;
burn_abort_pacifier;
burn_allow_untested_profiles;
burn_disc_add_session;
burn_disc_available_space;
burn_disc_create;
burn_disc_erasable;
burn_disc_erase;
burn_disc_format;
burn_disc_free;
burn_disc_free_multi_caps;
burn_disc_get_cd_info;
burn_disc_get_format_descr;
burn_disc_get_formats;
burn_disc_get_media_id;
burn_disc_get_msc1;
burn_disc_get_multi_caps;
burn_disc_get_profile;
burn_disc_get_sectors;
burn_disc_get_sessions;
burn_disc_get_status;
burn_disc_pretend_blank;
burn_disc_pretend_full;
burn_disc_read;
burn_disc_read_atip;
burn_disc_remove_session;
burn_disc_track_lba_nwa;
burn_disc_write;
burn_drive_add_whitelist;
burn_drive_cancel;
burn_drive_clear_whitelist;
burn_drive_convert_fs_adr;
burn_drive_convert_scsi_adr;
burn_drive_d_get_adr;
burn_drive_equals_adr;
burn_drive_free_speedlist;
burn_drive_get_adr;
burn_drive_get_all_profiles;
burn_drive_get_best_speed;
burn_drive_get_disc;
burn_drive_get_drive_role;
burn_drive_get_min_write_speed;
burn_drive_get_read_speed;
burn_drive_get_speedlist;
burn_drive_get_start_end_lba;
burn_drive_get_status;
burn_drive_get_write_speed;
burn_drive_grab;
burn_drive_info_forget;
burn_drive_info_free;
burn_drive_is_enumerable_adr;
burn_drive_leave_locked;
burn_drive_obtain_scsi_adr;
burn_drive_probe_cd_write_modes;
burn_drive_release;
burn_drive_scan;
burn_drive_scan_and_grab;
burn_drive_set_buffer_waiting;
burn_drive_set_speed;
burn_drive_set_stream_recording;
burn_drive_snooze;
burn_drive_wrote_well;
burn_fd_source_new;
burn_fifo_fill;
burn_fifo_get_statistics;
burn_fifo_inquire_status;
burn_fifo_next_interval;
burn_fifo_peek_data;
burn_fifo_source_new;
burn_file_source_new;
burn_finish;
burn_get_read_capacity;
burn_guess_cd_manufacturer;
burn_guess_manufacturer;
burn_initialize;
burn_is_aborting;
burn_lba_to_msf;
burn_msf_to_lba;
burn_msf_to_sectors;
burn_msgs_obtain;
burn_msgs_set_severities;
burn_msgs_submit;
burn_obtain_profile_name;
burn_os_alloc_buffer;
burn_os_free_buffer;
burn_os_open_track_src;
burn_precheck_write;
burn_preset_device_open;
burn_random_access_write;
burn_read_data;
burn_read_opts_free;
burn_read_opts_new;
burn_read_opts_read_subcodes_audio;
burn_read_opts_read_subcodes_data;
burn_read_opts_report_recovered_errors;
burn_read_opts_set_c2errors;
burn_read_opts_set_hardware_error_recovery;
burn_read_opts_set_hardware_error_retries;
burn_read_opts_set_raw;
burn_read_opts_transfer_damaged_blocks;
burn_scsi_transport_id;
burn_sectors_to_msf;
burn_session_add_track;
burn_session_create;
burn_session_free;
burn_session_get_hidefirst;
burn_session_get_leadout_entry;
burn_session_get_sectors;
burn_session_get_tracks;
burn_session_hide_first_track;
burn_session_remove_track;
burn_set_messenger;
burn_set_scsi_logging;
burn_set_signal_handling;
burn_set_verbosity;
burn_sev_to_text;
burn_source_free;
burn_structure_print_disc;
burn_structure_print_session;
burn_structure_print_track;
burn_text_to_sev;
burn_track_clear_isrc;
burn_track_create;
burn_track_define_data;
burn_track_free;
burn_track_get_counters;
burn_track_get_entry;
burn_track_get_mode;
burn_track_get_sectors;
burn_track_set_byte_swap;
burn_track_set_cdxa_conv;
burn_track_set_default_size;
burn_track_set_isrc;
burn_track_set_size;
burn_track_set_source;
burn_version;
burn_write_opts_auto_write_type;
burn_write_opts_free;
burn_write_opts_get_drive;
burn_write_opts_new;
burn_write_opts_set_dvd_obs;
burn_write_opts_set_fillup;
burn_write_opts_set_force;
burn_write_opts_set_format;
burn_write_opts_set_has_mediacatalog;
burn_write_opts_set_mediacatalog;
burn_write_opts_set_multi;
burn_write_opts_set_perform_opc;
burn_write_opts_set_simulate;
burn_write_opts_set_start_byte;
burn_write_opts_set_stdio_fsync;
burn_write_opts_set_stream_recording;
burn_write_opts_set_toc_entries;
burn_write_opts_set_underrun_proof;
burn_write_opts_set_write_type;
libdax_audioxtr_destroy;
libdax_audioxtr_detach_fd;
libdax_audioxtr_get_id;
libdax_audioxtr_get_size;
libdax_audioxtr_new;
libdax_audioxtr_read;
local: *;
};