Skip to content

Commit edb0d36

Browse files
ports: add tcc port
Signed-off-by: Andy-Python-Programmer <[email protected]>
1 parent 39debd0 commit edb0d36

File tree

3 files changed

+201
-10
lines changed

3 files changed

+201
-10
lines changed

bootstrap.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,13 +312,39 @@ packages:
312312
environ:
313313
DESTDIR: '@THIS_COLLECT_DIR@'
314314

315+
- name: tcc
316+
source:
317+
subdir: 'bundled'
318+
git: 'https://github.com/aero-os/tcc'
319+
branch: master
320+
patch-path-strip: 3
321+
tools_required:
322+
- host-gcc
323+
configure:
324+
- args:
325+
- '@THIS_SOURCE_DIR@/configure'
326+
- '--tccdir=/usr/lib/tcc'
327+
- '--elfinterp=/usr/lib/ld.so'
328+
- '--libpaths=/usr/lib'
329+
- '--sysincludepaths=/usr/lib/tcc/include:/usr/include'
330+
- '--cross-prefix=x86_64-aero-'
331+
- '--cc=gcc'
332+
- '--ar=ar'
333+
- '--with-selinux'
334+
- '--strip-binaries'
335+
- '--prefix=/usr'
336+
build:
337+
- args: ['make']
338+
- args: ['make', 'DESTDIR=@THIS_COLLECT_DIR@', 'install-strip']
339+
315340
tasks:
316341
- name: sysroot
317342
pkgs_required:
318343
- binutils
319344
- coreutils
320345
- nyancat
321346
- gcc
347+
- tcc
322348
args:
323349
- '@SOURCE_ROOT@/make-iso.sh'
324350
- '@BUILD_ROOT@'

