__mpath_connect() was part of our public ABI. Instead of removing
it completely, define it as a weak alias of the new mpath_connect__().
This way, programs linked against previous versions of libmpathcmd
will continue to work.

This shouldn't interfere with general symbol naming rules, as a weak
symbol won't override a library symbol of the same name.

Signed-off-by: Martin Wilck <mwi...@suse.com>
---
 libmpathcmd/libmpathcmd.version | 12 ++++++++----
 libmpathcmd/mpath_cmd.c         |  3 +++
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/libmpathcmd/libmpathcmd.version b/libmpathcmd/libmpathcmd.version
index a786c25..81bdb2b 100644
--- a/libmpathcmd/libmpathcmd.version
+++ b/libmpathcmd/libmpathcmd.version
@@ -10,16 +10,20 @@
  *
  * See libmultipath.version for general policy about version numbers.
  */
-LIBMPATHCMD_2.0.0 {
+
+LIBMPATHCMD_1.0.0 {
 global:
        mpath_connect;
-       mpath_connect__;
+       __mpath_connect;
        mpath_disconnect;
        mpath_process_cmd;
        mpath_recv_reply;
        mpath_recv_reply_len;
        mpath_recv_reply_data;
        mpath_send_cmd;
-local:
-       *;
 };
+
+LIBMPATHCMD_1.1.0 {
+global:
+       mpath_connect__;
+} LIBMPATHCMD_1.0.0;
diff --git a/libmpathcmd/mpath_cmd.c b/libmpathcmd/mpath_cmd.c
index 1fa036c..a38e8b6 100644
--- a/libmpathcmd/mpath_cmd.c
+++ b/libmpathcmd/mpath_cmd.c
@@ -133,6 +133,9 @@ int mpath_connect__(int nonblocking)
        return fd;
 }
 
+extern int __mpath_connect(int)
+       __attribute__((weak, alias("mpath_connect__")));
+
 /*
  * connect to a unix domain socket
  */
-- 
2.46.0


Reply via email to