mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-18 08:06:32 +00:00
🆕 libc新增_start函数,实现main的返回值的捕获
This commit is contained in:
@ -4,6 +4,10 @@ CFLAGS += -I .
|
||||
|
||||
libc_sub_dirs=math sys
|
||||
|
||||
ifeq ($(ARCH), __x86_64__)
|
||||
libc_sub_dirs += sysdeps/x86_64
|
||||
endif
|
||||
|
||||
|
||||
libc: unistd.o fcntl.o malloc.o errno.o printf.o stdlib.o ctype.o string.o dirent.o
|
||||
@list='$(libc_sub_dirs)'; for subdir in $$list; do \
|
||||
|
12
user/libs/libc/sysdeps/x86_64/Makefile
Normal file
12
user/libs/libc/sysdeps/x86_64/Makefile
Normal file
@ -0,0 +1,12 @@
|
||||
|
||||
|
||||
all: start.o
|
||||
|
||||
ifeq ($(ARCH), __x86_64__)
|
||||
start.o:
|
||||
gcc $(CFLAGS) -c elf/start.c -o elf/start.o
|
||||
endif
|
||||
|
||||
clean:
|
||||
|
||||
echo "Done."
|
10
user/libs/libc/sysdeps/x86_64/elf/start.c
Normal file
10
user/libs/libc/sysdeps/x86_64/elf/start.c
Normal file
@ -0,0 +1,10 @@
|
||||
|
||||
extern int main(int, char**);
|
||||
#include<libc/stdio.h>
|
||||
void _start(int argc, char** argv)
|
||||
{
|
||||
printf("before main\n");
|
||||
int retval = main(argc, argv);
|
||||
printf("before exit, code=%d\n", retval);
|
||||
exit(retval);
|
||||
}
|
Reference in New Issue
Block a user