Selaa lähdekoodia

Changes needed for MIPS with regards to the .init and .fini sections.

"Steven J. Hill" 22 vuotta sitten
vanhempi
commit
b91b4d00d0
2 muutettua tiedostoa jossa 9 lisäystä ja 8 poistoa
  1. 9 4
      extra/scripts/initfini.pl
  2. 0 4
      libc/sysdeps/linux/common/initfini.c

+ 9 - 4
extra/scripts/initfini.pl

@@ -31,19 +31,20 @@ if ($initfini) {
 } else {
     die "(fatal) Please give me an --initfini argument$!";
 }
-while($line = <INITFINI>) {
-    if ($line =~ /^\w\.endp/) {
+while(<INITFINI>) {
+    if (/\.endp/) {
 	$endp=1;
 	next;
     }
-    if ($line =~ /^\w\.end/) {
+    if (/\.end/) {
 	$end=1;
 	next;
     }
-    if ($line =~ /\w\.align\(.*\)/) {
+    if (/\.align(.*)/) {
 	$alignval=$1;
 	next;
     }
+
 }
 close(INITFINI);
 
@@ -79,8 +80,12 @@ while(<INITFINI>) {
     }
     if (/PROLOG_BEGINS/) {
 	$omitcrti = 0;
+	$omitcrtn = 0;
 	next;
     }
+    if (/^_init:/ || /^_fini:/) {
+	$omitcrtn = 1;
+    }
     if (/PROLOG_PAUSES/) {
 	$omitcrti = 1;
 	next;

+ 0 - 4
libc/sysdeps/linux/common/initfini.c

@@ -101,9 +101,7 @@ _init (void)
   /* Now the epilog. */
   asm ("\n/*@_init_PROLOG_ENDS*/");
   asm ("\n/*@_init_EPILOG_BEGINS*/");
-  SECTION(".init");
 }
-asm ("END_INIT");
 
 /* End of the _init epilog, beginning of the _fini prolog. */
 asm ("\n/*@_init_EPILOG_ENDS*/");
@@ -130,9 +128,7 @@ _fini (void)
 
   /* Beginning of the _fini epilog. */
   asm ("\n/*@_fini_EPILOG_BEGINS*/");
-  SECTION (".fini");
 }
-asm ("END_FINI");
 
 /* End of the _fini epilog.  Any further generated assembly (e.g. .ident)
    is shared between both crt files. */