diff options
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.patch | 81 |
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 000000000..7e2287cb3 --- /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 + |