[svn-commits] kpfleming: branch 1.4 r182808 - in /branches/1.4: ./ build_tools/ include/ast...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Tue Mar 17 20:55:26 CDT 2009


Author: kpfleming
Date: Tue Mar 17 20:55:22 2009
New Revision: 182808

URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=182808
Log:
Improve the build system to *properly* remove unnecessary symbols from the runtime global namespace. Along the way, change the prefixes on some internal-only API calls to use a common prefix.

With these changes, for a module to export symbols into the global namespace, it must have *both* the AST_MODFLAG_GLOBAL_SYMBOLS flag and a linker script that allows the linker to leave the symbols exposed in the module's .so file (see res_odbc.exports for an example).


Added:
    branches/1.4/default.exports
      - copied unchanged from r182801, team/kpfleming/symbol-namespace-cleanup/default.exports
    branches/1.4/main/asterisk.exports
      - copied unchanged from r182801, team/kpfleming/symbol-namespace-cleanup/main/asterisk.exports
    branches/1.4/res/res_adsi.exports
      - copied unchanged from r182801, team/kpfleming/symbol-namespace-cleanup/res/res_adsi.exports
    branches/1.4/res/res_agi.exports
      - copied unchanged from r182801, team/kpfleming/symbol-namespace-cleanup/res/res_agi.exports
    branches/1.4/res/res_features.exports
      - copied unchanged from r182801, team/kpfleming/symbol-namespace-cleanup/res/res_features.exports
    branches/1.4/res/res_jabber.exports
      - copied unchanged from r182801, team/kpfleming/symbol-namespace-cleanup/res/res_jabber.exports
    branches/1.4/res/res_monitor.exports
      - copied unchanged from r182801, team/kpfleming/symbol-namespace-cleanup/res/res_monitor.exports
    branches/1.4/res/res_odbc.exports
      - copied unchanged from r182801, team/kpfleming/symbol-namespace-cleanup/res/res_odbc.exports
    branches/1.4/res/res_smdi.exports
      - copied unchanged from r182801, team/kpfleming/symbol-namespace-cleanup/res/res_smdi.exports
    branches/1.4/res/res_speech.exports
      - copied unchanged from r182801, team/kpfleming/symbol-namespace-cleanup/res/res_speech.exports
Removed:
    branches/1.4/build_tools/strip_nonapi
Modified:
    branches/1.4/Makefile.rules
    branches/1.4/include/asterisk/astobj2.h
    branches/1.4/main/Makefile
    branches/1.4/main/astobj2.c
    branches/1.4/makeopts.in
    branches/1.4/res/res_config_odbc.c
    branches/1.4/res/res_config_pgsql.c
    branches/1.4/res/res_crypto.c
    branches/1.4/res/res_indications.c
    branches/1.4/res/res_musiconhold.c
    branches/1.4/res/res_snmp.c

Modified: branches/1.4/Makefile.rules
URL: http://svn.digium.com/svn-view/asterisk/branches/1.4/Makefile.rules?view=diff&rev=182808&r1=182807&r2=182808
==============================================================================
--- branches/1.4/Makefile.rules (original)
+++ branches/1.4/Makefile.rules Tue Mar 17 20:55:22 2009
@@ -51,8 +51,13 @@
 # per-target settings will be applied
 CC_CFLAGS=$(PTHREAD_CFLAGS) $(ASTCFLAGS)
 CXX_CFLAGS=$(PTHREAD_CFLAGS) $(filter-out -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(AST_DECLARATION_AFTER_STATEMENT),$(ASTCFLAGS))
-CC_LDFLAGS_SO=$(PTHREAD_CFLAGS) $(ASTLDFLAGS) $(SOLINK)
-CXX_LDFLAGS_SO=$(PTHREAD_CFLAGS) $(ASTLDFLAGS) $(SOLINK)
+
+ifeq ($(GNU_LD),1)
+SO_SUPPRESS_SYMBOLS=-Wl,--version-script,$(if $(wildcard $(subst .so,.exports,$@)),$(subst .so,.exports,$@),$(ASTTOPDIR)/default.exports)
+endif
+
+CC_LDFLAGS_SO=$(PTHREAD_CFLAGS) $(ASTLDFLAGS) $(SOLINK) $(SO_SUPPRESS_SYMBOLS)
+CXX_LDFLAGS_SO=$(PTHREAD_CFLAGS) $(ASTLDFLAGS) $(SOLINK) $(SO_SUPPRESS_SYMBOLS)
 CC_LIBS=$(PTHREAD_LIBS) $(LIBS)
 CXX_LIBS=$(PTHREAD_LIBS) $(LIBS)
 

