aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0328-In-libobjc.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0328-In-libobjc.patch')
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0328-In-libobjc.patch81
1 files changed, 81 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0328-In-libobjc.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0328-In-libobjc.patch
new file mode 100644
index 0000000000..7e2287cb3b
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0328-In-libobjc.patch
@@ -0,0 +1,81 @@
+From 30ac84569e48f4807970260f04821bf31f42b66c Mon Sep 17 00:00:00 2001
+From: nicola <nicola@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Wed, 25 May 2011 09:07:57 +0000
+Subject: [PATCH] In libobjc/:
+ 2011-05-25 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ Backport from mainline
+ 2011-05-24 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ PR libobjc/48177
+ * selector.c (__sel_register_typed_name): Use sel_types_match()
+ instead of strcmp() to compare selector types (Suggestion by
+ Richard Frith-Macdonald <rfm@gnu.org>).
+
+In gcc/testsuite/:
+2011-05-25 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ Backport from mainline
+ 2011-05-24 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ PR libobjc/48177
+ * objc.dg/pr48177.m: New testcase.
+
+
+git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174176 138bc75d-0d04-0410-961f-82ee72b054a4
+
+new file mode 100644
+index 0000000..0d7ff29
+--- /dev/null
++++ b/gcc/testsuite/objc.dg/pr48177.m
+@@ -0,0 +1,35 @@
++/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, May 2011. */
++/* { dg-do run } */
++/* { dg-skip-if "No API#2 pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */
++
++#include <objc/runtime.h>
++#include <stdlib.h>
++
++int main(int argc, void **args)
++{
++#ifdef __GNU_LIBOBJC__
++ /* This special test tests that, if you have a selector already
++ registered in the runtime with full type information, you can use
++ sel_registerTypedName() to get it even if you specify the type
++ with incorrect argframe information. This is helpful as
++ selectors generated by the compiler (which have correct argframe
++ information) are usually registered before hand-written ones
++ (which often have incorrect argframe information, but need the
++ correct one).
++
++ Note that in this hand-written test, even the type information of
++ the first selector may be wrong (on this machine); but that's OK
++ as we'll never actually use the selectors. */
++ SEL selector1 = sel_registerTypedName ("testMethod", "i8@0:4");
++ SEL selector2 = sel_registerTypedName ("testMethod", "i8@8:8");
++
++ /* We compare the selectors using ==, not using sel_isEqual(). This
++ is because we are testing internals of the runtime and we know
++ that in the current implementation they should be identical if
++ the stuff is to work as expected. Don't do this at home. */
++ if (selector1 != selector2)
++ abort ();
++#endif
++
++ return 0;
++}
+index 80d2d80..628b4f6 100644
+--- a/libobjc/selector.c
++++ b/libobjc/selector.c
+@@ -597,7 +597,7 @@ __sel_register_typed_name (const char *name, const char *types,
+ return s;
+ }
+ }
+- else if (! strcmp (s->sel_types, types))
++ else if (sel_types_match (s->sel_types, types))
+ {
+ if (orig)
+ {
+--
+1.7.0.4
+