You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by as...@apache.org on 2019/08/09 15:48:55 UTC

[qpid-proton] branch master updated: PROTON-2075: Amend ABI fix for gcc 4.4.7 - Earlier gcc do not support #pragma GCC diagnostic push/pop But it's not really necessary as we're at the very end of the TU anyway.

This is an automated email from the ASF dual-hosted git repository.

astitcher pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/qpid-proton.git


The following commit(s) were added to refs/heads/master by this push:
     new e4e6f58  PROTON-2075: Amend ABI fix for gcc 4.4.7 - Earlier gcc do not support #pragma GCC diagnostic push/pop   But it's not really necessary as we're at the very end of the TU anyway.
e4e6f58 is described below

commit e4e6f586100ba16ebd83cf1782ac941af03e1584
Author: Andrew Stitcher <as...@apache.org>
AuthorDate: Fri Aug 9 11:46:56 2019 -0400

    PROTON-2075: Amend ABI fix for gcc 4.4.7
    - Earlier gcc do not support #pragma GCC diagnostic push/pop
      But it's not really necessary as we're at the very end of the TU anyway.
---
 cpp/src/ssl_options.cpp | 64 ++++++++++++++++++++++++-------------------------
 1 file changed, 31 insertions(+), 33 deletions(-)

diff --git a/cpp/src/ssl_options.cpp b/cpp/src/ssl_options.cpp
index 27cfb1b..ae5999e 100644
--- a/cpp/src/ssl_options.cpp
+++ b/cpp/src/ssl_options.cpp
@@ -153,6 +153,37 @@ ssl_certificate::ssl_certificate(const std::string &main, const std::string &ext
 // Don't do this on MacOS or with Visual Studio
 #if !defined(_MSC_VER) && !(defined(__APPLE__) && defined(__MACH__))
 
+//
+// These are a bit easier as the entire class has been removed so we can just define the class here
+// They do rely on the impl_ member being effectively the same type and structure location from
+// The previous parent type ssl_domain to ssl_server_options/ssl_client_options.
+//
+// PN_CPP_EXTERN proton::internal::ssl_domain::ssl_domain(const ssl_domain&);
+// PN_CPP_EXTERN proton::internal::ssl_domain::ssl_domain& operator=(const ssl_domain&);
+// PN_CPP_EXTERN proton::internal::ssl_domain::~ssl_domain();
+//
+namespace proton {
+namespace internal {
+class ssl_domain {
+  PN_CPP_EXTERN ssl_domain(const ssl_domain&);
+  PN_CPP_EXTERN ssl_domain& operator=(const ssl_domain&);
+  PN_CPP_EXTERN ~ssl_domain();
+
+  ssl_options_impl* impl_;
+};
+
+ssl_domain::ssl_domain(const ssl_domain& x): impl_(x.impl_) { if (impl_) impl_->incref(); }
+ssl_domain& ssl_domain::operator=(const ssl_domain& x) {
+    if (&x != this) {
+        if (impl_) impl_->decref();
+        impl_ = x.impl_;
+        if (impl_) impl_->incref();
+    }
+    return *this;
+}
+ssl_domain::~ssl_domain() { if (impl_) impl_->decref(); }
+}}
+
 // These are a bit harder because they can't be publicly in the classes anymore so just use alias definitions
 // but that needs the mangled symbol names unfortunately.
 //
@@ -164,7 +195,6 @@ ssl_certificate::ssl_certificate(const std::string &main, const std::string &ext
 //                                                              enum ssl::verify_mode = ssl::VERIFY_PEER_NAME);
 
 extern "C" {
-#pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wpragmas"
 #pragma GCC diagnostic ignored "-Wunknown-warning-option"
 #pragma GCC diagnostic ignored "-Wattribute-alias"
@@ -194,38 +224,6 @@ __attribute__((alias("_ZN6proton18ssl_client_optionsC1ERKNS_15ssl_certificateERK
 PN_CPP_EXTERN void    _ZN6proton18ssl_client_optionsC2ERNS_15ssl_certificateERKSsNS_3ssl11verify_modeE()
 __attribute__((alias("_ZN6proton18ssl_client_optionsC2ERKNS_15ssl_certificateERKSsNS_3ssl11verify_modeE")));
 #endif
-#pragma GCC diagnostic pop
 }
 
-//
-// These are a bit easier as the entire class has been removed so we can just define the class here
-// They do rely on the impl_ member being effectively the same type and structure location from
-// The previous parent type ssl_domain to ssl_server_options/ssl_client_options.
-//
-// PN_CPP_EXTERN proton::internal::ssl_domain::ssl_domain(const ssl_domain&);
-// PN_CPP_EXTERN proton::internal::ssl_domain::ssl_domain& operator=(const ssl_domain&);
-// PN_CPP_EXTERN proton::internal::ssl_domain::~ssl_domain();
-//
-namespace proton {
-namespace internal {
-class ssl_domain {
-  PN_CPP_EXTERN ssl_domain(const ssl_domain&);
-  PN_CPP_EXTERN ssl_domain& operator=(const ssl_domain&);
-  PN_CPP_EXTERN ~ssl_domain();
-
-  ssl_options_impl* impl_;
-};
-
-ssl_domain::ssl_domain(const ssl_domain& x): impl_(x.impl_) { if (impl_) impl_->incref(); }
-ssl_domain& ssl_domain::operator=(const ssl_domain& x) {
-    if (&x != this) {
-        if (impl_) impl_->decref();
-        impl_ = x.impl_;
-        if (impl_) impl_->incref();
-    }
-    return *this;
-}
-ssl_domain::~ssl_domain() { if (impl_) impl_->decref(); }
-}}
-
 #endif


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org