Remove the #define exit() _exit() hack (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 8 Jun 2017 21:14:49 +0000 (17:14 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 20 Jul 2017 12:19:46 +0000 (08:19 -0400)
commitd4b443e69cc232f92fffb84ba402358e5481dc0a
treec06797900a9dc2ea0b478acf43e86f4126b192ea
parentad7f58d1756d6ecbaad00bcb95b18dc014d146c1
Remove the #define exit() _exit() hack (XCC)

The atexit handlers might do dangerous things that can't be done in vcore
context.  The old note mentioned yielding, which we could work around, but
other handlers can block too. (confirmed by testing).

So we retain the "exit -> _exit" behavior for vcore context, but not for
uthreads.  Importantly, the change is done in glibc, instead of macro
nastiness.  This popped up when someone wanted to call a function pointer
named 'exit.'

Fun tidbit, this hack might have predated threads.  It came in less than a
week after the first pthread scheduler commit.

Rebuild glibc.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
tools/compilers/gcc-glibc/glibc-2.19-existing.patch
user/parlib/include/parlib/vcore.h
user/parlib/signal.c