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

@ -41,7 +41,7 @@ TOOL_DECODE_DIRECTDEPS = \
LIBC_UNICODE \
LIBC_X \
TOOL_DECODE_LIB \
THIRD_PARTY_DTOA \
THIRD_PARTY_GDTOA \
THIRD_PARTY_GETOPT \
THIRD_PARTY_XED

View file

@ -38,7 +38,7 @@ static uint32_t bit, maxbit;
static struct BitaBuilder *bitset;
static char *line, *tok, *s1, *category, *g_inpath, *g_outpath;
noreturn void ShowUsage(FILE *f, int rc) {
wontreturn void ShowUsage(FILE *f, int rc) {
fprintf(f, "Usage: %s [-o OUTPUT] [INPUT]\n", "Usage",
program_invocation_name);
exit(rc);

View file

@ -35,7 +35,7 @@ static size_t linecap, i, x, y;
static struct BitaBuilder *bitset;
static char *g_inpath, *g_outpath;
noreturn void ShowUsage(FILE *f, int rc) {
wontreturn void ShowUsage(FILE *f, int rc) {
fprintf(f, "Usage: %s [-o OUTPUT] [INPUT]\n", "Usage",
program_invocation_name);
exit(rc);

View file

@ -42,7 +42,7 @@ const struct IdName kXedModeNames[] = {
enum XedMachineMode g_mode;
struct XedDecodedInst g_xedd;
noreturn void ShowUsage(int rc, FILE *f) {
wontreturn void ShowUsage(int rc, FILE *f) {
size_t i;
fputs("Usage: ", f);
fputs(program_invocation_name, f);

View file

@ -22,7 +22,7 @@
#include "libc/stdio/stdio.h"
#include "libc/str/str.h"
#include "libc/x/x.h"
#include "third_party/dtoa/dtoa.h"
#include "third_party/gdtoa/gdtoa.h"
const char kConfig[] = "\
/* FPU Control Word (x87) Exception Masks\n\
@ -73,7 +73,8 @@ void PrintRegister(long double x) {
memcpy(buf, &x, sizeof(x));
memcpy(&lo, &buf[0], sizeof(lo));
memcpy(&hi, &buf[8], sizeof(hi));
printf("/\t%016lb%064lb %s\n", hi, lo, g_fmt(buf, x));
g_xfmt_p(buf, &x, 15, 32, 0);
printf("/\t%016lb%064lb %s\n", hi, lo, buf);
}
int main(int argc, char *argv[]) {