Add chibicc

This program popped up on Hacker News recently. It's the only modern
compiler I've ever seen that doesn't have dependencies and is easily
modified. So I added all of the missing GNU extensions I like to use
which means it might be possible soon to build on non-Linux and have
third party not vendor gcc binaries.
This commit is contained in:
Justine Tunney 2020-12-05 12:20:41 -08:00
parent e44a0cf6f8
commit 8da931a7f6
298 changed files with 19493 additions and 11950 deletions

View file

@ -28,8 +28,8 @@ int xwrite(int, const void *, uint64_t);
cosmopolitan § eXtended apis » memory
*/
void xdie(void) noreturn;
char *xdtoa(double) _XMAL;
void xdie(void) wontreturn;
char *xdtoa(long double) _XMAL;
char *xasprintf(const char *, ...) printfesque(1) paramsnonnull((1)) _XMAL;
char *xvasprintf(const char *, va_list) _XPNN _XMAL;
char *xgetline(struct FILE *) _XPNN mallocesque;

View file

@ -43,7 +43,7 @@ LIBC_X_A_DIRECTDEPS = \
LIBC_STR \
LIBC_STUBS \
LIBC_SYSV \
THIRD_PARTY_DTOA
THIRD_PARTY_GDTOA
LIBC_X_A_DEPS := \
$(call uniq,$(foreach x,$(LIBC_X_A_DIRECTDEPS),$($(x))))

View file

@ -19,14 +19,15 @@
*/
#include "libc/mem/mem.h"
#include "libc/x/x.h"
#include "third_party/dtoa/dtoa.h"
#include "third_party/gdtoa/gdtoa.h"
/**
* Converts double to string w/ high-accuracy the easy way.
*
* @see gc(), free()
* @return string that needs to be free'd
*/
char *xdtoa(double d) {
char buf[32];
return xstrdup(g_fmt(buf, d));
char *xdtoa(long double d) {
char *p = xmalloc(32);
g_xfmt_p(p, &d, 16, 32, 2);
return p;
}