Modified: branches/1.4/include/asterisk/astobj2.h
URL: http://svn.digium.com/svn-view/asterisk/branches/1.4/include/asterisk/astobj2.h?view=diff&rev=182808&r1=182807&r2=182808
==============================================================================
--- branches/1.4/include/asterisk/astobj2.h (original)
+++ branches/1.4/include/asterisk/astobj2.h Tue Mar 17 20:55:22 2009
@@ -188,15 +188,15 @@
 #ifndef DEBUG_THREADS
 int ao2_lock(void *a);
 #else
-#define ao2_lock(a) _ao2_lock(a, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a)
-int _ao2_lock(void *a, const char *file, const char *func, int line, const char *var);
+#define ao2_lock(a) __ao2_lock(a, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a)
+int __ao2_lock(void *a, const char *file, const char *func, int line, const char *var);
 #endif
 
 #ifndef DEBUG_THREADS
 int ao2_trylock(void *a);
 #else
-#define ao2_trylock(a) _ao2_trylock(a, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a)
-int _ao2_trylock(void *a, const char *file, const char *func, int line, const char *var);
+#define ao2_trylock(a) __ao2_trylock(a, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a)
+int __ao2_trylock(void *a, const char *file, const char *func, int line, const char *var);
 #endif
 
 /*!
@@ -208,8 +208,8 @@
 #ifndef DEBUG_THREADS
 int ao2_unlock(void *a);
 #else
-#define ao2_unlock(a) _ao2_unlock(a, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a)
-int _ao2_unlock(void *a, const char *file, const char *func, int line, const char *var);
+#define ao2_unlock(a) __ao2_unlock(a, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a)
+int __ao2_unlock(void *a, const char *file, const char *func, int line, const char *var);
 #endif
 
 /*!

Modified: branches/1.4/main/Makefile
URL: http://svn.digium.com/svn-view/asterisk/branches/1.4/main/Makefile?view=diff&rev=182808&r1=182807&r2=182808
==============================================================================
--- branches/1.4/main/Makefile (original)
+++ branches/1.4/main/Makefile Tue Mar 17 20:55:22 2009
@@ -94,6 +94,10 @@
   ASTLINK=
 endif
 
+ifeq ($(GNU_LD),1)
+ASTLINK+=-Wl,--version-script,asterisk.exports
+endif
+
 editline/libedit.a:
 	cd editline && test -f config.h || CFLAGS="$(PTHREAD_CFLAGS) $(subst $(ASTTOPDIR),../../,$(ASTCFLAGS:-Werror=))" LDFLAGS="$(ASTLDFLAGS)" ./configure --build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) --with-ncurses=$(NCURSES_DIR) --with-curses=$(CURSES_DIR) --with-termcap=$(TERMCAP_DIR) --with-tinfo=$(TINFO_DIR)
 	$(MAKE) -C editline libedit.a
@@ -133,20 +137,19 @@
   H323LDLIBS=
 endif
 
-asterisk: $(OBJS) editline/libedit.a db1-ast/libdb1.a $(AST_EMBED_LDSCRIPTS)
+asterisk: $(OBJS) editline/libedit.a db1-ast/libdb1.a $(AST_EMBED_LDSCRIPTS) asterisk.exports
 	@$(ASTTOPDIR)/build_tools/make_build_h > $(ASTTOPDIR)/include/asterisk/build.h.tmp
 	@if cmp -s $(ASTTOPDIR)/include/asterisk/build.h.tmp $(ASTTOPDIR)/include/asterisk/build.h ; then echo ; else \
 		mv $(ASTTOPDIR)/include/asterisk/build.h.tmp $(ASTTOPDIR)/include/asterisk/build.h ; \
 	fi
 	@rm -f $(ASTTOPDIR)/include/asterisk/build.h.tmp
 	@$(CC) -c -o buildinfo.o $(ASTCFLAGS) buildinfo.c
-	$(ECHO_PREFIX) echo "   [LD] $^ -> $@"
+	$(ECHO_PREFIX) echo "   [LD] $(OBJS) editline/libedit.a db1-ast/libdb1.a $(AST_EMBED_LDSCRIPTS) -> $@"
 ifneq ($(findstring chan_h323,$(MENUSELECT_CHANNELS)),)
-	$(CMD_PREFIX) $(CC) $(STATIC_BUILD) -o $@ $(ASTLINK) $(AST_EMBED_LDFLAGS) $(ASTLDFLAGS) $^ buildinfo.o $(AST_LIBS) $(AST_EMBED_LIBS)
+	$(CMD_PREFIX) $(CC) $(STATIC_BUILD) -o $@ $(ASTLINK) $(AST_EMBED_LDFLAGS) $(ASTLDFLAGS) $(OBJS) editline/libedit.a db1-ast/libdb1.a $(AST_EMBED_LDSCRIPTS) buildinfo.o $(AST_LIBS) $(AST_EMBED_LIBS)
 else
-	$(CMD_PREFIX) $(CXX) $(STATIC_BUILD) -o $@ $(ASTLINK) $(AST_EMBED_LDFLAGS) $(ASTLDFLAGS) $(H323LDFLAGS) $^ buildinfo.o $(AST_LIBS) $(AST_EMBED_LIBS) $(H323LDLIBS)
+	$(CMD_PREFIX) $(CXX) $(STATIC_BUILD) -o $@ $(ASTLINK) $(AST_EMBED_LDFLAGS) $(ASTLDFLAGS) $(H323LDFLAGS) $(OBJS) editline/libedit.a db1-ast/libdb1.a $(AST_EMBED_LDSCRIPTS) buildinfo.o $(AST_LIBS) $(AST_EMBED_LIBS) $(H323LDLIBS)
 endif
-	$(CMD_PREFIX) $(ASTTOPDIR)/build_tools/strip_nonapi $@ || rm $@
 
 clean::
 	rm -f asterisk

Modified: branches/1.4/main/astobj2.c
URL: http://svn.digium.com/svn-view/asterisk/branches/1.4/main/astobj2.c?view=diff&rev=182808&r1=182807&r2=182808
==============================================================================
--- branches/1.4/main/astobj2.c (original)
+++ branches/1.4/main/astobj2.c Tue Mar 17 20:55:22 2009
@@ -128,7 +128,7 @@
 #ifndef DEBUG_THREADS
 int ao2_lock(void *user_data)
 #else
-int _ao2_lock(void *user_data, const char *file, const char *func, int line, const char *var)
+int __ao2_lock(void *user_data, const char *file, const char *func, int line, const char *var)
 #endif
 {
 	struct astobj2 *p = INTERNAL_OBJ(user_data);
@@ -150,7 +150,7 @@
 #ifndef DEBUG_THREADS
 int ao2_trylock(void *user_data)
 #else
-int _ao2_trylock(void *user_data, const char *file, const char *func, int line, const char *var)
+int __ao2_trylock(void *user_data, const char *file, const char *func, int line, const char *var)
 #endif
 {
 	struct astobj2 *p = INTERNAL_OBJ(user_data);
@@ -177,7 +177,7 @@
 #ifndef DEBUG_THREADS
 int ao2_unlock(void *user_data)
 #else
-int _ao2_unlock(void *user_data, const char *file, const char *func, int line, const char *var)
+int __ao2_unlock(void *user_data, const char *file, const char *func, int line, const char *var)
 #endif
 {
 	struct astobj2 *p = INTERNAL_OBJ(user_data);

Modified: branches/1.4/makeopts.in
URL: http://svn.digium.com/svn-view/asterisk/branches/1.4/makeopts.in?view=diff&rev=182808&r1=182807&r2=182808
==============================================================================
--- branches/1.4/makeopts.in (original)
+++ branches/1.4/makeopts.in Tue Mar 17 20:55:22 2009
@@ -42,6 +42,8 @@
 
 PTHREAD_CFLAGS=@PTHREAD_CFLAGS@
 PTHREAD_LIBS=@PTHREAD_LIBS@
+
+GNU_LD=@GNU_LD@
 
 prefix = @prefix@
 exec_prefix = @exec_prefix@

Modified: branches/1.4/res/res_config_odbc.c
URL: http://svn.digium.com/svn-view/asterisk/branches/1.4/res/res_config_odbc.c?view=diff&rev=182808&r1=182807&r2=182808
==============================================================================
--- branches/1.4/res/res_config_odbc.c (original)
+++ branches/1.4/res/res_config_odbc.c Tue Mar 17 20:55:22 2009
@@ -558,7 +558,7 @@
 	return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "ODBC Configuration",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "ODBC Configuration",
 		.load = load_module,
 		.unload = unload_module,
 		);

Modified: branches/1.4/res/res_config_pgsql.c
URL: http://svn.digium.com/svn-view/asterisk/branches/1.4/res/res_config_pgsql.c?view=diff&rev=182808&r1=182807&r2=182808
==============================================================================
--- branches/1.4/res/res_config_pgsql.c (original)
+++ branches/1.4/res/res_config_pgsql.c Tue Mar 17 20:55:22 2009
@@ -835,7 +835,7 @@
 }
 
 /* needs usecount semantics defined */
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "PostgreSQL RealTime Configuration Driver",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "PostgreSQL RealTime Configuration Driver",
 		.load = load_module,
 		.unload = unload_module,
 		.reload = reload

