diff --git a/lib/linux/x86-mes-gcc/crt1.c b/lib/linux/x86-mes-gcc/crt1.c index 7bf73b62..1e9c9791 100644 --- a/lib/linux/x86-mes-gcc/crt1.c +++ b/lib/linux/x86-mes-gcc/crt1.c @@ -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 "" ); diff --git a/lib/linux/x86-mes/crt1.c b/lib/linux/x86-mes/crt1.c index cd5a581a..a46b97ed 100644 --- a/lib/linux/x86-mes/crt1.c +++ b/lib/linux/x86-mes/crt1.c @@ -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"); diff --git a/lib/linux/x86_64-mes-gcc/crt1.c b/lib/linux/x86_64-mes-gcc/crt1.c index 2a5fca57..4693e0f6 100644 --- a/lib/linux/x86_64-mes-gcc/crt1.c +++ b/lib/linux/x86_64-mes-gcc/crt1.c @@ -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 "" );