From 85eb09102593ca7fd9bfec5638ee23716c0e9a40 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Sun, 4 Jul 2010 17:01:21 +0000 Subject: [PATCH] Hiding all non-API symbols from the linker by use of --version-script --- Makefile.am | 1 + cdrskin/cdrskin_timestamp.h | 2 +- configure.ac | 26 +++++- libburn/libburn.ver | 165 ++++++++++++++++++++++++++++++++++++ 4 files changed, 190 insertions(+), 4 deletions(-) create mode 100644 libburn/libburn.ver diff --git a/Makefile.am b/Makefile.am index 5f11715..d883dce 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 \ diff --git a/cdrskin/cdrskin_timestamp.h b/cdrskin/cdrskin_timestamp.h index 7157b60..bda3221 100644 --- a/cdrskin/cdrskin_timestamp.h +++ b/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2010.07.04.131219" +#define Cdrskin_timestamP "2010.07.04.170035" diff --git a/configure.ac b/configure.ac index ca4cb43..1f78554 100644 --- a/configure.ac +++ b/configure.ac @@ -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 diff --git a/libburn/libburn.ver b/libburn/libburn.ver new file mode 100644 index 0000000..4f52630 --- /dev/null +++ b/libburn/libburn.ver @@ -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: *; +};