mirror of
https://github.com/ProgramSnail/Lama.git
synced 2025-12-06 06:48:48 +00:00
runtime: change gcc to clang
This commit is contained in:
parent
62c8df3012
commit
1aefb02da7
2 changed files with 20 additions and 5 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue