From 2fe2e556e8c8c8cb8488096a4e390519e99fca3c Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Sun, 26 Aug 2018 23:39:43 +0200 Subject: [PATCH] mescc: Mes C Library: Support make: Support main with envp. * 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 | 3 ++- lib/linux/x86-mes/crt1.c | 3 ++- lib/linux/x86_64-mes-gcc/crt1.c | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) 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 "" );