Modified: branches/1.4/res/res_crypto.c
URL: http://svn.digium.com/svn-view/asterisk/branches/1.4/res/res_crypto.c?view=diff&rev=182808&r1=182807&r2=182808
==============================================================================
--- branches/1.4/res/res_crypto.c (original)
+++ branches/1.4/res/res_crypto.c Tue Mar 17 20:55:22 2009
@@ -624,7 +624,7 @@
 }
 
 /* needs usecount semantics defined */
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "Cryptographic Digital Signatures",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Cryptographic Digital Signatures",
 		.load = load_module,
 		.unload = unload_module,
 		.reload = reload

Modified: branches/1.4/res/res_indications.c
URL: http://svn.digium.com/svn-view/asterisk/branches/1.4/res/res_indications.c?view=diff&rev=182808&r1=182807&r2=182808
==============================================================================
--- branches/1.4/res/res_indications.c (original)
+++ branches/1.4/res/res_indications.c Tue Mar 17 20:55:22 2009
@@ -399,7 +399,7 @@
 	return ind_load_module();
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "Indications Resource",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Indications Resource",
 		.load = load_module,
 		.unload = unload_module,
 		.reload = reload,

Modified: branches/1.4/res/res_musiconhold.c
URL: http://svn.digium.com/svn-view/asterisk/branches/1.4/res/res_musiconhold.c?view=diff&rev=182808&r1=182807&r2=182808
==============================================================================
--- branches/1.4/res/res_musiconhold.c (original)
+++ branches/1.4/res/res_musiconhold.c Tue Mar 17 20:55:22 2009
@@ -1486,7 +1486,7 @@
 	return res;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "Music On Hold Resource",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Music On Hold Resource",
 	.load = load_module,
 	.unload = unload_module,
 	.reload = reload,

Modified: branches/1.4/res/res_snmp.c
URL: http://svn.digium.com/svn-view/asterisk/branches/1.4/res/res_snmp.c?view=diff&rev=182808&r1=182807&r2=182808
==============================================================================
--- branches/1.4/res/res_snmp.c (original)
+++ branches/1.4/res/res_snmp.c Tue Mar 17 20:55:22 2009
@@ -109,7 +109,7 @@
 	return ((thread != AST_PTHREADT_NULL) ? pthread_join(thread, NULL) : 0);
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "SNMP [Sub]Agent for Asterisk",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "SNMP [Sub]Agent for Asterisk",
 		.load = load_module,
 		.unload = unload_module,
 		);




More information about the svn-commits mailing list