I applied the following patch to backport the fix for libobjc/49883 to GCC 4.6 
so that
it appears in 4.6.2.  This is the clang-related problem that was recently 
discussed.
Again, it's an important fix, but safe, with users (the ObjFW guys) asking for 
it in 4.6.2,
which made total sense, so I backported the fix and committed it to the 4.6 
branch.

Thanks

Index: init.c
===================================================================
--- init.c      (revision 179967)
+++ init.c      (working copy)
@@ -643,6 +643,15 @@
       assert (CLS_ISMETA (class->class_pointer));
       DEBUG_PRINTF (" installing class '%s'\n", class->name);
 
+      /* Workaround for a bug in clang: Clang may set flags other than
+        _CLS_CLASS and _CLS_META even when compiling for the
+        traditional ABI (version 8), confusing our runtime.  Try to
+        wipe these flags out.  */
+      if (CLS_ISCLASS (class))
+       __CLS_INFO (class) = _CLS_CLASS;
+      else
+       __CLS_INFO (class) = _CLS_META;
+
       /* Initialize the subclass list to be NULL.  In some cases it
         isn't and this crashes the program.  */
       class->subclass_list = NULL;
Index: ChangeLog
===================================================================
--- ChangeLog   (revision 179996)
+++ ChangeLog   (working copy)
@@ -1,6 +1,19 @@
 2011-10-14  Nicola Pero  <nicola.p...@meta-innovation.com>
 
        Backport from mainline
+       2011-10-09  Nicola Pero  <nicola.p...@meta-innovation.com>
+
+       PR libobjc/49883
+       * init.c (__objc_exec_class): Work around a bug in clang's code
+       generation.  Clang sets the class->info field to values different
+       from 0x1 or 0x2 (the only allowed values in the traditional GNU
+       Objective-C runtime ABI) to store some additional information, but
+       this breaks backwards compatibility.  Wipe out all the bits in the
+       fields other than the first two upon loading a class.
+
+2011-10-14  Nicola Pero  <nicola.p...@meta-innovation.com>
+
+       Backport from mainline
        2011-08-06  Nicola Pero  <nicola.p...@meta-innovation.com>
 
        PR libobjc/50002

Reply via email to