$NetBSD: patch-au,v 1.1 2002/03/14 14:54:55 wiz Exp $

--- ../gcc-2.95.2/gcc/crtstuff.c.orig	Tue Feb 27 14:34:52 2001
+++ ../gcc-2.95.2/gcc/crtstuff.c
@@ -181,16 +181,16 @@
 
 /* Stick a call to __do_global_dtors_aux into the .fini section.  */
 
-static void __attribute__ ((__unused__))
-fini_dummy (void)
+asm (FINI_SECTION_ASM_OP);
+void __attribute__ ((__unused__))
+_fini (void)
 {
-  asm (FINI_SECTION_ASM_OP);
   __do_global_dtors_aux ();
 #ifdef FORCE_FINI_SECTION_ALIGN
   FORCE_FINI_SECTION_ALIGN;
 #endif
-  asm (TEXT_SECTION_ASM_OP);
 }
+asm (TEXT_SECTION_ASM_OP);
 
 #ifdef EH_FRAME_SECTION_ASM_OP
 /* Stick a call to __register_frame_info into the .init section.  For some
@@ -205,6 +205,21 @@
     __register_frame_info (__EH_FRAME_BEGIN__, &object);
 }
 
+static void 
+__nop (void) 
+{ 
+  //asm("unimp 0x42");    // We must not call this function ever. If we happen to
+			// do it accidently, use the emergency exit. 
+}
+
+asm (INIT_SECTION_ASM_OP);
+void __attribute__ ((__unused__))
+_init (void)
+{
+  asm (TEXT_SECTION_ASM_OP); 
+  __nop(); 
+}
+
 static void __attribute__ ((__unused__))
 init_dummy (void)
 {
@@ -378,7 +393,6 @@
 #ifdef FORCE_INIT_SECTION_ALIGN
   FORCE_INIT_SECTION_ALIGN;
 #endif
-  asm (TEXT_SECTION_ASM_OP);
 
 /* This is a kludge. The i386 GNU/Linux dynamic linker needs ___brk_addr,
    __environ and atexit (). We have to make sure they are in the .dynsym
@@ -395,6 +409,7 @@
   }
 #endif
 }
+asm (TEXT_SECTION_ASM_OP);
 
 #else  /* OBJECT_FORMAT_ELF */
 
