build: Improve --with-system-libc support.
authorJan Nieuwenhuizen <janneke@gnu.org>
Tue, 25 Jun 2019 17:05:58 +0000 (19:05 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Tue, 25 Jun 2019 17:05:58 +0000 (19:05 +0200)
* build-aux/build-lib.sh: Avoid building libc for --with-system-libc.
Make libmes richer.
build-aux/check-mescc.sh: Enable 50-malloc test.
* include/dirstream.h: Use HAVE_DIRSTREAM_H to cater for non-existing
dirstream.h.
* include/grp.h[SYSTEM_LIBC]: Typo.
* include/mes/lib.h (__brk, __call_at_exit)[SYSTEM_LIBC]: Declare.
* include/stdlib.h (comparison_fn_t)[SYSTEM_LIBC]: Declare.
* include/time.h (mktime): Return time_t.
* lib/posix/isatty.c [SYSTEM_LIBC]: Do not (re)declare termios.
* lib/stub/mktime.c (mktime): Return time_t.
* lib/tests/scaffold/41-ternary.c (main): Remove assumption that
locals are initialized.
* lib/tests/scaffold/70-stdarg.c: Cater for SYSTEM_LIBC.
* lib/tests/setjmp/80-setjmp.c: Declare jmp buf.
* lib/*/*.c: Add missing mes/lib.h, errno.h includes.

44 files changed:
build-aux/build-lib.sh
build-aux/check-mescc.sh
build-aux/test-c.sh
include/dirstream.h
include/grp.h
include/mes/lib.h
include/stdlib.h
include/time.h
lib/dirent/__getdirentries.c
lib/dirent/opendir.c
lib/posix/isatty.c
lib/stdio/clearerr.c
lib/stdio/fprintf.c
lib/stdio/perror.c
lib/stdio/printf.c
lib/stdio/snprintf.c
lib/stdio/sprintf.c
lib/stdio/sscanf.c
lib/stdio/vprintf.c
lib/stub/chown.c
lib/stub/ctime.c
lib/stub/fpurge.c
lib/stub/freadahead.c
lib/stub/fscanf.c
lib/stub/getlogin.c
lib/stub/getpwnam.c
lib/stub/getpwuid.c
lib/stub/gmtime.c
lib/stub/localtime.c
lib/stub/pclose.c
lib/stub/popen.c
lib/stub/rand.c
lib/stub/rewind.c
lib/stub/setbuf.c
lib/stub/sigsetmask.c
lib/stub/sys_siglist.c
lib/stub/system.c
lib/stub/ttyname.c
lib/stub/umask.c
lib/stub/utime.c
lib/tests/io/90-stat.c
lib/tests/scaffold/41-ternary.c
lib/tests/scaffold/70-stdarg.c
lib/tests/setjmp/80-setjmp.c

index 073842ed2ffc3fd0fd43cb21b859cf03050cba28..bf498547f9a6b183c3a4d3a58df6088f27858520 100755 (executable)
@@ -52,6 +52,8 @@ fi
 
 libmes_SOURCES="
 $libc_mini_SOURCES
+lib/ctype/isnumber.c
+lib/mes/abtol.c
 lib/mes/itoa.c
 lib/mes/ltoa.c
 lib/mes/ltoab.c
@@ -70,12 +72,13 @@ lib/mes/oputc.c
 if test $mes_libc = mes; then
     libmes_SOURCES="$libmes_SOURCES
 lib/stdlib/atoi.c
-lib/mes/abtol.c
 lib/ctype/isdigit.c
-lib/ctype/isnumber.c
 lib/ctype/isspace.c
 lib/ctype/isxdigit.c
 "
+else
+    libmes_SOURCES="$libmes_SOURCES
+"
 fi
 
 libc_SOURCES="
@@ -184,55 +187,7 @@ lib/stub/ldexp.c
 lib/stub/mprotect.c
 lib/stub/localtime.c
 lib/stub/sigemptyset.c
-lib/ctype/islower.c
-lib/ctype/isupper.c
-lib/ctype/tolower.c
-lib/ctype/toupper.c
-lib/mes/search-path.c
-lib/posix/execvp.c
-lib/stdio/fclose.c
-lib/stdio/fdopen.c
-lib/stdio/ferror.c
-lib/stdio/fflush.c
-lib/stdio/fopen.c
-lib/stdio/fprintf.c
-lib/stdio/fread.c
-lib/stdio/fseek.c
-lib/stdio/ftell.c
-lib/stdio/fwrite.c
-lib/stdio/printf.c
-lib/stdio/remove.c
-lib/stdio/snprintf.c
-lib/stdio/sprintf.c
-lib/stdio/sscanf.c
-lib/stdio/vfprintf.c
-lib/stdio/vprintf.c
-lib/stdio/vsnprintf.c
-lib/stdio/vsprintf.c
-lib/stdio/vsscanf.c
-lib/stdlib/calloc.c
-lib/stdlib/qsort.c
-lib/stdlib/strtof.c
-lib/stdlib/strtol.c
-lib/stdlib/strtold.c
-lib/stdlib/strtoll.c
-lib/stdlib/strtoul.c
-lib/stdlib/strtoull.c
-lib/string/memmem.c
-lib/string/memmove.c
-lib/string/strcat.c
-lib/string/strchr.c
-lib/string/strlwr.c
-lib/string/strncpy.c
-lib/string/strrchr.c
-lib/string/strstr.c
-lib/string/strupr.c
-lib/stub/sigaction.c
-lib/stub/ldexp.c
-lib/stub/mprotect.c
-lib/stub/localtime.c
-lib/stub/sigemptyset.c
-xslib/stub/strtod.c
+lib/stub/strtod.c
 lib/$mes_cpu-mes-$compiler/setjmp.c
 "
 
@@ -367,10 +322,12 @@ if test -e libmes.s; then
     cp libmes.s $mes_cpu-mes
 fi
 
-archive libc.a $libc_SOURCES
-cp libc.a $mes_cpu-mes
-if test -e libc.s; then
-    cp libc.S $mes_cpu-mes
+if test $mes_libc = mes; then
+    archive libc.a $libc_SOURCES
+    cp libc.a $mes_cpu-mes
+    if test -e libc.s; then
+        cp libc.s $mes_cpu-mes
+    fi
 fi
 
 archive libc+tcc.a $libc_tcc_SOURCES
index f13d4047d68e75440b219d05030b345479803ae9..0e3288324cf77416221620f7f8b910ff28bf7f65 100755 (executable)
@@ -101,6 +101,7 @@ lib/tests/scaffold/48-global-static.c
 lib/tests/assert/50-assert.c
 lib/tests/mes/50-itoa.c
 lib/tests/posix/50-getenv.c
+lib/tests/stdlib/50-malloc.c
 lib/tests/string/50-strcmp.c
 lib/tests/string/50-strcpy.c
 lib/tests/string/50-strncmp.c
index 1ca2d1debb6f8c5bbf8215c8851ff3dbb52e9d68..5f7e1dff0a407ccf6231363997a7f5e90412b207 100755 (executable)
@@ -50,7 +50,7 @@ fi
 
 if test $mes_libc = system; then
     crt1=
-    LIBS=-lmes
+    LIBS='-l mes'
 else
     crt1=crt1.o
 fi
index e67df35d80bd95f503c9da8453b56d3bbcbfb1f8..f648b96c0beb2c9527ce7ad94477e80a74785b54 100644 (file)
@@ -22,7 +22,7 @@
 #ifndef __MES_DIRSTREAM_H
 #define __MES_DIRSTREAM_H 1
 
-#if SYSTEM_LIBC
+#if SYSTEM_LIBC && HAVE_DIRSTREAM_H
 #ifndef _GNU_SOURCE
 #define _GNU_SOURCE
 #endif
index f77a5e45c1d32189c89fd81b16dc09705b2f2606..a67e522727e1b6b053763ebbba5d98ba9c546b40 100644 (file)
@@ -22,7 +22,7 @@
 
 #if SYSTEM_LIBC
 #undef __MES_GRP_H
-#include_next <pwd.h>
+#include_next <grp.h>
 #else // ! SYSTEM_LIBC
 
 #include <sys/types.h>
index dc4c0d2d8013d937728e043db62fffc0e45f4024..4af3da006e2fc166a36083e9f9d23c336e97acdf 100644 (file)
@@ -41,6 +41,7 @@ char * fdgets (char *s, int count, int fd);
 int fdputc (int c, int fd);
 int fdputs (char const *s, int fd);
 int fdungetc (int c, int fd);
+int isnumber (int c, int base);
 int mes_open (char const *file_name, int flags, int mask);
 int _open2 (char const *file_name, int flags);
 int _open3 (char const *file_name, int flags, int mask);
@@ -48,10 +49,10 @@ int oputc (int c);
 int oputs (char const *s);
 char *search_path (char const *file_name);
 
-#if !SYSTEM_LIBC
-
 extern char *__brk;
 extern void (*__call_at_exit) (void);
+
+#if !SYSTEM_LIBC
 void __assert_fail (char *s);
 void _exit (int code);
 long brk (void *addr);
index fbc06660c1d176b9220516b815fe37b1e446263d..391d04463344cff2cb6068cf020db8bc74498786 100644 (file)
 #ifndef __MES_STDLIB_H
 #define __MES_STDLIB_H 1
 
+#ifndef __MES_COMPARISON_FN_T
+#define __MES_COMPARISON_FN_T
+typedef int (*comparison_fn_t) (void const *, void const *);
+#endif
+
 #if SYSTEM_LIBC
 #ifndef _GNU_SOURCE
 #define _GNU_SOURCE
@@ -56,11 +61,6 @@ unsigned long long strtoull (char const *string, char **tailptr, int base);
 #define EXIT_FAILURE 1
 #define EXIT_SUCCESS 0
 
-#ifndef __MES_COMPARISON_FN_T
-#define __MES_COMPARISON_FN_T
-typedef int (*comparison_fn_t) (void const *, void const *);
-#endif
-
 void *bsearch (void const *key, void const *array, size_t count, size_t size, comparison_fn_t compare);
 
 #endif // ! SYSTEM_LIBC
index ca3d9ff8dad16dc1ea0221f5152c85cc7fdfa9f2..dc05b69f87c484a0a8ec027c1b1c5af069aeffb8 100644 (file)
@@ -59,6 +59,7 @@ struct timespec
 int clock_gettime (clockid_t clk_id, struct timespec *tp);
 struct tm *localtime (time_t const *timep);
 struct tm *gmtime (time_t const *time);
+int nanosleep (struct timespec const *requested_time, struct timespec const *remaining);
 time_t time (time_t * tloc);
 
 #endif // ! SYSTEM_LIBC
index 0c5d9250e363e3be251d476a311a5f0090f344b4..16be95d4c040bba88ac3239960a557d42e7da493 100644 (file)
@@ -21,6 +21,7 @@
 
 // Taken from GNU C Library 1.06.4
 
+#include <mes/lib.h>
 #include <dirent.h>
 #include <stdio.h>
 #include <unistd.h>
index 25b77e3d1bc2d0b659143c0d2e6512e61b43bc13..f0916056fcf8e0d0eef2d393011faa2cbdeeb537 100644 (file)
@@ -21,6 +21,7 @@
 
 // Taken from GNU C Library 2.2.5
 
+#include <mes/lib.h>
 #include <errno.h>
 #include <limits.h>
 #include <stddef.h>
index 85c8409701fc2ef1a0b50d415e2b34be2dd349ca..db2319ec30607d22bf248604c3e401c45359c748 100644 (file)
@@ -24,6 +24,7 @@
 #include <string.h>
 #include <termio.h>
 
+#if !SYSTEM_LIBC
 typedef unsigned char cc_t;
 typedef unsigned int speed_t;
 typedef unsigned int tcflag_t;
@@ -39,6 +40,7 @@ struct termios
   cc_t c_line;
   cc_t c_cc[NCCS];
 };
+#endif
 
 struct ktermios
 {
index 4c0729e9632364f4bf705decb7e4df54e943df15..f43ec7122bf000723758773c55e3b4fb0959146d 100644 (file)
@@ -18,6 +18,8 @@
  * along with GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <mes/lib.h>
+#include <errno.h>
 #include <stdio.h>
 
 void
index c1ec5ceb204d08b4db8c8707e8d0b457b6e5b00d..7e4a904a07780c159088ff0f0c8fa4b7f573fa52 100644 (file)
@@ -18,6 +18,7 @@
  * along with GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <mes/lib.h>
 #include <stdarg.h>
 #include <stdio.h>
 
index 21f0f1e4b666c67cca8c0af8964c4442eb14b70a..3db9bb2b98a4efb347ca17e5cc465ff5ea6a48ff 100644 (file)
@@ -18,6 +18,7 @@
  * along with GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <mes/lib.h>
 #include <errno.h>
 #include <stdio.h>
 #include <string.h>
index 879c9a644559b708af1d9f3957c4d7a074ef6757..dd903479de9155fe825c0f988864d0006327e70c 100644 (file)
@@ -18,6 +18,7 @@
  * along with GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <mes/lib.h>
 #include <stdarg.h>
 #include <stdio.h>
 
@@ -26,7 +27,7 @@ printf (char const *format, ...)
 {
   va_list ap;
   int r;
-#if __GNUC__ && __x86_64__
+#if __GNUC__ && __x86_64__ && !SYSTEM_LIBC
 #define __FUNCTION_ARGS 1
   ap += (__FOO_VARARGS + (__FUNCTION_ARGS << 1)) << 3;
 #undef __FUNCTION_ARGS
index f62da34194b591a7e19f1371e45690556f0d028b..b0c2bd5eb67af348e31a28c4b313f953fe041a0f 100644 (file)
@@ -18,6 +18,7 @@
  * along with GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <mes/lib.h>
 #include <stdarg.h>
 #include <stdio.h>
 
@@ -26,7 +27,7 @@ snprintf (char *str, size_t size, char const *format, ...)
 {
   va_list ap;
   int r;
-#if __GNUC__ && __x86_64__
+#if __GNUC__ && __x86_64__ && !SYSTEM_LIBC
 #define __FUNCTION_ARGS 3
   ap += (__FOO_VARARGS + (__FUNCTION_ARGS << 1)) << 3;
 #undef __FUNCTION_ARGS
index 6c130b15fa47eb1c186d62ed0f092bf911caf7bd..38147d8bab62ea88817f641796c43663c5e93d06 100644 (file)
@@ -18,6 +18,7 @@
  * along with GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <mes/lib.h>
 #include <stdarg.h>
 #include <stdio.h>
 
@@ -26,7 +27,7 @@ sprintf (char *str, char const *format, ...)
 {
   va_list ap;
   int r;
-#if __GNUC__ && __x86_64__
+#if __GNUC__ && __x86_64__ && !SYSTEM_LIBC
 #define __FUNCTION_ARGS 2
   ap += (__FOO_VARARGS + (__FUNCTION_ARGS << 1)) << 3;
 #undef __FUNCTION_ARGS
index cf3714ce9e83d91be7ef37301d30dd34b7bb559d..0d1ed682e594ce635262093399acba3a2e1d72a6 100644 (file)
@@ -18,6 +18,7 @@
  * along with GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <mes/lib.h>
 #include <stdarg.h>
 #include <stdio.h>
 
index ff9459431453c1af7a2751fab4f52a69de3bf89b..7b0160d650e25b59fd0ff4447f2ee16f836256fb 100644 (file)
@@ -18,6 +18,7 @@
  * along with GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <mes/lib.h>
 #include <stdarg.h>
 #include <stdio.h>
 
index 3fc5e4c47c775641a07bec24d28da6c0712efe3e..d04001fac332274e11054544fd5a08ed79145bee 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <mes/lib.h>
+#include <errno.h>
 #include <unistd.h>
 
 int
index 859fc36cc973c84382e9a6776870edefb7f122ce..6b762edfa04f667df73db36f6144b51df61cb84e 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <mes/lib.h>
+#include <errno.h>
 #include <time.h>
 
 int
index 0b883a25df3c60c5e540e493964f0e9dab7003db..fb4782d7d2498a6dd5925ea8dd4712c2142f6d36 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <mes/lib.h>
+#include <errno.h>
 #include <stdio.h>
 
 int
index 0364f2e1241a73bc54e1d46cbbae82ceff5ff19c..a79acb11dea2a8dab39b0ca6f9791693aa0cec6a 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <mes/lib.h>
+#include <errno.h>
 #include <stdio.h>
 
 size_t
index c6497483de44f26911fc620eebb417e087303d9e..0973adc443899e575f715bb21869899e44659ac2 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <mes/lib.h>
+#include <errno.h>
 #include <unistd.h>
 
 int
index 5420f320d33511b6548a1afbdc37d3defdd8fc23..602fcb03f9dfaa4f693b3e5041520f0dde4641cd 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <mes/lib.h>
+#include <errno.h>
 #include <unistd.h>
 
 char *
index c37d895f056160023e5168f43877dd13ed7d56e4..2820251d71aa979d904f41f5361b80d1e10dc0aa 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <mes/lib.h>
+#include <errno.h>
 #include <pwd.h>
 
 struct passwd *
index 4081ffa30cc560a428fa192019f39bb6aaa13513..aa1b86172cf649901be1d0c45671d65740cdf387 100644 (file)
  */
 
 #include <mes/lib.h>
+#include <errno.h>
 #include <pwd.h>
 
 struct passwd *
-getpwuid ()
+getpwuid (uid_t uid)
 {
   static int stub = 0;
   if (__mes_debug () && !stub)
index c1b262b92754422b2eec06c21fe6363a7160d12c..17c49f260fa951ef6407b89602f95e203e1155c1 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <mes/lib.h>
+#include <errno.h>
 #include <time.h>
 #include <sys/time.h>
 
index 308ef4000dc063aa198e792bc19348792815fec0..3b060cc24a1a9768ee36dca47f68a38827f24d10 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <mes/lib.h>
+#include <errno.h>
 #include <time.h>
 #include <sys/time.h>
 
index 88806f6b08ba1894a565f7909a01015747b2013f..14f15bdd67a3111010ee00460b5f56f76a29cd04 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <mes/lib.h>
+#include <errno.h>
 
 int
 pclose (int x)
index ee4cf63d8de4b0e12aba44db91b6002c6765f924..77fd5f95f6f104ec09b2bb4a1e9002f0a74053a3 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <mes/lib.h>
+#include <errno.h>
 
 int
 popen (int x)
index 21365edb7cd7e60e8840a9b2de1204106cc7b61b..cee6b59901a4719f64a3b680a3c89d0e266ca9bb 100644 (file)
@@ -19,7 +19,7 @@
  */
 
 #include <mes/lib.h>
-#include <pwd.h>
+#include <errno.h>
 
 int
 rand (void)
index b00275511a34aeeb0acbefd8b3677e4e3e790a7f..db4000fdfc4d7a368c8038c2860b779d446797de 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <mes/lib.h>
+#include <errno.h>
 
 int
 rewind (int x)
index b0d3e4bc54200649f6f68734e7bb8950023ba1dc..b038600abbd147115e1c52eb546347586d3ab78e 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <mes/lib.h>
+#include <errno.h>
 
 int
 setbuf (int x)
index f455ce061a7ec963b63e61e967c89d1a02322895..bded297c30e3cab8be7606608de657bfecdfb0a0 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <mes/lib.h>
+#include <errno.h>
 
 int
 sigsetmask (int x)
index 97411002d1e77cec9e2a3276bd1baeeb31ef6418..885854fff095499c928b9fd822ef5e95c1b325e6 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <mes/lib.h>
+#include <errno.h>
 
 int
 sys_siglist (int x)
index 8cfdd1deac7f08a42d6a52fa60da9effc7c8d958..49663fb08d81d2548ca6a4a36cf9a2463d75f897 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <mes/lib.h>
+#include <errno.h>
 
 int
 system (int x)
index 018dbd2b7cc9cd261423d9c6bfad44bcdc83a824..95e2ff95cb6ce256ba7483617d816e6ffdc3cbf2 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <mes/lib.h>
+#include <errno.h>
 #include <unistd.h>
 
 char *
index ca2e2ec987b17685d87d3530b08205467bb001f3..1544c0899f15ef3613a035d21716ac16073a84ff 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <mes/lib.h>
+#include <errno.h>
 
 int
 umask (int x)
index 06c8a67aeecbd3d7ff0d6d9ae3f96b2b4090a776..4306b97c36299847e7428d71960eef49885a2e27 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <mes/lib.h>
+#include <errno.h>
 
 int
 utime (int x)
index 4182084246cef9f50d9a664db1e22a6fc50cc8a8..530319006090e641d3440aa2d5854ae40de621eb 100644 (file)
@@ -18,6 +18,7 @@
  * along with GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <mes/lib.h>
 #include <errno.h>
 #include <stdio.h>
 #include <string.h>
index 9105357013dc494c7b9760152111533230a3e446..a5a0cb861834a7d8cd0a6ed472005d13caf1128d 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-comment-start: "//";comment-end:""-*-
  * GNU Mes --- Maxwell Equations of Software
- * Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+ * Copyright © 2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
  *
  * This file is part of GNU Mes.
  *
@@ -23,7 +23,7 @@
 int
 main ()
 {
-  int f;
+  int f = 0;
   int t = 1;
   int one = t;
 
index 28182f11c287f5ec7859abce2ff3c5aaa6454222..307577218de242af2bfbc4a46f6e5f7e1bb19a19 100644 (file)
@@ -30,7 +30,7 @@ stdarg1 (long *one, ...)
   int r;
 
   va_start (ap, one);
-#if __GNUC__ && __x86_64__
+#if __GNUC__ && __x86_64__ && !SYSTEM_LIBC
 #define __FUNCTION_ARGS 1
   ap += (__FOO_VARARGS + (__FUNCTION_ARGS << 1)) << 3;
 #undef __FUNCTION_ARGS
@@ -54,7 +54,7 @@ stdarg2 (long *one, long *two, ...)
   int r;
 
   va_start (ap, two);
-#if __GNUC__ && __x86_64__
+#if __GNUC__ && __x86_64__ && !SYSTEM_LIBC
 #define __FUNCTION_ARGS 2
   ap += (__FOO_VARARGS + (__FUNCTION_ARGS << 1)) << 3;
 #undef __FUNCTION_ARGS
@@ -78,7 +78,7 @@ stdarg3 (long *one, long *two, long *three, ...)
   int r;
 
   va_start (ap, three);
-#if __GNUC__ && __x86_64__
+#if __GNUC__ && __x86_64__ && !SYSTEM_LIBC
 #define __FUNCTION_ARGS 3
   ap += (__FOO_VARARGS + (__FUNCTION_ARGS << 1)) << 3;
 #undef __FUNCTION_ARGS
index 1694ab21f3e1703d8df5bbe153e4d38c77a9adc0..fc118030add56128a31a55afffdf57d258f6836b 100644 (file)
@@ -25,6 +25,7 @@
 #include <setjmp.h>
 
 int foo;
+jmp_buf buf;
 
 void
 second ()