OSDN Git Service

Do no emit GNU metadata if there is nothing to put into it
authornicola <nicola@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 19 Feb 2011 00:12:45 +0000 (00:12 +0000)
committernicola <nicola@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 19 Feb 2011 00:12:45 +0000 (00:12 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@170292 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/objc/ChangeLog
gcc/objc/objc-gnu-runtime-abi-01.c

index 926352e..81fff66 100644 (file)
@@ -1,3 +1,8 @@
+2011-01-19  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * objc-gnu-runtime-abi-01.c (objc_generate_v1_gnu_metadata): Do
+       not generate metadata if there is nothing to put into it.
+
 2011-02-17  Iain Sandoe  <iains@gcc.gnu.org>
 
        * config-lang.in (gtfiles): Updated.
index a13f015..fdf0480 100644 (file)
@@ -2105,11 +2105,23 @@ objc_generate_v1_gnu_metadata (void)
     generate_protocols ();
 
   /* Arrange for ObjC data structures to be initialized at run time.  */
-  generate_objc_symtab_decl ();
-  /* Make sure that the meta-data are identified as being GNU-runtime.  */
-  build_module_descriptor (OBJC_VERSION, 
-                          build_tree_list (objc_meta, meta_base));
-  build_module_initializer_routine ();
+  /* FIXME: Have some more elegant way to determine if we need to
+     generate objc_symtab_decl or not, instead of checking these
+     global symbols.  */
+  if (imp_list || class_names_chain
+      || meth_var_names_chain || meth_var_types_chain || sel_ref_chain
+      || prop_names_attr_chain)
+    generate_objc_symtab_decl ();
+
+  if (imp_list || class_names_chain || objc_static_instances
+      || meth_var_names_chain || meth_var_types_chain || sel_ref_chain)
+    {
+      /* Make sure that the meta-data are identified as being
+        GNU-runtime.  */
+      build_module_descriptor (OBJC_VERSION, 
+                              build_tree_list (objc_meta, meta_base));
+      build_module_initializer_routine ();
+    }
 
   /* Dump the class references.  This forces the appropriate classes
      to be linked into the executable image, preserving unix archive