mescc: Mes C Library: Support make: Support main with envp.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sun, 26 Aug 2018 21:39:43 +0000 (23:39 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sun, 26 Aug 2018 21:39:43 +0000 (23:39 +0200)
* lib/linux/x86-mes-gcc/crt1.c (_start): Also push envp.
* lib/linux/x86-mes/crt1.c (_start): Also push envp.
* lib/linux/x86_64-mes-gcc/crt1.c (_start): Also mov environment,%rdx.

lib/linux/x86-mes-gcc/crt1.c
lib/linux/x86-mes/crt1.c
lib/linux/x86_64-mes-gcc/crt1.c

index 7bf73b6286d2e35e2e0e35559a067fc0dba80522..1e9c97915ecb15607ebb40225356bed68434362c 100644 (file)
@@ -19,7 +19,7 @@
  */
 
 char **environ = 0;
-int main (int argc, char *argv[]);
+int main (int argc, char *argv[], char *envp[]);
 
 void
 _start ()
@@ -32,6 +32,7 @@ _start ()
        "shl     $2,%%eax\n\t"
        "add     %%ebp,%%eax\n\t"
        "mov     %%eax,%0\n\t"
+       "push    %%eax\n\t"
        : "=r" (environ)
        : //no inputs ""
        );
index cd5a581a3ebdc2e258d16c6c52f5d6c8cd601139..a46b97ed4eb0cb84b374ebd551fa22528b90169d 100644 (file)
@@ -19,7 +19,7 @@
  */
 
 char **environ = 0;
-int main (int argc, char *argv[]);
+int main (int argc, char *argv[], char *envp[]);
 
 int
 _start ()
@@ -33,6 +33,7 @@ _start ()
   asm ("shl____$i8,%eax !0x02");
   asm ("add____%ebp,%eax");
   asm ("mov____%eax,0x32 &environ");
+  asm ("push___%eax");
 
   asm ("mov____%ebp,%eax");
   asm ("add____$i8,%eax !8");
index 2a5fca57a2849b45f1b42b529039836cfef88f78..4693e0f68c07debe83ebae2f1fb512c3fbf57c2a 100644 (file)
@@ -35,6 +35,7 @@ _start ()
        "shl     $3,%%rax\n\t"
        "add     %%rbp,%%rax\n\t"
        "mov     %%rax,%0\n\t"
+       "mov     %%rax,%%rdx\n\t"
        : "=r" (environ)
        : //no inputs ""
        );