patches/mlibc/mlibc.patch

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
From 5a2e83b82f7d331f3c954c72466cfdc558c924a7 Mon Sep 17 00:00:00 2001
1+
From 190cae31fc322a34ec97738854148baaaf4f4934 Mon Sep 17 00:00:00 2001
22
From: unknown <[email protected]>
33
Date: Sun, 6 Jun 2021 16:37:54 +1000
44
Subject: [PATCH] targets: add aero target port
@@ -11,7 +11,7 @@ Signed-off-by: Andy-Python-Programmer <[email protected]>
1111
options/ansi/generic/stdlib-stubs.cpp | 3 +
1212
options/rtdl/generic/main.cpp | 11 +-
1313
sysdeps/aero/crt-x86_64/crt0.S | 8 +
14-
sysdeps/aero/generic/aero.cc | 223 ++++++++++++++++++++
14+
sysdeps/aero/generic/aero.cc | 222 ++++++++++++++++++++
1515
sysdeps/aero/generic/entry.cc | 32 +++
1616
sysdeps/aero/generic/filesystem.cc | 180 ++++++++++++++++
1717
sysdeps/aero/generic/sockets.cc | 0
@@ -42,11 +42,11 @@ Signed-off-by: Andy-Python-Programmer <[email protected]>
4242
sysdeps/aero/include/abi-bits/uid_t.h | 1 +
4343
sysdeps/aero/include/abi-bits/vm-flags.h | 1 +
4444
sysdeps/aero/include/abi-bits/wait.h | 1 +
45-
sysdeps/aero/include/aero/syscall.h | 152 +++++++++++++
45+
sysdeps/aero/include/aero/syscall.h | 152 ++++++++++++++
4646
sysdeps/aero/include/mlibc/thread-entry.hpp | 10 +
4747
sysdeps/aero/meson.build | 60 ++++++
4848
sysdeps/dripos/generic/generic.cpp | 3 +
49-
41 files changed, 768 insertions(+), 7 deletions(-)
49+
41 files changed, 767 insertions(+), 7 deletions(-)
5050
create mode 100644 abis/aero/auxv.h
5151
create mode 100644 sysdeps/aero/crt-x86_64/crt0.S
5252
create mode 100644 sysdeps/aero/generic/aero.cc
@@ -205,10 +205,10 @@ index 0000000..190b5a0
205205
+.size _start, . - _start
206206
diff --git a/sysdeps/aero/generic/aero.cc b/sysdeps/aero/generic/aero.cc
207207
new file mode 100644
208-
index 0000000..d84c5e6
208+
index 0000000..4a0d95e
209209
--- /dev/null
210210
+++ b/sysdeps/aero/generic/aero.cc
211-
@@ -0,0 +1,223 @@
211+
@@ -0,0 +1,222 @@
212212
+#include <aero/syscall.h>
213213
+#include <stddef.h>
214214
+#include <bits/ensure.h>
@@ -296,22 +296,21 @@ index 0000000..d84c5e6
296296
+
297297
+void sys_libc_panic() {
298298
+ sys_libc_log("libc panic!");
299-
+ __builtin_trap();
300-
+ for(;;);
299+
+ sys_exit(1);
301300
+}
302301
+
303302
+void sys_libc_log(const char* msg) {
304303
+ syscalln2(SYS_LOG, (unsigned long long)msg, strlen(msg));
305304
+}
306305
+
307-
+#ifndef MLIBC_BUILDING_RTDL
308-
+
309306
+void sys_exit(int status) {
310307
+ syscall(SYS_EXIT, status);
311308
+
312309
+ __builtin_unreachable();
313310
+}
314311
+
312+
+#ifndef MLIBC_BUILDING_RTDL
313+
+
315314
+pid_t sys_getpid() {
316315
+ auto result = syscall(SYS_GETPID);
317316
+

patches/tcc/tcc.patch

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
From d6759f3711877792de6eae84616f0077c5089b1e Mon Sep 17 00:00:00 2001
2+
From: Andy-Python-Programmer <[email protected]>
3+
Date: Fri, 31 Dec 2021 17:14:30 +1100
4+
Subject: [PATCH] add support for aero
5+
6+
Signed-off-by: Andy-Python-Programmer <[email protected]>
7+
---
8+
.vscode/settings.json | 3 +++
9+
configure | 2 +-
10+
include/stdarg.h | 6 ++++++
11+
lib/Makefile | 8 ++++----
12+
libtcc.c | 4 ++--
13+
tcc.c | 4 +++-
14+
tcc.h | 4 ++++
15+
tccelf.c | 2 ++
16+
8 files changed, 25 insertions(+), 8 deletions(-)
17+
create mode 100644 .vscode/settings.json
18+
19+
diff --git a/.vscode/settings.json b/.vscode/settings.json
20+
new file mode 100644
21+
index 0000000..560faaa
22+
--- /dev/null
23+
+++ b/.vscode/settings.json
24+
@@ -0,0 +1,3 @@
25+
+{
26+
+ "editor.formatOnSave": false,
27+
+}
28+
\ No newline at end of file
29+
diff --git a/configure b/configure
30+
index 1ee3acb..cab20ed 100755
31+
--- a/configure
32+
+++ b/configure
33+
@@ -49,7 +49,7 @@ gcc_major=0
34+
gcc_minor=0
35+
36+
# OS specific
37+
-targetos=`uname`
38+
+targetos=Aero
39+
case $targetos in
40+
Darwin)
41+
confvars="$confvars OSX"
42+
diff --git a/include/stdarg.h b/include/stdarg.h
43+
index 10ce733..405ac68 100644
44+
--- a/include/stdarg.h
45+
+++ b/include/stdarg.h
46+
@@ -1,6 +1,10 @@
47+
#ifndef _STDARG_H
48+
#define _STDARG_H
49+
50+
+#ifdef __need___va_list
51+
+typedef char *__gnuc_va_list;
52+
+#else
53+
+
54+
#ifdef __x86_64__
55+
#ifndef _WIN64
56+
57+
@@ -76,4 +80,6 @@ typedef char *va_list;
58+
typedef va_list __gnuc_va_list;
59+
#define _VA_LIST_DEFINED
60+
61+
+#endif
62+
+
63+
#endif /* _STDARG_H */
64+
diff --git a/lib/Makefile b/lib/Makefile
65+
index 0c1ec54..c546dff 100644
66+
--- a/lib/Makefile
67+
+++ b/lib/Makefile
68+
@@ -20,18 +20,18 @@ XCFG = $(or $(findstring -win,$T),-unx)
69+
# in order to use gcc, tyoe: make <target>-libtcc1-usegcc=yes
70+
arm-libtcc1-usegcc ?= no
71+
72+
-ifeq "$($(T)-libtcc1-usegcc)" "yes"
73+
+#ifeq "$($(T)-libtcc1-usegcc)" "yes"
74+
XCC = $(CC)
75+
XAR = $(AR)
76+
XFLAGS = $(CFLAGS) -fPIC
77+
-endif
78+
+#endif
79+
80+
# only for native compiler
81+
$(X)BCHECK_O = bcheck.o
82+
83+
-ifeq ($(CONFIG_musl)$(CONFIG_uClibc),yes)
84+
+#ifeq ($(CONFIG_musl)$(CONFIG_uClibc),yes)
85+
BCHECK_O =
86+
-endif
87+
+#endif
88+
89+
ifdef CONFIG_OSX
90+
XFLAGS += -D_ANSI_SOURCE
91+
diff --git a/libtcc.c b/libtcc.c
92+
index 1e9dd97..30d27f0 100644
93+
--- a/libtcc.c
94+
+++ b/libtcc.c
95+
@@ -975,8 +975,8 @@ LIBTCCAPI int tcc_set_output_type(TCCState *s, int output_type)
96+
if ((output_type == TCC_OUTPUT_EXE || output_type == TCC_OUTPUT_DLL) &&
97+
!s->nostdlib) {
98+
if (output_type != TCC_OUTPUT_DLL)
99+
- tcc_add_crt(s, "crt1.o");
100+
- tcc_add_crt(s, "crti.o");
101+
+ tcc_add_crt(s, "crt0.o");
102+
+ //tcc_add_crt(s, "crti.o");
103+
}
104+
#endif
105+
return 0;
106+
diff --git a/tcc.c b/tcc.c
107+
index cd887d1..1bb0c24 100644
108+
--- a/tcc.c
109+
+++ b/tcc.c
110+
@@ -1,6 +1,6 @@
111+
/*
112+
* TCC - Tiny C Compiler
113+
- *
114+
+ *
115+
* Copyright (c) 2001-2004 Fabrice Bellard
116+
*
117+
* This library is free software; you can redistribute it and/or
118+
@@ -162,6 +162,8 @@ static const char version[] =
119+
" Darwin"
120+
#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
121+
" FreeBSD"
122+
+#elif defined(__aero__)
123+
+ " Aero"
124+
#else
125+
" Linux"
126+
#endif
127+
diff --git a/tcc.h b/tcc.h
128+
index cd67973..e42f5fe 100644
129+
--- a/tcc.h
130+
+++ b/tcc.h
131+
@@ -162,6 +162,8 @@ extern long double strtold (const char *__nptr, char **__endptr);
132+
# endif
133+
#endif
134+
135+
+#if 0
136+
+
137+
#if defined TCC_IS_NATIVE && !defined CONFIG_TCCBOOT
138+
# define CONFIG_TCC_BACKTRACE
139+
# if (defined TCC_TARGET_I386 || defined TCC_TARGET_X86_64) \
140+
@@ -170,6 +172,8 @@ extern long double strtold (const char *__nptr, char **__endptr);
141+
# endif
142+
#endif
143+
144+
+#endif
145+
+
146+
/* ------------ path configuration ------------ */
147+
148+
#ifndef CONFIG_SYSROOT
149+
diff --git a/tccelf.c b/tccelf.c
150+
index 70d47e1..994ee59 100644
151+
--- a/tccelf.c
152+
+++ b/tccelf.c
153+
@@ -1202,8 +1202,10 @@ ST_FUNC void tcc_add_runtime(TCCState *s1)
154+
#endif
155+
tcc_add_support(s1, TCC_LIBTCC1);
156+
/* add crt end if not memory output */
157+
+ /*
158+
if (s1->output_type != TCC_OUTPUT_MEMORY)
159+
tcc_add_crt(s1, "crtn.o");
160+
+ */
161+
}
162+
}
163+
164+
--
165+
2.25.1
166+

0 commit comments

Comments
 (0)