diff options
author | Rob Landley <rob@landley.net> | 2017-02-04 00:34:31 -0600 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2017-02-04 00:34:31 -0600 |
commit | 938901d7e2738be29b83331fb60a670afc20c602 (patch) | |
tree | 7787456d7ea14cc91c39bc2e039ccfbcafbb1138 /lib | |
parent | cc24b6033a9cdc326006a537bd26c482ec7d7354 (diff) | |
download | toybox-938901d7e2738be29b83331fb60a670afc20c602.tar.gz |
Switch oneit to use xopen_stdio() for -c (oops) and switch XVFORK() to use
__attribute__((returns_twice)) instead of noinline.
Yes LLVM supports it: https://llvm.org/bugs/show_bug.cgi?id=6287
Diffstat (limited to 'lib')
-rw-r--r-- | lib/lib.h | 2 | ||||
-rw-r--r-- | lib/xwrap.c | 2 |
2 files changed, 2 insertions, 2 deletions
@@ -322,7 +322,7 @@ void mode_to_string(mode_t mode, char *buf); char *getbasename(char *name); void names_to_pid(char **names, int (*callback)(pid_t pid, char *name)); -pid_t xvforkwrap(pid_t pid); +pid_t __attribute__((returns_twice)) xvforkwrap(pid_t pid); #define XVFORK() xvforkwrap(vfork()) // Wrapper to make xfuncs() return (via longjmp) instead of exiting. diff --git a/lib/xwrap.c b/lib/xwrap.c index 611bdb52..2e52d6b4 100644 --- a/lib/xwrap.c +++ b/lib/xwrap.c @@ -163,7 +163,7 @@ void xflush(void) // share a stack, so child returning from a function would stomp the return // address parent would need. Solution: make vfork() an argument so processes // diverge before function gets called. -pid_t __attribute__((noinline)) xvforkwrap(pid_t pid) +pid_t __attribute__((returns_twice)) xvforkwrap(pid_t pid) { if (pid == -1) perror_exit("vfork"); |