]> git.pld-linux.org Git - packages/mono.git/commitdiff
- added patches from debian fixing some critical issues (ppc mainly) auto/th/mono-1_2_4-2
authorwrobell <wrobell@pld-linux.org>
Wed, 15 Aug 2007 13:50:49 +0000 (13:50 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    mono-console-no-utf8-bom.patch -> 1.1
    mono-fix_delegate_memory_leak_r79001.patch -> 1.1
    mono-g_thread_init.patch -> 1.1
    mono-ppc_fix_memory_corruption_r81413.patch -> 1.1

mono-console-no-utf8-bom.patch [new file with mode: 0644]
mono-fix_delegate_memory_leak_r79001.patch [new file with mode: 0644]
mono-g_thread_init.patch [new file with mode: 0644]
mono-ppc_fix_memory_corruption_r81413.patch [new file with mode: 0644]

diff --git a/mono-console-no-utf8-bom.patch b/mono-console-no-utf8-bom.patch
new file mode 100644 (file)
index 0000000..7d2c9ce
--- /dev/null
@@ -0,0 +1,12 @@
+--- trunk/mcs/class/corlib/System/Console.cs.old       2006-08-29 18:21:12.473936000 +0200
++++ trunk/mcs/class/corlib/System/Console.cs   2006-08-29 18:23:46.607568750 +0200
+@@ -97,8 +97,7 @@
+                               int code_page = 0;
+                               Encoding.InternalCodePage (ref code_page);
+-                              if (code_page != -1 && ((code_page & 0x0fffffff) == 3 // UTF8Encoding.UTF8_CODE_PAGE
+-                                      || ((code_page & 0x10000000) != 0)))
++                              if (code_page == UTF8Encoding.UTF8_CODE_PAGE || ((code_page & 0x10000000) != 0))
+                                       inputEncoding = outputEncoding = Encoding.UTF8Unmarked;
+                               else
+                                       inputEncoding = outputEncoding = Encoding.Default;
diff --git a/mono-fix_delegate_memory_leak_r79001.patch b/mono-fix_delegate_memory_leak_r79001.patch
new file mode 100644 (file)
index 0000000..4680b44
--- /dev/null
@@ -0,0 +1,40 @@
+diff -urNad mono-1.2.4~/mono/metadata/loader.c mono-1.2.4/mono/metadata/loader.c
+--- mono-1.2.4~/mono/metadata/loader.c 2007-04-25 20:48:41.000000000 +0200
++++ mono-1.2.4/mono/metadata/loader.c  2007-07-21 16:02:11.000000000 +0200
+@@ -1551,17 +1551,11 @@
+               g_free ((char*)method->name);
+               if (mw->method.header)
+                       g_free ((char*)mw->method.header->code);
++              g_free (mw->method.header);
+               g_free (mw->method_data);
+-      }
+-
+-      if (method->dynamic && !(method->iflags & METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL) && ((MonoMethodNormal *)method)->header) {
+-              /* FIXME: Ditto */
+-              /* mono_metadata_free_mh (((MonoMethodNormal *)method)->header); */
+-              g_free (((MonoMethodNormal*)method)->header);
+-      }
+-
+-      if (method->dynamic)
++              g_free (method->signature);
+               g_free (method);
++      }
+ }
+ void
+diff -urNad mono-1.2.4~/mono/metadata/marshal.c mono-1.2.4/mono/metadata/marshal.c
+--- mono-1.2.4~/mono/metadata/marshal.c        2007-05-01 00:49:22.000000000 +0200
++++ mono-1.2.4/mono/metadata/marshal.c 2007-07-21 16:02:11.000000000 +0200
+@@ -8765,7 +8765,11 @@
+       /* we copy the signature, so that we can modify it */
+-      csig = signature_dup (method->klass->image, sig);
++      if (this)
++              /* Need to free this later */
++              csig = mono_metadata_signature_dup (sig);
++      else
++              csig = signature_dup (method->klass->image, sig);
+       csig->hasthis = 0;
+       csig->pinvoke = 1;
diff --git a/mono-g_thread_init.patch b/mono-g_thread_init.patch
new file mode 100644 (file)
index 0000000..7892a4b
--- /dev/null
@@ -0,0 +1,13 @@
+--- mono/mono/mini/driver.c    2007/05/24 17:28:21     77922
++++ mono/mono/mini/driver.c    2007/05/27 20:11:48     78018
+@@ -695,6 +695,9 @@
+       setlocale (LC_ALL, "");
++      if (!g_thread_supported ())
++              g_thread_init (NULL);
++
+       if (mono_running_on_valgrind () && getenv ("MONO_VALGRIND_LEAK_CHECK")) {
+               GMemVTable mem_vtable;
+
diff --git a/mono-ppc_fix_memory_corruption_r81413.patch b/mono-ppc_fix_memory_corruption_r81413.patch
new file mode 100644 (file)
index 0000000..1c564c8
--- /dev/null
@@ -0,0 +1,29 @@
+--- mono/mono/mini/mini-ppc.c  (Revision 81412)
++++ mono/mono/mini/mini-ppc.c  (Revision 81413)
+@@ -2560,8 +2560,12 @@
+                       ppc_rlwinm (code, ppc_r11, ppc_r11, 0, 0, 27);
+                       /* use ctr to store the number of words to 0 if needed */
+                       if (ins->flags & MONO_INST_INIT) {
+-                              /* we zero 4 bytes at a time */
+-                              ppc_addi (code, ppc_r0, ins->sreg1, 3);
++                              /* we zero 4 bytes at a time:
++                               * we add 7 instead of 3 so that we set the counter to
++                               * at least 1, otherwise the bdnz instruction will make
++                               * it negative and iterate billions of times.
++                               */
++                              ppc_addi (code, ppc_r0, ins->sreg1, 7);
+                               ppc_srawi (code, ppc_r0, ppc_r0, 2);
+                               ppc_mtctr (code, ppc_r0);
+                       }
+@@ -2571,7 +2575,10 @@
+                       
+                       if (ins->flags & MONO_INST_INIT) {
+                               /* adjust the dest reg by -4 so we can use stwu */
+-                              ppc_addi (code, ins->dreg, ppc_sp, (area_offset - 4));
++                              /* we actually adjust -8 because we let the loop
++                               * run at least once
++                               */
++                              ppc_addi (code, ins->dreg, ppc_sp, (area_offset - 8));
+                               ppc_li (code, ppc_r11, 0);
+                               zero_loop_start = code;
+                               ppc_stwu (code, ppc_r11, 4, ins->dreg);
This page took 0.076079 seconds and 4 git commands to generate.