Use the gcc way of creating shared segments in DLLs. The previous way
only works with MSVC.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4897 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/win/wm_hooks/CMakeLists.txt b/win/wm_hooks/CMakeLists.txt
index 071edaf..02bdb1f 100644
--- a/win/wm_hooks/CMakeLists.txt
+++ b/win/wm_hooks/CMakeLists.txt
@@ -2,7 +2,6 @@
 
 add_library(wm_hooks SHARED
   ../wm_hooks/wm_hooks.cxx
-  ../wm_hooks/wm_hooks.def
   ../wm_hooks/wm_hooks.rc)
 
 # We want the DLL to be named wm_hooks.dll rather than libwm_hooks.dll
diff --git a/win/wm_hooks/wm_hooks.cxx b/win/wm_hooks/wm_hooks.cxx
index 61328af..50a981e 100644
--- a/win/wm_hooks/wm_hooks.cxx
+++ b/win/wm_hooks/wm_hooks.cxx
@@ -25,6 +25,8 @@
 #include <wm_hooks/wm_hooks.h>
 #include <os/os.h>
 
+#define SHARED __attribute__((section ("shared"), shared))
+
 UINT WM_HK_PingThread = RegisterWindowMessage(_T("RFB.WM_Hooks.PingThread"));
 
 UINT WM_HK_WindowChanged = RegisterWindowMessage(_T("RFB.WM_Hooks.WindowChanged"));
@@ -86,20 +88,18 @@
 // -=- Display update hooks
 //
 
-#pragma data_seg(".WM_Hooks_Shared")
-DWORD hook_owner = 0;
-DWORD hook_target = 0;
-HHOOK hook_CallWndProc = 0;
-HHOOK hook_CallWndProcRet = 0;
-HHOOK hook_GetMessage = 0;
-HHOOK hook_DialogMessage = 0;
-BOOL enable_cursor_shape = FALSE;
-HCURSOR cursor = 0;
+DWORD hook_owner SHARED = 0;
+DWORD hook_target SHARED = 0;
+HHOOK hook_CallWndProc SHARED = 0;
+HHOOK hook_CallWndProcRet SHARED = 0;
+HHOOK hook_GetMessage SHARED = 0;
+HHOOK hook_DialogMessage SHARED = 0;
+BOOL enable_cursor_shape SHARED = FALSE;
+HCURSOR cursor SHARED = 0;
 #ifdef _DEBUG
-UINT diagnostic_min=1;
-UINT diagnostic_max=0;
+UINT diagnostic_min SHARED =1;
+UINT diagnostic_max SHARED =0;
 #endif
-#pragma data_seg()
 
 #ifdef _DEBUG
 DLLEXPORT void WM_Hooks_SetDiagnosticRange(UINT min, UINT max) {
@@ -374,14 +374,12 @@
 // -=- User input hooks
 //
 
-#pragma data_seg(".WM_Hooks_Shared")
-HHOOK hook_keyboard = 0;
-HHOOK hook_pointer = 0;
-bool enable_real_ptr = true;
-bool enable_synth_ptr = true;
-bool enable_real_kbd = true;
-bool enable_synth_kbd = true;
-#pragma data_seg()
+HHOOK hook_keyboard SHARED = 0;
+HHOOK hook_pointer SHARED = 0;
+bool enable_real_ptr SHARED = true;
+bool enable_synth_ptr SHARED = true;
+bool enable_real_kbd SHARED = true;
+bool enable_synth_kbd SHARED = true;
 
 #ifdef WH_KEYBOARD_LL
 LRESULT CALLBACK HookKeyboardHook(int nCode, WPARAM wParam, LPARAM lParam) {
diff --git a/win/wm_hooks/wm_hooks.def b/win/wm_hooks/wm_hooks.def
deleted file mode 100644
index a70908a..0000000
--- a/win/wm_hooks/wm_hooks.def
+++ /dev/null
@@ -1,5 +0,0 @@
-LIBRARY      "wm_hooks"
-; DESCRIPTION  'Window Message Hooks Dynamic Link Library'
-
-SECTIONS
-	.WM_Hooks_Shared read write shared