From ba7431b4fd6c62dd04d252e769e825769accb2a9 Mon Sep 17 00:00:00 2001 From: attilamolnar Date: Fri, 23 Aug 2013 11:13:09 +0200 Subject: [PATCH] Hide all symbols that aren't exported explicitly In addition to reducing the sizes of all binaries this also helps the optimizer --- include/compat.h | 4 ++-- include/hashcomp.h | 4 ++-- include/modules.h | 2 +- include/protocol.h | 2 +- make/template/main.mk | 6 +++++- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/include/compat.h b/include/compat.h index 1cdad06c2..0357f5478 100644 --- a/include/compat.h +++ b/include/compat.h @@ -111,6 +111,6 @@ #else # include # define ENTRYPOINT int main(int argc, char** argv) -# define DllExport -# define CoreExport +# define DllExport __attribute__ ((visibility ("default"))) +# define CoreExport __attribute__ ((visibility ("default"))) #endif diff --git a/include/hashcomp.h b/include/hashcomp.h index 51570978a..ec1cc5764 100644 --- a/include/hashcomp.h +++ b/include/hashcomp.h @@ -118,8 +118,8 @@ namespace irc * This class is used to implement irc::string, a case-insensitive, RFC- * comparing string class. */ - struct irc_char_traits : std::char_traits { - + struct CoreExport irc_char_traits : public std::char_traits + { /** Check if two chars match. * @param c1st First character * @param c2nd Second character diff --git a/include/modules.h b/include/modules.h index e8f0d10fe..d7b46ad48 100644 --- a/include/modules.h +++ b/include/modules.h @@ -1428,7 +1428,7 @@ struct AllModuleList { { \ return new y; \ } \ - extern "C" const char inspircd_src_version[] = VERSION " " REVISION; + extern "C" DllExport const char inspircd_src_version[] = VERSION " " REVISION; #endif #define COMMAND_INIT(c) MODULE_INIT(CommandModule) diff --git a/include/protocol.h b/include/protocol.h index 6af0ed21c..e474dd095 100644 --- a/include/protocol.h +++ b/include/protocol.h @@ -26,7 +26,7 @@ class User; typedef std::vector parameterlist; -class ProtocolInterface +class CoreExport ProtocolInterface { public: class ServerInfo diff --git a/make/template/main.mk b/make/template/main.mk index bdb4d9762..d82e8b27e 100644 --- a/make/template/main.mk +++ b/make/template/main.mk @@ -35,7 +35,7 @@ COMPILER = @COMPILER@ SYSTEM = @SYSTEM@ BUILDPATH = @BUILD_DIR@ SOCKETENGINE = @SOCKETENGINE@ -CORECXXFLAGS = -fPIC -pipe -Iinclude -Wall -Wextra -Wfatal-errors -Wno-unused-parameter -Wshadow +CORECXXFLAGS = -fPIC -fvisibility-inlines-hidden -pipe -Iinclude -Wall -Wextra -Wfatal-errors -Wno-unused-parameter -Wshadow LDLIBS = -lstdc++ CORELDFLAGS = -rdynamic -L. $(LDFLAGS) PICLDFLAGS = -fPIC -shared -rdynamic $(LDFLAGS) @@ -54,6 +54,10 @@ INSTMODE_LIB = 0640 CORECXXFLAGS += -pedantic -Woverloaded-virtual -Wshadow -Wformat=2 -Wmissing-format-attribute @ENDIF +@IFNEQ $(SYSTEM)-$(COMPILER) darwin-gcc + CORECXXFLAGS += -fvisibility=hidden +@ENDIF + @IFNEQ $(SYSTEM) darwin LDLIBS += -pthread @ENDIF -- 2.39.2