[devel] [RFC] libopenobex-1.3 symbol versioning patch
Sergey Vlasov
=?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Пт Авг 11 22:44:53 MSD 2006
Hello!
Прошу высказать замечания по прилагаемому патчу, который добавляет
symbol versioning в libopenobex-1.3 (сейчас в Сизифе лежит 1.0.1).
Глубже версии 1.0.0 я копать не стал (это конец 2002 года, 1.0.1, где
не сделали ничего существенного - октябрь 2003). На то, что было в
этих версиях, я поставил версию OPENOBEX_1.0 (можно было, конечно,
написать 1.0.0, но позднее формат версий немного сменился).
Функции OBEX_SetUserCallBack, OBEX_SetTransportMTU, OBEX_ServerAccept,
OBEX_ObjectReParseHeaders на самом деле были ещё в 1.0.0, но
фактически не были доступны из-за фильтрации символов по lib/obex.sym,
где они были пропущены (эта ошибка была исправлена уже после выхода
1.0.1, и первый релиз, в который попало исправление - 1.1), поэтому я
поставил для этих символов версию OPENOBEX_1.1, как и для добавленных
позднее в ходе разработки 1.1 OBEX_SuspendRequest, OBEX_ResumeRequest,
OBEX_InterfaceConnect, OBEX_FindInterfaces, OBEX_FreeInterfaces.
После 1.1 вроде бы изменений ABI больше не было (во всяком случае,
файл lib/obex.sym больше не менялся).
Тест для autoconf самопальный - возможно, у кого-то есть варианты
лучше?
--- openobex-1.3/lib/Makefile.am.alt-symbol-versions 2006-08-11 16:38:36 +0400
+++ openobex-1.3/lib/Makefile.am 2006-08-11 22:05:23 +0400
@@ -17,14 +17,20 @@ libopenobex_la_SOURCES = \
irda.h irda_wrap.h \
usbobex.c usbobex.h
+if VERSIONED_SYMBOLS
+VSYMS = -Wl,--version-script=$(srcdir)/obex.ver
+else
+VSYMS = -export-symbols $(srcdir)/obex.sym
+endif
+
libopenobex_la_LDFLAGS = \
-version-info 4:0:3 \
- -export-symbols $(top_srcdir)/lib/obex.sym
+ $(VSYMS)
libopenobex_la_LIBADD = @USB_LIBS@
INCLUDES = -I$(top_builddir)/include
-EXTRA_DIST = obex.sym win32compat.c
+EXTRA_DIST = obex.ver obex.sym win32compat.c
MAINTAINERCLEANFILES = Makefile.in
--- openobex-1.3/lib/obex.ver.alt-symbol-versions 2006-08-11 22:05:23 +0400
+++ openobex-1.3/lib/obex.ver 2006-08-11 22:05:23 +0400
@@ -0,0 +1,57 @@
+OPENOBEX_1.0 {
+global:
+
+ OBEX_Init;
+ OBEX_Cleanup;
+ OBEX_RegisterCTransport;
+ OBEX_SetCustomData;
+ OBEX_GetCustomData;
+ OBEX_TransportConnect;
+ OBEX_TransportDisconnect;
+ OBEX_CustomDataFeed;
+ OBEX_GetFD;
+ OBEX_HandleInput;
+ OBEX_ServerRegister;
+ OBEX_Request;
+ OBEX_CancelRequest;
+ OBEX_SetUserData;
+ OBEX_GetUserData;
+ OBEX_ObjectNew;
+ OBEX_ObjectDelete;
+ OBEX_ObjectAddHeader;
+ OBEX_ObjectGetNextHeader;
+ OBEX_ObjectReadStream;
+ OBEX_ObjectSetRsp;
+ OBEX_ObjectGetNonHdrData;
+ OBEX_ObjectSetNonHdrData;
+ OBEX_ObjectSetHdrOffset;
+ OBEX_UnicodeToChar;
+ OBEX_CharToUnicode;
+ OBEX_ResponseToString;
+ OBEX_GetResponseMessage;
+ InOBEX_ServerRegister;
+ InOBEX_TransportConnect;
+ IrOBEX_ServerRegister;
+ IrOBEX_TransportConnect;
+ BtOBEX_ServerRegister;
+ BtOBEX_TransportConnect;
+ FdOBEX_TransportSetup;
+
+local:
+ *;
+};
+
+OPENOBEX_1.1 {
+global:
+
+ OBEX_FindInterfaces;
+ OBEX_FreeInterfaces;
+ OBEX_InterfaceConnect;
+ OBEX_ObjectReParseHeaders;
+ OBEX_ResumeRequest;
+ OBEX_ServerAccept;
+ OBEX_SetTransportMTU;
+ OBEX_SetUserCallBack;
+ OBEX_SuspendRequest;
+
+} OPENOBEX_1.0;
--- openobex-1.3/acinclude.m4.alt-symbol-versions 2006-08-11 16:38:36 +0400
+++ openobex-1.3/acinclude.m4 2006-08-11 22:12:09 +0400
@@ -44,6 +44,55 @@ AC_DEFUN([AC_INIT_OPENOBEX], [
AC_DEFINE_UNQUOTED(CONFIGDIR, "${configdir}", [Directory for the configuration files])
])
+AC_DEFUN([AC_CHECK_VERSIONED_SYMBOLS], [
+ AC_ARG_ENABLE(symbol-versions,
+ AC_HELP_STRING([--disable-symbol-versions], [do not compile shared library with versioned symbols]),
+ versioned="$withval", versioned="yes")
+ if test "$versioned" = "yes"; then
+ AC_CACHE_CHECK([whether -Wl,--version-script=... works], ac_cv_version_script_works, [
+ cat <<ACEOF >conftest.ver
+TEST_1.0 {
+global:
+ test_1_0;
+local:
+ *;
+};
+TEST_1.1 {
+global:
+ test_1_1;
+} TEST_1.0;
+ACEOF
+ saved_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -shared -Wl,--version-script=conftest.ver"
+ AC_TRY_LINK([
+ int test_1_0(void)
+ {
+ return 0;
+ }
+ int test_1_1(void)
+ {
+ return 1;
+ }
+ ], [],
+ [ac_cv_version_script_works=yes],
+ [ac_cv_version_script_works=no])
+ LDFLAGS="$saved_LDFLAGS"
+ ])
+ if test "$ac_cv_version_script_works" = "yes"; then
+ :
+ else
+ versioned=no
+ fi
+ fi
+ AC_MSG_CHECKING(for versioned symbols)
+ if test "$versioned" = "yes"; then
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+ fi
+ AM_CONDITIONAL(VERSIONED_SYMBOLS, test x$versioned = xyes)
+])
+
AC_DEFUN([AC_PATH_IRDA], [
AC_CACHE_CHECK([for IrDA support], irda_found, [
AC_TRY_COMPILE([
--- openobex-1.3/configure.in.alt-symbol-versions 2006-08-11 16:38:36 +0400
+++ openobex-1.3/configure.in 2006-08-11 22:05:23 +0400
@@ -18,6 +18,7 @@ m4_define([_LT_AC_TAGCONFIG], [])
m4_ifdef([AC_LIBTOOL_TAGS], [AC_LIBTOOL_TAGS([])])
AC_PROG_LIBTOOL
+AC_CHECK_VERSIONED_SYMBOLS
AC_PATH_IRDA
AC_PATH_BLUEZ
--
Sergey Vlasov
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 191 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20060811/312c3fe9/attachment-0001.bin>
Подробная информация о списке рассылки Devel