diff --git a/Makefile.rules b/Makefile.rules
index 76bf0eeff185f8c94a4d9ec8588eef50d772456e..10970cfbc17bceda81f0653ed2858c9fa51ac506 100644
--- a/Makefile.rules
+++ b/Makefile.rules
@@ -49,7 +49,10 @@ CC_CFLAGS=$(PTHREAD_CFLAGS) $(_ASTCFLAGS) $(ASTCFLAGS)
 CXX_CFLAGS=$(PTHREAD_CFLAGS) $(filter-out -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(AST_DECLARATION_AFTER_STATEMENT),$(_ASTCFLAGS) $(ASTCFLAGS))
 
 ifeq ($(GNU_LD),1)
-SO_SUPPRESS_SYMBOLS=-Wl,--version-script,$(if $(wildcard $(subst .so,.exports,$@)),$(subst .so,.exports,$@),$(ASTTOPDIR)/default.exports)
+SO_SUPPRESS_SYMBOLS=-Wl,--version-script,$(if $(wildcard $(subst .so,.exports,$@)),$(subst .so,.exports,$@),$(ASTTOPDIR)/default.exports),--warn-common
+ifneq ($(wildcard $(subst .so,.dynamics,$@)),)
+SO_SUPPRESS_SYMBOLS+=-Wl,--dynamic-list,$(subst .so,.dynamics,$@)
+endif
 endif
 
 CC_LDFLAGS_SO=$(PTHREAD_CFLAGS) $(_ASTLDFLAGS) $(SOLINK) $(SO_SUPPRESS_SYMBOLS) $(ASTLDFLAGS)
diff --git a/main/asterisk.dynamics b/main/asterisk.dynamics
new file mode 100644
index 0000000000000000000000000000000000000000..946007dacb9e4b880583f581c60828b2a8ffc542
--- /dev/null
+++ b/main/asterisk.dynamics
@@ -0,0 +1,6 @@
+{
+	ast_agi_*;
+	ast_pktccops_*;
+	ast_smdi_*;
+	ast_monitor_*;
+};