[Dovecot] [PATCH] dovadm plugins underlinking
    Natanael Copa 
    natanael.copa at gmail.com
       
    Wed Oct 10 13:00:51 EEST 2012
    
    
  
Hi,
Running doveadm on Alpine Linux will show various underlinking errors:
/usr/bin/doveadm: symbol 'acl_user_module': can't resolve symbol in
lib '/usr/lib/dovecot/doveadm/lib10_doveadm_acl_plugin.so'.
/usr/bin/doveadm: symbol 'acl_identifier_parse': can't resolve symbol
in lib '/usr/lib/dovecot/doveadm/lib10_doveadm_acl_plugin.so'.
...
(complete list is found here: http://bugs.alpinelinux.org/issues/1274)
I understand that those are "harmless" (at least as long as you dont
use those plugins), and even if some dynamic linkers are forgiving,
the doveadm plugin modules are technically underlinked.
The lib10_doveadm_acl_plugin.so uses symbol acl_user_module:
$ nm -D /usr/lib/dovecot/doveadm/lib10_doveadm_acl_plugin.so | grep
acl_user_module
                 U acl_user_module
That symbol is defined in lib01_acl_plugin.so:
$ nm -D /usr/lib/dovecot/lib01_acl_plugin.so | grep acl_user_module
000000000020fb80 D acl_user_module
Which means that lib10_doveadm_acl_plugin.so should be directly linked
to lib01_acl_plugin.so. But it is not:
$ readelf -d /usr/lib/dovecot/doveadm/lib10_doveadm_acl_plugin.so | grep NEEDED
 0x0000000000000001 (NEEDED)             Shared library: [librt.so.0.9.32]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.0.9.32]
Below is a patch that should solve it.
---
diff -r 4d268e810c15 src/plugins/acl/Makefile.am
--- a/src/plugins/acl/Makefile.am	Mon Oct 08 08:53:54 2012 +0300
+++ b/src/plugins/acl/Makefile.am	Wed Oct 10 11:03:49 2012 +0200
@@ -10,7 +10,8 @@
 	-I$(top_srcdir)/src/doveadm
 NOPLUGIN_LDFLAGS =
-lib10_doveadm_acl_plugin_la_LDFLAGS = -module -avoid-version
+lib10_doveadm_acl_plugin_la_LDFLAGS = -module -avoid-version
-Wl,-rpath,$(moduledir)
+lib10_doveadm_acl_plugin_la_LIBADD = $(module_LTLIBRARIES)
 lib01_acl_plugin_la_LDFLAGS = -module -avoid-version
 module_LTLIBRARIES = \
diff -r 4d268e810c15 src/plugins/expire/Makefile.am
--- a/src/plugins/expire/Makefile.am	Mon Oct 08 08:53:54 2012 +0300
+++ b/src/plugins/expire/Makefile.am	Wed Oct 10 11:03:49 2012 +0200
@@ -14,7 +14,8 @@
 	-I$(top_srcdir)/src/doveadm
 NOPLUGIN_LDFLAGS =
-lib10_doveadm_expire_plugin_la_LDFLAGS = -module -avoid-version
+lib10_doveadm_expire_plugin_la_LDFLAGS = -module -avoid-version
-Wl,-rpath,$(moduledir)
+lib10_doveadm_expire_plugin_la_LIBADD = $(module_LTLIBRARIES)
 lib20_expire_plugin_la_LDFLAGS = -module -avoid-version
 module_LTLIBRARIES = \
diff -r 4d268e810c15 src/plugins/fts/Makefile.am
--- a/src/plugins/fts/Makefile.am	Mon Oct 08 08:53:54 2012 +0300
+++ b/src/plugins/fts/Makefile.am	Wed Oct 10 11:03:49 2012 +0200
@@ -11,7 +11,8 @@
 	-I$(top_srcdir)/src/doveadm
 NOPLUGIN_LDFLAGS =
-lib20_doveadm_fts_plugin_la_LDFLAGS = -module -avoid-version
+lib20_doveadm_fts_plugin_la_LDFLAGS = -module -avoid-version
-Wl,-rpath,$(moduledir)
+lib20_doveadm_fts_plugin_la_LIBADD = $(module_LTLIBRARIES)
 lib20_fts_plugin_la_LDFLAGS = -module -avoid-version
 module_LTLIBRARIES = \
diff -r 4d268e810c15 src/plugins/quota/Makefile.am
--- a/src/plugins/quota/Makefile.am	Mon Oct 08 08:53:54 2012 +0300
+++ b/src/plugins/quota/Makefile.am	Wed Oct 10 11:03:49 2012 +0200
@@ -11,7 +11,8 @@
 	-I$(top_srcdir)/src/doveadm
 NOPLUGIN_LDFLAGS =
-lib10_doveadm_quota_plugin_la_LDFLAGS = -module -avoid-version
+lib10_doveadm_quota_plugin_la_LDFLAGS = -module -avoid-version
-Wl,-rpath,$(moduledir)
+lib10_doveadm_quota_plugin_la_LIBADD = $(module_LTLIBRARIES)
 lib10_quota_plugin_la_LDFLAGS = -module -avoid-version
 module_LTLIBRARIES = \
diff -r 4d268e810c15 src/plugins/zlib/Makefile.am
--- a/src/plugins/zlib/Makefile.am	Mon Oct 08 08:53:54 2012 +0300
+++ b/src/plugins/zlib/Makefile.am	Wed Oct 10 11:03:49 2012 +0200
@@ -11,7 +11,8 @@
 	-I$(top_srcdir)/src/doveadm
 NOPLUGIN_LDFLAGS =
-lib10_doveadm_zlib_plugin_la_LDFLAGS = -module -avoid-version
+lib10_doveadm_zlib_plugin_la_LDFLAGS = -module -avoid-version
-Wl,-rpath,$(moduledir)
+lib10_doveadm_zlib_plugin_la_LIBADD = $(module_LTLIBRARIES)
 lib20_zlib_plugin_la_LDFLAGS = -module -avoid-version
 module_LTLIBRARIES = \
    
    
More information about the dovecot
mailing list