This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.24-9-g968dc26


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  968dc26df61f4577c6a1df5734de21c1504d2c79 (commit)
      from  f690b56979dea81340a397c1b5e44827a6fb06e7 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=968dc26df61f4577c6a1df5734de21c1504d2c79

commit 968dc26df61f4577c6a1df5734de21c1504d2c79
Author: Florian Weimer <fweimer@redhat.com>
Date:   Tue Aug 2 17:18:08 2016 +0200

    Add support for referencing specific symbol versions
    
    This is needed for writing tests of compat symbols.

diff --git a/ChangeLog b/ChangeLog
index 3edcce4..8c2eb8e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
 2016-08-02  Florian Weimer  <fweimer@redhat.com>
 
+	Support linking against compatibility symbols, for use in tests.
+	* include/libc-symbols.h (symbol_version_reference): New macro.
+	(symbol_version): Use it.
+	* include/shlib-compat.h: Unconditionally include <abi-versions.h>.
+	(compat_symbol): Use compat_symbol_reference.
+	(compat_symbol_1, compat_symbol_2): Remove.
+	(compat_symbol_reference, compat_symbol_reference_1)
+	(compat_symbol_reference_2): New macro.  Use
+	symbol_version_reference.
+
+2016-08-02  Florian Weimer  <fweimer@redhat.com>
+
 	[BZ #19469]
 	* malloc/Makefile (CPPFLAGS): Compile tests with
 	-DTEST_NO_MALLOPT.
diff --git a/include/libc-symbols.h b/include/libc-symbols.h
index 4548e09..c2b499a 100644
--- a/include/libc-symbols.h
+++ b/include/libc-symbols.h
@@ -282,19 +282,28 @@ for linking")
    past the last element in SET.  */
 #define symbol_set_end_p(set, ptr) ((ptr) >= (void *const *) &__stop_##set)
 
+/* Use symbol_version_reference to specify the version a symbol
+   reference should link to.  Use symbol_version or
+   default_symbol_version for the definition of a versioned symbol.
+   The difference is that the latter is a no-op in non-shared
+   builds.  */
+#ifdef __ASSEMBLER__
+# define symbol_version_reference(real, name, version) \
+     .symver real, name##@##version
+#else  /* !__ASSEMBLER__ */
+# define symbol_version_reference(real, name, version) \
+  __asm__ (".symver " #real "," #name "@" #version)
+#endif
+
 #ifdef SHARED
 # define symbol_version(real, name, version) \
-     _symbol_version(real, name, version)
+  symbol_version_reference(real, name, version)
 # define default_symbol_version(real, name, version) \
      _default_symbol_version(real, name, version)
 # ifdef __ASSEMBLER__
-#  define _symbol_version(real, name, version) \
-     .symver real, name##@##version
 #  define _default_symbol_version(real, name, version) \
      .symver real, name##@##@##version
 # else
-#  define _symbol_version(real, name, version) \
-     __asm__ (".symver " #real "," #name "@" #version)
 #  define _default_symbol_version(real, name, version) \
      __asm__ (".symver " #real "," #name "@@" #version)
 # endif
diff --git a/include/shlib-compat.h b/include/shlib-compat.h
index c1c5e2c..025c731 100644
--- a/include/shlib-compat.h
+++ b/include/shlib-compat.h
@@ -19,10 +19,10 @@
 #ifndef _SHLIB_COMPAT_H
 #define _SHLIB_COMPAT_H	1
 
-#ifdef SHARED
-
 # include <abi-versions.h>
 
+#ifdef SHARED
+
 /* The file abi-versions.h (generated by scripts/abi-versions.awk) defines
    symbols like `ABI_libm_GLIBC_2_0' for each version set in the source
    code for each library.  For a version set that is subsumed by a later
@@ -62,11 +62,7 @@
   default_symbol_version (local, symbol, name)
 
 # define compat_symbol(lib, local, symbol, version) \
-  compat_symbol_1 (lib, local, symbol, version)
-# define compat_symbol_1(lib, local, symbol, version) \
-  compat_symbol_2 (local, symbol, VERSION_##lib##_##version)
-# define compat_symbol_2(local, symbol, name) \
-  symbol_version (local, symbol, name)
+  compat_symbol_reference (lib, local, symbol, version)
 
 #else
 
@@ -82,6 +78,14 @@
 
 #endif
 
+/* Use compat_symbol_reference for a reference to a specific version
+   of a symbol.  Use compat_symbol to define such a symbol.  */
+#define compat_symbol_reference(lib, local, symbol, version) \
+  compat_symbol_reference_1 (lib, local, symbol, version)
+#define compat_symbol_reference_1(lib, local, symbol, version) \
+  compat_symbol_reference_2 (local, symbol, VERSION_##lib##_##version)
+#define compat_symbol_reference_2(local, symbol, name) \
+  symbol_version_reference (local, symbol, name)
 
 # ifdef LINK_OBSOLETE_RPC
 /* Export the symbol for both static and dynamic linking.  */

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog              |   12 ++++++++++++
 include/libc-symbols.h |   19 ++++++++++++++-----
 include/shlib-compat.h |   18 +++++++++++-------
 3 files changed, 37 insertions(+), 12 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]