From 0f3b41570794aaf1260d8db23fe20871a031b92a Mon Sep 17 00:00:00 2001 From: Daniel Hokka Zakrisson Date: Thu, 30 Oct 2008 21:23:00 +0000 Subject: [PATCH] Library versioning stubs. git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2810 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- configure.ac | 10 ++++++++++ lib/Makefile-files | 4 ++++ lib/internal.h | 18 ++++++++++++++++++ lib/libvserver.ver | 6 ++++++ 4 files changed, 38 insertions(+) create mode 100644 lib/libvserver.ver diff --git a/configure.ac b/configure.ac index 2da8aa9..fa47ee6 100644 --- a/configure.ac +++ b/configure.ac @@ -475,6 +475,16 @@ dnl Python stuff ends here dnl ######################## +dnl ######################## +dnl Library versioning + +AM_CONDITIONAL([HAVE_VERSIONING], [true]) +AC_DEFINE([HAVE_VERSIONING], [1], [Define this to use library versioning]) + +dnl /Library versioning +dnl ######################## + + dnl BIG HACK! Do some autodetection here! AC_DEFINE(UTMP_GID, [22], [The utmp gid-number]) diff --git a/lib/Makefile-files b/lib/Makefile-files index cccd057..b42adce 100644 --- a/lib/Makefile-files +++ b/lib/Makefile-files @@ -252,6 +252,10 @@ endif lib_libvserver_la_SOURCES = $(lib_SRCS) lib_libvserver_la_CPPFLAGS = $(AM_CPPFLAGS) $(LIB_DEBUG_CPPFLAGS) lib_libvserver_la_LDFLAGS = -version $(lib_VERSION) +if HAVE_VERSIONING +lib_libvserver_la_LDFLAGS += -Wl,-version-script=$(top_srcdir)/lib/libvserver.ver +EXTRA_DIST += lib/libvserver.ver +endif lib_libvserver_a_SOURCES = $(lib_SRCS) lib_libvserver_a_CPPFLAGS = $(AM_CPPFLAGS) $(LIB_DEBUG_CPPFLAGS) diff --git a/lib/internal.h b/lib/internal.h index f9192bb..893af27 100644 --- a/lib/internal.h +++ b/lib/internal.h @@ -32,6 +32,24 @@ extern "C" { #endif + +#ifdef HAVE_VERSIONING +/* FIXME: HAVE_ASM_DOT_GLOBAL_NAME */ +# define _symbol_version(real, name, version) \ + __asm__ (".symver " #real "," #name "@" #version) +# define _default_symbol_version(real, name, version) \ + __asm__ (".symver " #real "," #name "@@" #version) +#else +# define _symbol_version(real, name, version) +# define _default_symbol_version(real, name, version) \ + extern __typeof (real) name __attribute__ ((alias (#name))); +#endif +#define symbol_version(real, name, version) \ + _symbol_version(real, name, version) +#define default_symbol_version(real, name, version) \ + _default_symbol_version(real, name, version) + + char * vc_getVserverByCtx_Internal(xid_t ctx, /*@null@*/vcCfgStyle *style, /*@null@*/char const *revdir, bool validate_result); diff --git a/lib/libvserver.ver b/lib/libvserver.ver new file mode 100644 index 0000000..9ab0625 --- /dev/null +++ b/lib/libvserver.ver @@ -0,0 +1,6 @@ +VSERVER_0_30_215 { + global: *; +}; + +VSERVER_0_30_216 { +} VSERVER_0_30_215; -- 1.8.1.5