utils.c (create_subprog_decl): If this is for the 'main' entry point according to...
authorOlivier Hainque <hainque@adacore.com>
Tue, 10 Jun 2008 13:14:15 +0000 (13:14 +0000)
committerOlivier Hainque <hainque@gcc.gnu.org>
Tue, 10 Jun 2008 13:14:15 +0000 (13:14 +0000)
        * utils.c (create_subprog_decl): If this is for the 'main' entry
        point according to the asm name, redirect main_identifier_node.

From-SVN: r136619

gcc/ada/ChangeLog
gcc/ada/utils.c

index 29a20718ee87d7a5cdc361f9ce68e3a508cad199..e41daae22e776b9598afafeab0779fd372321762 100644 (file)
@@ -1,3 +1,8 @@
+2008-06-10  Olivier Hainque  <hainque@adacore.com>
+
+       * utils.c (create_subprog_decl): If this is for the 'main' entry
+       point according to the asm name, redirect main_identifier_node.
+
 2008-06-09  Eric Botcazou  <ebotcazou@adacore.com>
 
        * decl.c (components_to_record): Adjust the packedness for the
index ef49d10b9f1fc33f50a90bebc2eca7f09ac55ffa..d9a0e3aa61805bdbd4571f5709b1b48780ae3ac4 100644 (file)
@@ -1989,7 +1989,18 @@ create_subprog_decl (tree subprog_name, tree asm_name,
     DECL_DECLARED_INLINE_P (subprog_decl) = 1;
 
   if (asm_name)
-    SET_DECL_ASSEMBLER_NAME (subprog_decl, asm_name);
+    {
+      SET_DECL_ASSEMBLER_NAME (subprog_decl, asm_name);
+
+      /* The expand_main_function circuitry expects "main_identifier_node" to
+        designate the DECL_NAME of the 'main' entry point, in turn expected
+        to be declared as the "main" function literally by default.  Ada
+        program entry points are typically declared with a different name
+        within the binder generated file, exported as 'main' to satisfy the
+        system expectations.  Redirect main_identifier_node in this case.  */
+      if (asm_name == main_identifier_node)
+       main_identifier_node = DECL_NAME (subprog_decl);
+    }
 
   process_attributes (subprog_decl, attr_list);