runtime: change gcc to clang

This commit is contained in:
danyaberezun 2024-02-07 10:08:10 +01:00 committed by Roman Venediktov
parent 62c8df3012
commit 1aefb02da7
2 changed files with 20 additions and 5 deletions

View file

@ -1,4 +1,4 @@
CC=gcc CC=clang
COMMON_FLAGS=-g2 -fstack-protector-all COMMON_FLAGS=-g2 -fstack-protector-all
PROD_FLAGS=$(COMMON_FLAGS) -DLAMA_ENV PROD_FLAGS=$(COMMON_FLAGS) -DLAMA_ENV
TEST_FLAGS=$(COMMON_FLAGS) -DDEBUG_VERSION TEST_FLAGS=$(COMMON_FLAGS) -DDEBUG_VERSION

View file

@ -3,7 +3,7 @@
#define _GNU_SOURCE 1 #define _GNU_SOURCE 1
#include "runtime.h" #include "runtime.h"
#include "regex.h"
#include "gc.h" #include "gc.h"
#include "runtime_common.h" #include "runtime_common.h"
@ -472,8 +472,14 @@ extern void *Lsubstring (void *subj, aint p, aint l) {
pp, pp,
ll, ll,
LEN(d->data_header)); LEN(d->data_header));
exit(1);
return NULL;
} }
extern const char *re_compile_pattern (const char *__pattern, size_t __length,
struct re_pattern_buffer *__buffer)
_Attr_access_ ((__read_only__, 1, 2));
extern struct re_pattern_buffer *Lregexp (char *regexp) { extern struct re_pattern_buffer *Lregexp (char *regexp) {
regex_t *b = (regex_t *)malloc(sizeof(regex_t)); regex_t *b = (regex_t *)malloc(sizeof(regex_t));
@ -488,6 +494,11 @@ extern struct re_pattern_buffer *Lregexp (char *regexp) {
return b; return b;
} }
extern regoff_t re_match (struct re_pattern_buffer *__buffer,
const char *__String, regoff_t __length,
regoff_t __start, struct re_registers *__regs)
_Attr_access_ ((__read_only__, 2, 3));
extern aint LregexpMatch (struct re_pattern_buffer *b, char *s, aint pos) { extern aint LregexpMatch (struct re_pattern_buffer *b, char *s, aint pos) {
aint res; aint res;
@ -610,7 +621,7 @@ extern aint LflatCompare (void *p, void *q) {
return -1; return -1;
} else if (~UNBOXED(q)) { } else if (~UNBOXED(q)) {
return BOX(p - q); return BOX(p - q);
} else BOX(1); } else return BOX(1);
} }
extern aint Lcompare (void *p, void *q) { extern aint Lcompare (void *p, void *q) {
@ -623,7 +634,7 @@ extern aint Lcompare (void *p, void *q) {
if (UNBOXED(p)) { if (UNBOXED(p)) {
if (UNBOXED(q)) return BOX(UNBOX(p) - UNBOX(q)); if (UNBOXED(q)) return BOX(UNBOX(p) - UNBOX(q));
else return BOX(-1); else return BOX(-1u);
} else if (UNBOXED(q)) return BOX(1); } else if (UNBOXED(q)) return BOX(1);
else { else {
if (is_valid_heap_pointer(p)) { if (is_valid_heap_pointer(p)) {
@ -667,7 +678,7 @@ extern aint Lcompare (void *p, void *q) {
if (c != BOX(0)) return c; if (c != BOX(0)) return c;
} }
return BOX(0); return BOX(0);
} else return BOX(-1); } else return BOX(-1u);
} else if (is_valid_heap_pointer(q)) return BOX(1); } else if (is_valid_heap_pointer(q)) return BOX(1);
else return BOX(p - q); else return BOX(p - q);
} }
@ -1165,6 +1176,8 @@ extern FILE *Lfopen (char *f, char *m) {
if (h) return h; if (h) return h;
failure("fopen (\"%s\", \"%s\"): %s, %s, %s\n", f, m, strerror(errno)); failure("fopen (\"%s\", \"%s\"): %s, %s, %s\n", f, m, strerror(errno));
exit(1);
return NULL;
} }
extern void Lfclose (FILE *f) { extern void Lfclose (FILE *f) {
@ -1210,6 +1223,8 @@ extern void *Lfread (char *fname) {
} }
failure("fread (\"%s\"): %s\n", fname, strerror(errno)); failure("fread (\"%s\"): %s\n", fname, strerror(errno));
exit(1);
return NULL;
} }
extern void Lfwrite (char *fname, char *contents) { extern void Lfwrite (char *fname, char *contents) {