Reduce size of httpd binary by telling linker to export all symbols from libmain.a, rather than bloating the symbol table with ap_hack_* to do so indirectly. Upstream: https://svn.apache.org/r1861685 (as new default-off configure option) --- httpd-2.4.39/Makefile.in.export +++ httpd-2.4.39/Makefile.in @@ -4,8 +4,15 @@ PROGRAM_NAME = $(progname) PROGRAM_SOURCES = modules.c -PROGRAM_LDADD = buildmark.o $(HTTPD_LDFLAGS) $(PROGRAM_DEPENDENCIES) $(HTTPD_LIBS) $(EXTRA_LIBS) $(AP_LIBS) $(LIBS) +PROGRAM_LDADD = buildmark.o $(HTTPD_LDFLAGS) \ + $(PROGRAM_LDDEPS) \ + $(HTTPD_LIBS) $(EXTRA_LIBS) $(AP_LIBS) $(LIBS) PROGRAM_PRELINK = $(COMPILE) -c $(top_srcdir)/server/buildmark.c +PROGRAM_LDDEPS = \ + $(BUILTIN_LIBS) \ + $(MPM_LIB) \ + -Wl,--whole-archive,server/.libs/libmain.a,--no-whole-archive \ + os/$(OS_DIR)/libos.la PROGRAM_DEPENDENCIES = \ server/libmain.la \ $(BUILTIN_LIBS) \ --- httpd-2.4.39/server/main.c.export +++ httpd-2.4.39/server/main.c @@ -835,17 +835,3 @@ return !OK; } -#ifdef AP_USING_AUTOCONF -/* This ugly little hack pulls any function referenced in exports.c into - * the web server. exports.c is generated during the build, and it - * has all of the APR functions specified by the apr/apr.exports and - * apr-util/aprutil.exports files. - */ -const void *ap_suck_in_APR(void); -const void *ap_suck_in_APR(void) -{ - extern const void *ap_ugly_hack; - - return ap_ugly_hack; -} -#endif --- httpd-2.4.39/server/Makefile.in.export +++ httpd-2.4.39/server/Makefile.in @@ -12,7 +12,7 @@ connection.c listen.c util_mutex.c \ mpm_common.c mpm_unix.c mpm_fdqueue.c \ util_charset.c util_cookies.c util_debug.c util_xml.c \ - util_filter.c util_pcre.c util_regex.c exports.c \ + util_filter.c util_pcre.c util_regex.c \ scoreboard.c error_bucket.c protocol.c core.c request.c provider.c \ eoc_bucket.c eor_bucket.c core_filters.c \ util_expr_parse.c util_expr_scan.c util_expr_eval.c