[SCM] Socket Wrapper Repository - branch master updated

Andreas Schneider asn at samba.org
Wed Nov 4 15:40:24 UTC 2020


The branch, master has been updated
       via  e0af87f socket_wrapper.c/tests: fall back to pragma init/fini for constructor/destructor if possible
       via  83a4c3c configure: check for pragma init/fini for constructors/destructors
      from  3b6e207 Bump version to 1.2.5

https://git.samba.org/?p=socket_wrapper.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit e0af87fff246887aacab8c94c3cf4dca2a28a94c
Author: Björn Jacke <bjacke at samba.org>
Date:   Fri Oct 30 15:44:53 2020 +0100

    socket_wrapper.c/tests: fall back to pragma init/fini for constructor/destructor if possible
    
    Signed-off-by: Bjoern Jacke <bjacke at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

commit 83a4c3c3c53c6ab171ee786ba7c9f509d73f36fd
Author: Björn Jacke <bjacke at samba.org>
Date:   Fri Oct 30 15:31:42 2020 +0100

    configure: check for pragma init/fini for constructors/destructors
    
    Signed-off-by: Bjoern Jacke <bjacke at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

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

Summary of changes:
 ConfigureChecks.cmake   | 26 ++++++++++++++++++++++++++
 config.h.cmake          |  2 ++
 src/socket_wrapper.c    |  7 +++++++
 tests/thread_deadlock.c |  5 ++++-
 4 files changed, 39 insertions(+), 1 deletion(-)


Changeset truncated at 500 lines:

diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake
index 4a2f55e..3c8e615 100644
--- a/ConfigureChecks.cmake
+++ b/ConfigureChecks.cmake
@@ -216,6 +216,32 @@ int main(void) {
     return 0;
 }" HAVE_DESTRUCTOR_ATTRIBUTE)
 
+check_c_source_compiles("
+#pragma init (test_constructor)
+void test_constructor(void);
+
+void test_constructor(void)
+{
+    return;
+}
+
+int main(void) {
+    return 0;
+}" HAVE_PRAGMA_INIT)
+
+check_c_source_compiles("
+#pragma fini (test_destructor)
+void test_destructor(void);
+
+void test_destructor(void)
+{
+    return;
+}
+
+int main(void) {
+    return 0;
+}" HAVE_PRAGMA_FINI)
+
 check_c_source_compiles("
 #define FALL_THROUGH __attribute__((fallthrough))
 
diff --git a/config.h.cmake b/config.h.cmake
index d3ceb23..38166d2 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -66,6 +66,8 @@
 #cmakedefine HAVE_GCC_THREAD_LOCAL_STORAGE 1
 #cmakedefine HAVE_CONSTRUCTOR_ATTRIBUTE 1
 #cmakedefine HAVE_DESTRUCTOR_ATTRIBUTE 1
+#cmakedefine HAVE_PRAGMA_INIT 1
+#cmakedefine HAVE_PRAGMA_FINI 1
 #cmakedefine HAVE_FALLTHROUGH_ATTRIBUTE 1
 #cmakedefine HAVE_ADDRESS_SANITIZER_ATTRIBUTE 1
 #cmakedefine HAVE_SOCKADDR_STORAGE 1
diff --git a/src/socket_wrapper.c b/src/socket_wrapper.c
index ffdd31a..35d61b5 100644
--- a/src/socket_wrapper.c
+++ b/src/socket_wrapper.c
@@ -334,7 +334,14 @@ static pthread_mutex_t mtu_update_mutex;
 
 bool socket_wrapper_enabled(void);
 
+#if ! defined(HAVE_CONSTRUCTOR_ATTRIBUTE) && defined(HAVE_PRAGMA_INIT)
+/* xlC and other oldschool compilers support (only) this */
+#pragma init (swrap_constructor)
+#endif
 void swrap_constructor(void) CONSTRUCTOR_ATTRIBUTE;
+#if ! defined(HAVE_DESTRUCTOR_ATTRIBUTE) && defined(HAVE_PRAGMA_FINI)
+#pragma fini (swrap_destructor)
+#endif
 void swrap_destructor(void) DESTRUCTOR_ATTRIBUTE;
 
 #ifndef HAVE_GETPROGNAME
diff --git a/tests/thread_deadlock.c b/tests/thread_deadlock.c
index b72367f..6c58af3 100644
--- a/tests/thread_deadlock.c
+++ b/tests/thread_deadlock.c
@@ -43,7 +43,10 @@
 #else
 #define CONSTRUCTOR_ATTRIBUTE
 #endif /* HAVE_CONSTRUCTOR_ATTRIBUTE */
-
+#if ! defined(HAVE_CONSTRUCTOR_ATTRIBUTE) && defined(HAVE_PRAGMA_INIT)
+/* xlC and other oldschool compilers support (only) this */
+#pragma init (thread_deadlock_constructor)
+#endif
 void thread_deadlock_constructor(void) CONSTRUCTOR_ATTRIBUTE;
 
 static void thread_deadlock_prepare(void)


-- 
Socket Wrapper Repository



More information about the samba-cvs mailing list