aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBalint Reczey <balint@balintreczey.hu>2013-03-02 22:11:26 +0000
committerBalint Reczey <balint@balintreczey.hu>2013-03-02 22:11:26 +0000
commit73aafe2bc4db3f0d0d98107d2b2e861f1dcbc543 (patch)
tree42b11dbce47d723876cbadf46e045f52ce70991a
parent5c05c9e0e1fef7699646bd50cfab66b4ff451874 (diff)
downloadwireshark-73aafe2bc4db3f0d0d98107d2b2e861f1dcbc543.tar.gz
wireshark-73aafe2bc4db3f0d0d98107d2b2e861f1dcbc543.tar.bz2
wireshark-73aafe2bc4db3f0d0d98107d2b2e861f1dcbc543.zip
Make Solaris Studio hide internal shared library symbols by default
svn path=/trunk/; revision=48020
-rw-r--r--CMakeLists.txt7
-rw-r--r--configure.ac8
-rw-r--r--ws_symbol_export.h2
3 files changed, 12 insertions, 5 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d00a66be27..3cdce2ad81 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -218,8 +218,13 @@ check_c_compiler_flag(-fvisibility=hidden FVHIDDEN)
if((FVHIDDEN))
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
else() # TODO add alternate compiler flags for hiding symbols
- message(WARNING "Hiding shared library symbols is not supported by the compiler."
+ check_c_compiler_flag(-xldscope=hidden FVHIDDEN)
+ if((FVHIDDEN))
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
+ else()
+ message(WARNING "Hiding shared library symbols is not supported by the compiler."
" All shared library symbols will be exported.")
+ endif()
endif()
if(NOT DISABLE_WERROR AND NOT ENABLE_EXTRA_GCC_CHECKS)
diff --git a/configure.ac b/configure.ac
index 2d8d9f2465..344737308f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -521,10 +521,12 @@ fi
CFLAGS_before_fvhidden=$CFLAGS
AC_WIRESHARK_GCC_CFLAGS_CHECK(-fvisibility=hidden)
-if test "x$CLFAGS" = "x$CFLAGS_before_fvhidden"
-then
+if test "x$CLFAGS" = "x$CFLAGS_before_fvhidden" ; then
+ AC_WIRESHARK_GCC_CFLAGS_CHECK(-xldscope=hidden)
# TODO add other ways of hiding symbols
- AC_MSG_WARN(Compiler will export all symbols from shared libraries)
+ if test "x$CLFAGS" = "x$CFLAGS_before_fvhidden" ; then
+ AC_MSG_WARN(Compiler will export all symbols from shared libraries)
+ fi
fi
AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--as-needed])
diff --git a/ws_symbol_export.h b/ws_symbol_export.h
index ac9b973053..d85efba188 100644
--- a/ws_symbol_export.h
+++ b/ws_symbol_export.h
@@ -24,7 +24,7 @@
#define SYMBOL_EXPORT_H
/* Originally copied from GCC Wiki at http://gcc.gnu.org/wiki/Visibility */
-#if defined _WIN32 || defined __CYGWIN__
+#if defined _WIN32 || defined __CYGWIN__ || defined __SUNPRO_C || defined__SUNPRO_CC
#ifdef WS_BUILD_DLL
#ifdef __GNUC__
#define WS_DLL_PUBLIC __attribute__ ((dllexport))