avoid user-level segfault if a process doesn't call exit()

This commit is contained in:
Robert Morris 2022-08-10 06:37:21 -04:00
parent 872fa88e8a
commit 76ad8e974f
2 changed files with 12 additions and 1 deletions

View file

@ -90,7 +90,7 @@ tags: $(OBJS) _init
ULIB = $U/ulib.o $U/usys.o $U/printf.o $U/umalloc.o ULIB = $U/ulib.o $U/usys.o $U/printf.o $U/umalloc.o
_%: %.o $(ULIB) _%: %.o $(ULIB)
$(LD) $(LDFLAGS) -N -e main -Ttext 0 -o $@ $^ $(LD) $(LDFLAGS) -N -e _main -Ttext 0 -o $@ $^
$(OBJDUMP) -S $@ > $*.asm $(OBJDUMP) -S $@ > $*.asm
$(OBJDUMP) -t $@ | sed '1,/SYMBOL TABLE/d; s/ .* / /; /^$$/d' > $*.sym $(OBJDUMP) -t $@ | sed '1,/SYMBOL TABLE/d; s/ .* / /; /^$$/d' > $*.sym

View file

@ -3,6 +3,17 @@
#include "kernel/fcntl.h" #include "kernel/fcntl.h"
#include "user/user.h" #include "user/user.h"
//
// wrapper so that it's OK if main() does not call exit().
//
void
_main()
{
extern int main();
main();
exit(0);
}
char* char*
strcpy(char *s, const char *t) strcpy(char *s, const char *t)
{ {