Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1138)

Unified Diff: nss/patches/nspr-static.patch

Issue 3113004: Replace the workaround for bug 40663 by the real fix.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « nss/patches/nspr-attach-as-system-thread.patch ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: nss/patches/nspr-static.patch
===================================================================
--- nss/patches/nspr-static.patch (revision 55475)
+++ nss/patches/nspr-static.patch (working copy)
@@ -1,10 +1,10 @@
Index: mozilla/nsprpub/pr/include/prtypes.h
===================================================================
RCS file: /cvsroot/mozilla/nsprpub/pr/include/prtypes.h,v
-retrieving revision 3.41
-diff -p -u -8 -r3.41 prtypes.h
---- mozilla/nsprpub/pr/include/prtypes.h 6 May 2009 05:40:35 -0000 3.41
-+++ mozilla/nsprpub/pr/include/prtypes.h 15 Jan 2010 01:23:40 -0000
+retrieving revision 3.43
+diff -p -u -8 -r3.43 prtypes.h
+--- mozilla/nsprpub/pr/include/prtypes.h 11 Jun 2010 01:34:54 -0000 3.43
++++ mozilla/nsprpub/pr/include/prtypes.h 10 Aug 2010 01:06:02 -0000
@@ -75,17 +75,33 @@
** Example:
** in dowhim.h
@@ -46,7 +46,7 @@
retrieving revision 3.8
diff -p -u -8 -r3.8 w95dllmain.c
--- mozilla/nsprpub/pr/src/md/windows/w95dllmain.c 25 Apr 2004 15:01:00 -0000 3.8
-+++ mozilla/nsprpub/pr/src/md/windows/w95dllmain.c 15 Jan 2010 01:23:40 -0000
++++ mozilla/nsprpub/pr/src/md/windows/w95dllmain.c 10 Aug 2010 01:06:02 -0000
@@ -30,16 +30,18 @@
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
@@ -80,11 +80,11 @@
Index: mozilla/nsprpub/pr/src/md/windows/w95thred.c
===================================================================
RCS file: /cvsroot/mozilla/nsprpub/pr/src/md/windows/w95thred.c,v
-retrieving revision 3.18
-diff -p -u -8 -r3.18 w95thred.c
---- mozilla/nsprpub/pr/src/md/windows/w95thred.c 4 Feb 2009 23:44:01 -0000 3.18
-+++ mozilla/nsprpub/pr/src/md/windows/w95thred.c 15 Jan 2010 01:23:40 -0000
-@@ -309,8 +309,115 @@ PRThread *thread;
+retrieving revision 3.19
+diff -p -u -8 -r3.19 w95thred.c
+--- mozilla/nsprpub/pr/src/md/windows/w95thred.c 11 Jun 2010 01:34:54 -0000 3.19
++++ mozilla/nsprpub/pr/src/md/windows/w95thred.c 10 Aug 2010 01:06:02 -0000
+@@ -309,8 +309,121 @@ PRThread *thread;
if (NULL == thread) {
thread = _PRI_AttachThread(
@@ -132,17 +132,19 @@
+// This magic is from http://www.codeproject.com/threads/tls.asp
+// and it works for VC++ 7.0 and later.
+
++// Force a reference to _tls_used to make the linker create the TLS directory
++// if it's not already there. (e.g. if __declspec(thread) is not used).
++// Force a reference to p_thread_callback_nspr to prevent whole program
++// optimization from discarding the variable.
+#ifdef _WIN64
+
-+// This makes the linker create the TLS directory if it's not already
-+// there. (e.g. if __declspec(thread) is not used).
+#pragma comment(linker, "/INCLUDE:_tls_used")
++#pragma comment(linker, "/INCLUDE:p_thread_callback_nspr")
+
+#else // _WIN64
+
-+// This makes the linker create the TLS directory if it's not already
-+// there. (e.g. if __declspec(thread) is not used).
+#pragma comment(linker, "/INCLUDE:__tls_used")
++#pragma comment(linker, "/INCLUDE:_p_thread_callback_nspr")
+
+#endif // _WIN64
+
@@ -178,15 +180,19 @@
+// implicitly loaded.
+//
+// See VC\crt\src\tlssup.c for reference.
++
++// The linker must not discard p_thread_callback_nspr. (We force a reference
++// to this variable with a linker /INCLUDE:symbol pragma to ensure that.) If
++// this variable is discarded, the PR_OnThreadExit function will never be
++// called.
+#ifdef _WIN64
+
+// .CRT section is merged with .rdata on x64 so it must be constant data.
+#pragma const_seg(".CRT$XLB")
+// When defining a const variable, it must have external linkage to be sure the
-+// linker doesn't discard it. If this value is discarded, the PR_OnThreadExit
-+// function will never be called.
-+extern const PIMAGE_TLS_CALLBACK p_thread_callback;
-+const PIMAGE_TLS_CALLBACK p_thread_callback = PR_OnThreadExit;
++// linker doesn't discard it.
++extern const PIMAGE_TLS_CALLBACK p_thread_callback_nspr;
++const PIMAGE_TLS_CALLBACK p_thread_callback_nspr = PR_OnThreadExit;
+
+// Reset the default section.
+#pragma const_seg()
@@ -194,7 +200,7 @@
+#else // _WIN64
+
+#pragma data_seg(".CRT$XLB")
-+PIMAGE_TLS_CALLBACK p_thread_callback = PR_OnThreadExit;
++PIMAGE_TLS_CALLBACK p_thread_callback_nspr = PR_OnThreadExit;
+
+// Reset the default section.
+#pragma data_seg()
« no previous file with comments | « nss/patches/nspr-attach-as-system-thread.patch ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698