Skip to content

Commit dae9b37

Browse files
committed
initial commit
0 parents  commit dae9b37

File tree

3 files changed

+240
-0
lines changed

3 files changed

+240
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
bitcode-for-js
2+

make-bitcode-for-javascript.sh

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
SCRIPTDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
2+
LLVMDIR=$( cd "$1" && pwd )
3+
echo "Running from $SCRIPTDIR"
4+
if [ -z "$LLVMDIR" ]; then
5+
echo "Specify a path to an llvm or fastcomp source tree"
6+
exit 1
7+
fi
8+
echo "llvm is in $LLVMDIR"
9+
echo "Building build tools"
10+
cd $LLVMDIR
11+
mkdir tool-build
12+
cd tool-build
13+
../configure --enable-optimized --enable-targets=x86,js --enable-libcpp --disable-jit --disable-threads --disable-pthreads --disable-assertions --enable-cxx11 &> /dev/null &&
14+
BUILD_DIRS_ONLY=1 make -j4 &> /dev/null || exit 1
15+
cd ..
16+
17+
echo "Building Bitcode of llvm tools"
18+
mkdir emscripten-build
19+
cd emscripten-build
20+
emconfigure ../configure --enable-optimized --enable-targets=x86,js --enable-libcpp --disable-jit --disable-threads --disable-pthreads --disable-assertions --enable-bindings=no --disable-zlib &>/dev/null || exit 1
21+
#sed -e '/HAVE_ARC4RANDOM/ s?^?//?' -i .bak include/llvm/Config/config.h
22+
mkdir -p Release/bin &&
23+
cp ../tool-build/Release/bin/* Release/bin &&
24+
chflags uchg Release/bin/* || exit 1
25+
cp $SCRIPTDIR/stdio.h include &&
26+
curl https://raw.githubusercontent.com/kripken/Relooper/master/ministring.h > include/ministring.h &&
27+
emmake make -i -j4 #&> /dev/null
28+
29+
echo "Copying tools to bitcode-for-js"
30+
#rm -rf $SCRIPTDIR/bitcode-for-js
31+
mkdir $SCRIPTDIR/bitcode-for-js
32+
find $LLVMDIR/emscripten-build/Release/bin -maxdepth 1 -not -perm -111 -not -name ".*" -type f -exec basename {} \;| xargs -I% cp -v $LLVMDIR/emscripten-build/Release/bin/% $SCRIPTDIR/bitcode-for-js/%.bc
33+

stdio.h

Lines changed: 205 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,205 @@
1+
#ifndef _STDIO_H
2+
#define _STDIO_H
3+
4+
#ifdef __cplusplus
5+
extern "C" {
6+
#endif
7+
8+
#include <features.h>
9+
10+
#define __NEED_FILE
11+
#define __NEED___isoc_va_list
12+
#define __NEED_size_t
13+
14+
#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
15+
|| defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
16+
|| defined(_BSD_SOURCE)
17+
#define __NEED_ssize_t
18+
#define __NEED_off_t
19+
#define __NEED_va_list
20+
#endif
21+
22+
#include <bits/alltypes.h>
23+
24+
#ifdef __cplusplus
25+
#define NULL 0L
26+
#else
27+
#define NULL ((void*)0)
28+
#endif
29+
30+
#undef EOF
31+
#define EOF (-1)
32+
33+
#undef SEEK_SET
34+
#undef SEEK_CUR
35+
#undef SEEK_END
36+
#define SEEK_SET 0
37+
#define SEEK_CUR 1
38+
#define SEEK_END 2
39+
40+
#define _IOFBF 0
41+
#define _IOLBF 1
42+
#define _IONBF 2
43+
44+
#define BUFSIZ 1024
45+
#define FILENAME_MAX 4096
46+
#define FOPEN_MAX 1000
47+
#define TMP_MAX 10000
48+
#define L_tmpnam 20
49+
50+
typedef union _G_fpos64_t {
51+
char __opaque[16];
52+
double __align;
53+
} fpos_t;
54+
55+
extern FILE *const stdin;
56+
extern FILE *const stdout;
57+
extern FILE *const stderr;
58+
59+
#define stdin (stdin)
60+
#define stdout (stdout)
61+
#define stderr (stderr)
62+
63+
FILE *fopen(const char *__restrict, const char *__restrict);
64+
FILE *freopen(const char *__restrict, const char *__restrict, FILE *__restrict);
65+
int fclose(FILE *);
66+
67+
int remove(const char *);
68+
int rename(const char *, const char *);
69+
70+
int feof(FILE *);
71+
int ferror(FILE *);
72+
int fflush(FILE *);
73+
void clearerr(FILE *);
74+
75+
int fseek(FILE *, long, int);
76+
long ftell(FILE *);
77+
void rewind(FILE *);
78+
79+
int fgetpos(FILE *__restrict, fpos_t *__restrict);
80+
int fsetpos(FILE *, const fpos_t *);
81+
82+
size_t fread(void *__restrict, size_t, size_t, FILE *__restrict);
83+
size_t fwrite(const void *__restrict, size_t, size_t, FILE *__restrict);
84+
85+
int fgetc(FILE *);
86+
int getc(FILE *);
87+
int getchar(void);
88+
int ungetc(int, FILE *);
89+
90+
int fputc(int, FILE *);
91+
int putc(int, FILE *);
92+
int putchar(int);
93+
94+
char *fgets(char *__restrict, int, FILE *__restrict);
95+
#if __STDC_VERSION__ < 201112L
96+
char *gets(char *);
97+
#endif
98+
99+
int fputs(const char *__restrict, FILE *__restrict);
100+
int puts(const char *);
101+
102+
int printf(const char *__restrict, ...);
103+
int fprintf(FILE *__restrict, const char *__restrict, ...);
104+
int sprintf(char *__restrict, const char *__restrict, ...);
105+
int snprintf(char *__restrict, size_t, const char *__restrict, ...);
106+
107+
int vprintf(const char *__restrict, __isoc_va_list);
108+
int vfprintf(FILE *__restrict, const char *__restrict, __isoc_va_list);
109+
int vsprintf(char *__restrict, const char *__restrict, __isoc_va_list);
110+
int vsnprintf(char *__restrict, size_t, const char *__restrict, __isoc_va_list);
111+
112+
int scanf(const char *__restrict, ...);
113+
int fscanf(FILE *__restrict, const char *__restrict, ...);
114+
int sscanf(const char *__restrict, const char *__restrict, ...);
115+
int vscanf(const char *__restrict, __isoc_va_list);
116+
int vfscanf(FILE *__restrict, const char *__restrict, __isoc_va_list);
117+
int vsscanf(const char *__restrict, const char *__restrict, __isoc_va_list);
118+
119+
void perror(const char *);
120+
121+
int setvbuf(FILE *__restrict, char *__restrict, int, size_t);
122+
void setbuf(FILE *__restrict, char *__restrict);
123+
124+
char *tmpnam(char *);
125+
FILE *tmpfile(void);
126+
127+
#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
128+
|| defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
129+
|| defined(_BSD_SOURCE)
130+
FILE *fmemopen(void *__restrict, size_t, const char *__restrict);
131+
FILE *open_memstream(char **, size_t *);
132+
FILE *fdopen(int, const char *);
133+
FILE *popen(const char *, const char *);
134+
int pclose(FILE *);
135+
int fileno(FILE *);
136+
int fseeko(FILE *, off_t, int);
137+
off_t ftello(FILE *);
138+
int dprintf(int, const char *__restrict, ...);
139+
int vdprintf(int, const char *__restrict, __isoc_va_list);
140+
void flockfile(FILE *);
141+
int ftrylockfile(FILE *);
142+
void funlockfile(FILE *);
143+
int getc_unlocked(FILE *);
144+
int getchar_unlocked(void);
145+
int putc_unlocked(int, FILE *);
146+
int putchar_unlocked(int);
147+
ssize_t getdelim(char **__restrict, size_t *__restrict, int, FILE *__restrict);
148+
ssize_t getline(char **__restrict, size_t *__restrict, FILE *__restrict);
149+
int renameat(int, const char *, int, const char *);
150+
char *ctermid(char *);
151+
#define L_ctermid 20
152+
#endif
153+
154+
155+
#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
156+
|| defined(_BSD_SOURCE)
157+
#define P_tmpdir "/tmp"
158+
char *tempnam(const char *, const char *);
159+
#endif
160+
161+
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
162+
#define L_cuserid 20
163+
char *cuserid(char *);
164+
void setlinebuf(FILE *);
165+
void setbuffer(FILE *, char *, size_t);
166+
int fgetc_unlocked(FILE *);
167+
int fputc_unlocked(int, FILE *);
168+
int fflush_unlocked(FILE *);
169+
size_t fread_unlocked(void *, size_t, size_t, FILE *);
170+
size_t fwrite_unlocked(const void *, size_t, size_t, FILE *);
171+
void clearerr_unlocked(FILE *);
172+
int feof_unlocked(FILE *);
173+
int ferror_unlocked(FILE *);
174+
int fileno_unlocked(FILE *);
175+
int getw(FILE *);
176+
int putw(int, FILE *);
177+
char *fgetln(FILE *, size_t *);
178+
int asprintf(char **, const char *, ...);
179+
int vasprintf(char **, const char *, __isoc_va_list);
180+
#endif
181+
182+
#ifdef _GNU_SOURCE
183+
char *fgets_unlocked(char *, int, FILE *);
184+
int fputs_unlocked(const char *, FILE *);
185+
#endif
186+
187+
/*
188+
#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
189+
#define tmpfile64 tmpfile
190+
#define fopen64 fopen
191+
#define freopen64 freopen
192+
#define fseeko64 fseeko
193+
#define ftello64 ftello
194+
#define fgetpos64 fgetpos
195+
#define fsetpos64 fsetpos
196+
#define fpos64_t fpos_t
197+
#define off64_t off_t
198+
#endif
199+
*/
200+
201+
#ifdef __cplusplus
202+
}
203+
#endif
204+
205+
#endif

0 commit comments

Comments
 (0)