History

tcc android-enabled (armeabi-v7a)

On an armeabi-v7a device (phone) in the termux app with clang & make installed this passes all the tests. Can be used as a cross compiler to create "native apps" as well. Example 'config-extra.mak' for the cross arm-eabi-tcc: SYSROOT = <path_to_android_ndk...>/sysroot/usr TRIPLET = arm-linux-androideabi ANDRVER = 32 ROOT-arm-eabi = $(SYSROOT) CRT-arm-eabi = {R}/lib/$(TRIPLET)/$(ANDRVER) LIB-arm-eabi = {B};{R}/lib/$(TRIPLET)/$(ANDRVER);{R}/lib/$(TRIPLET) INC-arm-eabi = {B}/lib/include;{R}/include/$(TRIPLET);{R}/include DEF-arm-eabi = -DTCC_TARGET_ARM -DTCC_ARM_VFP -DTCC_ARM_EABI DEF-arm-eabi += -DTARGETOS_ANDROID -DCONFIG_TCC_PIE -DCONFIG_NEW_DTAGS DEF-arm-eabi += -DCONFIG_TCC_ELFINTERP=\"/system/bin/linker\" # on unix replace ';' by ':'. $ ./configure && make cross-arm-eabi && make install

grischka committed 4 years ago

Commit 09808f31 parent 8e8607014 files · +109 −49Browse files

Unified · Split

14 files
  1. Makefile +2 −0
  2. configure +29 −12
  3. conftest.c +11 −3
  4. include/tccdefs.h +7 −0
  5. lib/bcheck.c +3 −2
  6. libtcc.c +10 −1
  7. tcc.c +3 −0
  8. tccelf.c +12 −14
  9. tccgen.c +1 −1
  10. tccpp.c +13 −5
  11. tccrun.c +1 −1
  12. tests/Makefile +5 −3
  13. tests/tcctest.c +10 −5
  14. tests/tests2/Makefile +2 −2
Makefile+2−0
@@ -90,8 +90,10 @@ NATIVE_DEFINES_$(CONFIG_arm_vfp) += -DTCC_ARM_VFP · 89 unmodified lines
9090 NATIVE_DEFINES_$(CONFIG_arm64) += -DTCC_TARGET_ARM64
9191 NATIVE_DEFINES_$(CONFIG_riscv64) += -DTCC_TARGET_RISCV64
9292 NATIVE_DEFINES_$(CONFIG_BSD) += -DTARGETOS_$(TARGETOS)
93+NATIVE_DEFINES_$(CONFIG_Android) += -DTARGETOS_ANDROID
9394 NATIVE_DEFINES_$(CONFIG_pie) += -DCONFIG_TCC_PIE
9495 NATIVE_DEFINES_$(CONFIG_pic) += -DCONFIG_TCC_PIC
96+NATIVE_DEFINES_$(CONFIG_new-dtags) += -DCONFIG_NEW_DTAGS
9597 NATIVE_DEFINES_no_$(CONFIG_bcheck) += -DCONFIG_TCC_BCHECK=0
9698 NATIVE_DEFINES_no_$(CONFIG_backtrace) += -DCONFIG_TCC_BACKTRACE=0
9799 NATIVE_DEFINES += $(NATIVE_DEFINES_yes) $(NATIVE_DEFINES_no_no)
configure+29−12
@@ -27,8 +27,7 @@ mandir="" · 26 unmodified lines
2727 infodir=""
2828 sysroot=""
2929 cross_prefix=""
30−test -z "$CC" && CC="gcc"
31−test -z "$cc" && cc="$CC"
30+cc="gcc"
3231 ar="ar"
3332 bigendian="no"
3433 mingw32="no"
@@ -46,16 +45,20 @@ confvars= · 11 unmodified lines
4645 suggest="yes"
4746 gcc_major=0
4847 gcc_minor=0
49−cc_name="$cc"
48+cc_name="gcc"
5049 ar_set=
5150 darwin=
52−cpu=
5351 cpuver=
5452 dwarf=
5553
54+# use CC from environment when set
55+test -n "$CC" && cc="$CC"
56+
5657 # OS specific
57−cpu_sys=`uname -m`
58+cpu=`uname -m`
59+cpu_sys="$cpu"
5860 targetos=`uname`
61+test "$(uname -o)" = "Android" && targetos=Android
5962
6063 case $targetos in
6164 Darwin)
@@ -73,6 +76,20 @@ case $targetos in · 11 unmodified lines
7376 DragonFly|OpenBSD|FreeBSD|NetBSD)
7477 confvars="$confvars BSD ldl=no"
7578 ;;
79+ Android)
80+ confvars="$confvars Android pie new-dtags"
81+ if test -n "$TERMUX_VERSION"; then
82+ prefix="$PREFIX" # "/data/data/com.termux/files/usr"
83+ sysroot="$PREFIX"
84+ test "$cpu" = "aarch64" -o "$cpu" = "x86_64" && S="64" || S=""
85+ tcc_sysincludepaths="{B}/include:{R}/include/\\\"CONFIG_TRIPLET\\\":{R}/include"
86+ tcc_libpaths="{B}:{R}/lib:/system/lib${S}"
87+ tcc_crtprefix="{R}/lib"
88+ tcc_elfinterp="/system/bin/linker${S}"
89+ use_triplet="yes"
90+ tcc_switches="-Wl,-rpath=$sysroot/lib,-section-alignment=0x1000"
91+ fi
92+ ;;
7693 *)
7794 ;;
7895 esac
@@ -153,6 +170,8 @@ for opt do · 74 unmodified lines
153170 ;;
154171 --with-selinux) confvars="$confvars selinux"
155172 ;;
173+ --tcc-switches=*) tcc_switches=`echo $opt | cut -d '=' -f 2-`
174+ ;;
156175 --config-mingw32*) mingw32=$(echo "$opt=yes" | cut -d '=' -f 2)
157176 ;;
158177 --config-*) confvars="$confvars ${opt#--config-}"; suggest="no"
@@ -176,9 +195,6 @@ if test "$darwin" = "yes" -a "$cpu" = "x86_64" -a "$cpu_sys" = "arm64"; then · 17 unmodified lines
176195 LDFLAGS="$LDFLAGS -arch $cpu"
177196 fi
178197
179−# checking for cpu
180−test -z "$cpu" && cpu="$cpu_sys"
181−
182198 case "$cpu" in
183199 x86|i386|i486|i586|i686|i86pc|BePC|i686-AT386)
184200 cpu="i386"
@@ -325,6 +341,7 @@ Advanced options (experts only): · 140 unmodified lines
325341 --crtprefix=... specify locations of crt?.o, colon separated
326342 --elfinterp=... specify elf interpreter
327343 --triplet=... specify system library/include directory triplet
344+ --tcc-switches=... specify implicit switches passed to tcc
328345
329346 --config-uClibc,-musl enable system specific configurations
330347 --config-mingw32 build on windows using msys, busybox, etc.
@@ -349,8 +366,8 @@ if test -z "$cross_prefix" ; then · 18 unmodified lines
349366 fi
350367 if test "$mingw32" = "no" ; then
351368
352− if test -z "$triplet"; then
353− if test -n "$_triplet" -a -f "/usr/lib/$_triplet/crti.o" ; then
369+ if test -z "$triplet" -a -n "$_triplet"; then
370+ if test -f "/usr/lib/$_triplet/crti.o" -o -n "$use_triplet" ; then
354371 triplet="$_triplet"
355372 fi
356373 fi
@@ -372,8 +389,7 @@ if test -z "$cross_prefix" ; then · 15 unmodified lines
372389 confvars="$confvars arm_eabihf arm_vfp"
373390 elif test "${_triplet%eabi}" != "$_triplet" ; then
374391 confvars="$confvars arm_eabi arm_vfp"
375− fi
376− if grep -s -q "^Features.* \(vfp\|iwmmxt\) " /proc/cpuinfo ; then
392+ elif grep -s -q "^Features.* \(vfp\|iwmmxt\) " /proc/cpuinfo ; then
377393 confvars="$confvars arm_vfp"
378394 fi
379395 fi
@@ -496,6 +512,7 @@ print_mak CONFIG_TCC_SYSINCLUDEPATHS "$tcc_sysincludepaths" · 116 unmodified lines
496512 print_mak CONFIG_TCC_LIBPATHS "$tcc_libpaths"
497513 print_mak CONFIG_TCC_CRTPREFIX "$tcc_crtprefix"
498514 print_mak CONFIG_TCC_ELFINTERP "$tcc_elfinterp"
515+print_mak CONFIG_TCC_SWITCHES "$tcc_switches"
499516 print_mak CONFIG_LDDIR "$tcc_lddir"
500517 print_mak CONFIG_TRIPLET "$triplet"
501518 print_mak TCC_CPU_VERSION "$cpuver" num
conftest.c+11−3
@@ -21,6 +21,8 @@ const char *platform_macros[] = { · 20 unmodified lines
2121 "__OpenBSD__", "TARGETOS_OpenBSD",
2222 "__NetBSD__", "TARGETOS_NetBSD",
2323 "__linux__", "TARGETOS_Linux",
24+ "__ANDROID__", "TARGETOS_ANDROID",
25+
2426 "__SIZEOF_POINTER__", "PTR_SIZE",
2527 "__SIZEOF_LONG__", "LONG_SIZE",
2628 0
@@ -206,15 +208,21 @@ int main(int argc, char **argv) · 179 unmodified lines
206208 # define TRIPLET_OS "unknown"
207209 #endif
208210
211+#if defined __ANDROID__
212+# define ABI_PREFIX "android"
213+#else
214+# define ABI_PREFIX "gnu"
215+#endif
216+
209217 /* Define calling convention and ABI */
210218 #if defined (__ARM_EABI__)
211219 # if defined (__ARM_PCS_VFP)
212−# define TRIPLET_ABI "gnueabihf"
220+# define TRIPLET_ABI ABI_PREFIX"eabihf"
213221 # else
214−# define TRIPLET_ABI "gnueabi"
222+# define TRIPLET_ABI ABI_PREFIX"eabi"
215223 # endif
216224 #else
217−# define TRIPLET_ABI "gnu"
225+# define TRIPLET_ABI ABI_PREFIX
218226 #endif
219227
220228 #if defined _WIN32
include/tccdefs.h+7−0
@@ -125,6 +125,13 @@ · 124 unmodified lines
125125 #define __FINITE_MATH_ONLY__ 1
126126 #define _FORTIFY_SOURCE 0
127127
128+#elif defined __ANDROID__
129+ #define BIONIC_IOCTL_NO_SIGNEDNESS_OVERLOAD
130+ #define __PRETTY_FUNCTION__ __FUNCTION__
131+ #define __has_builtin(x) 0
132+ #define _Nonnull
133+ #define _Nullable
134+
128135 #else
129136 /* Linux */
130137
lib/bcheck.c+3−2
@@ -161,7 +161,7 @@ static pthread_spinlock_t bounds_spin; · 160 unmodified lines
161161 #define HAVE_TLS_FUNC (1)
162162 #define HAVE_TLS_VAR (0)
163163 #endif
164−#ifdef TCC_MUSL
164+#if defined TCC_MUSL || defined __ANDROID__
165165 # undef HAVE_CTYPE
166166 #endif
167167 #endif
@@ -1174,7 +1174,8 @@ void __attribute__((destructor)) __bound_exit(void) · 1006 unmodified lines
11741174
11751175 if (inited) {
11761176 #if !defined(_WIN32) && !defined(__APPLE__) && !defined TCC_MUSL && \
1177− !defined(__OpenBSD__) && !defined(__FreeBSD__) && !defined(__NetBSD__)
1177+ !defined(__OpenBSD__) && !defined(__FreeBSD__) && !defined(__NetBSD__) && \
1178+ !defined(__ANDROID__)
11781179 if (print_heap) {
11791180 extern void __libc_freeres (void);
11801181 __libc_freeres ();
libtcc.c+10−1
@@ -496,6 +496,8 @@ static void tcc_split_path(TCCState *s, void *p_ary, int *p_nb_ary, const char * · 495 unmodified lines
496496 c = p[1], p += 2;
497497 if (c == 'B')
498498 cstr_cat(&str, s->tcc_lib_path, -1);
499+ if (c == 'R')
500+ cstr_cat(&str, CONFIG_SYSROOT, -1);
499501 if (c == 'f' && file) {
500502 /* substitute current file's dir */
501503 const char *f = file->true_filename;
@@ -810,7 +812,9 @@ LIBTCCAPI TCCState *tcc_new(void) · 308 unmodified lines
810812 #ifdef TCC_TARGET_ARM
811813 s->float_abi = ARM_FLOAT_ABI;
812814 #endif
813−
815+#ifdef CONFIG_NEW_DTAGS
816+ s->enable_new_dtags = 1;
817+#endif
814818 s->ppfp = stdout;
815819 /* might be used in error() before preprocess_start() */
816820 s->include_stack_ptr = s->include_stack;
@@ -943,6 +947,11 @@ LIBTCCAPI int tcc_set_output_type(TCCState *s, int output_type) · 126 unmodified lines
943947 tcc_add_crt(s, "crtbeginS.o");
944948 else
945949 tcc_add_crt(s, "crtbegin.o");
950+#elif defined TARGETOS_ANDROID
951+ if (output_type != TCC_OUTPUT_DLL)
952+ tcc_add_crt(s, "crtbegin_dynamic.o");
953+ else
954+ tcc_add_crt(s, "crtbegin_so.o");
946955 #else
947956 if (output_type != TCC_OUTPUT_DLL)
948957 tcc_add_crt(s, "crt1.o");
tcc.c+3−0
@@ -281,6 +281,9 @@ int main(int argc0, char **argv0) · 280 unmodified lines
281281 redo:
282282 argc = argc0, argv = argv0;
283283 s = s1 = tcc_new();
284+#ifdef CONFIG_TCC_SWITCHES
285+ tcc_set_options(s, CONFIG_TCC_SWITCHES);
286+#endif
284287 opt = tcc_parse_args(s, &argc, &argv, 1);
285288
286289 if (n == 0) {
tccelf.c+12−14
@@ -857,7 +857,7 @@ ST_FUNC void relocate_syms(TCCState *s1, Section *symtab, int do_resolve) · 856 unmodified lines
857857 #if defined TCC_IS_NATIVE && !defined TCC_TARGET_PE
858858 /* dlsym() needs the undecorated name. */
859859 void *addr = dlsym(RTLD_DEFAULT, &name[s1->leading_underscore]);
860−#if TARGETOS_OpenBSD || TARGETOS_FreeBSD || TARGETOS_NetBSD
860+#if TARGETOS_OpenBSD || TARGETOS_FreeBSD || TARGETOS_NetBSD || TARGETOS_ANDROID
861861 if (addr == NULL) {
862862 int i;
863863 for (i = 0; i < s1->nb_loaded_dlls; i++)
@@ -1526,6 +1526,11 @@ ST_FUNC void tcc_add_runtime(TCCState *s1) · 662 unmodified lines
15261526 # if !TARGETOS_OpenBSD
15271527 tcc_add_crt(s1, "crtn.o");
15281528 # endif
1529+#elif TARGETOS_ANDROID
1530+ if (s1->output_type == TCC_OUTPUT_DLL)
1531+ tcc_add_crt(s1, "crtend_so.o");
1532+ else
1533+ tcc_add_crt(s1, "crtend_android.o");
15291534 #else
15301535 tcc_add_crt(s1, "crtn.o");
15311536 #endif
@@ -2272,22 +2277,15 @@ static void tcc_output_elf(TCCState *s1, FILE *f, int phnum, ElfW(Phdr) *phdr, · 740 unmodified lines
22722277 ehdr.e_ident[4] = ELFCLASSW;
22732278 ehdr.e_ident[5] = ELFDATA2LSB;
22742279 ehdr.e_ident[6] = EV_CURRENT;
2280+
22752281 #if TARGETOS_FreeBSD || TARGETOS_FreeBSD_kernel
22762282 ehdr.e_ident[EI_OSABI] = ELFOSABI_FREEBSD;
2277−#endif
2278−#ifdef TCC_TARGET_ARM
2279−#ifdef TCC_ARM_EABI
2280− ehdr.e_ident[EI_OSABI] = 0;
2281− ehdr.e_flags = EF_ARM_EABI_VER4;
2282− if (file_type & (TCC_OUTPUT_EXE | TCC_OUTPUT_DLL))
2283− ehdr.e_flags |= EF_ARM_HASENTRY;
2284− if (s1->float_abi == ARM_HARD_FLOAT)
2285− ehdr.e_flags |= EF_ARM_VFP_FLOAT;
2286− else
2287− ehdr.e_flags |= EF_ARM_SOFT_FLOAT;
2288−#else
2283+#elif defined TCC_TARGET_ARM && defined TCC_ARM_EABI
2284+ ehdr.e_flags = EF_ARM_EABI_VER5;
2285+ ehdr.e_flags |= s1->float_abi == ARM_HARD_FLOAT
2286+ ? EF_ARM_VFP_FLOAT : EF_ARM_SOFT_FLOAT;
2287+#elif defined TCC_TARGET_ARM
22892288 ehdr.e_ident[EI_OSABI] = ELFOSABI_ARM;
2290−#endif
22912289 #elif defined TCC_TARGET_RISCV64
22922290 ehdr.e_flags = EF_RISCV_FLOAT_ABI_DOUBLE;
22932291 #endif
tccgen.c+1−1
@@ -8266,7 +8266,7 @@ static int decl0(int l, int is_for_loop_init, Sym *func_sym) · 8265 unmodified lines
82668266 sym = type.ref;
82678267 if (sym->f.func_type == FUNC_OLD && l == VT_CONST)
82688268 decl0(VT_CMP, 0, sym);
8269−#ifdef TCC_TARGET_MACHO
8269+#if defined TCC_TARGET_MACHO || defined TARGETOS_ANDROID
82708270 if (sym->f.func_alwinl
82718271 && ((type.t & (VT_EXTERN | VT_INLINE))
82728272 == (VT_EXTERN | VT_INLINE))) {
tccpp.c+13−5
@@ -3713,6 +3713,9 @@ static const char * const target_os_defs = · 3712 unmodified lines
37133713 # else
37143714 "__linux__\0"
37153715 "__linux\0"
3716+# if TARGETOS_ANDROID
3717+ "__ANDROID__\0"
3718+# endif
37163719 # endif
37173720 "__unix__\0"
37183721 "__unix\0"
@@ -3724,17 +3727,22 @@ static void putdef(CString *cs, const char *p) · 5 unmodified lines
37243727 cstr_printf(cs, "#define %s%s\n", p, &" 1"[!!strchr(p, ' ')*2]);
37253728 }
37263729
3730+static void putdefs(CString *cs, const char *p)
3731+{
3732+ while (*p)
3733+ putdef(cs, p), p = strchr(p, 0) + 1;
3734+}
3735+
37273736 static void tcc_predefs(TCCState *s1, CString *cs, int is_asm)
37283737 {
37293738 int a, b, c;
3730− const char *defs[] = { target_machine_defs, target_os_defs, NULL };
3731− const char *p;
37323739
37333740 sscanf(TCC_VERSION, "%d.%d.%d", &a, &b, &c);
37343741 cstr_printf(cs, "#define __TINYC__ %d\n", a*10000 + b*100 + c);
3735− for (a = 0; defs[a]; ++a)
3736− for (p = defs[a]; *p; p = strchr(p, 0) + 1)
3737− putdef(cs, p);
3742+
3743+ putdefs(cs, target_machine_defs);
3744+ putdefs(cs, target_os_defs);
3745+
37383746 #ifdef TCC_TARGET_ARM
37393747 if (s1->float_abi == ARM_HARD_FLOAT)
37403748 putdef(cs, "__ARM_PCS_VFP");
tccrun.c+1−1
@@ -390,7 +390,7 @@ static void set_pages_executable(TCCState *s1, int mode, void *ptr, unsigned lon · 389 unmodified lines
390390 tcc_error("mprotect failed: did you mean to configure --with-selinux?");
391391
392392 /* XXX: BSD sometimes dump core with bad system call */
393−# if (TCC_TARGET_ARM && !TARGETOS_BSD) || TCC_TARGET_ARM64
393+# if (defined TCC_TARGET_ARM && !TARGETOS_BSD) || defined TCC_TARGET_ARM64
394394 if (mode == 0 || mode == 3) {
395395 void __clear_cache(void *beginning, void *end);
396396 __clear_cache(ptr, (char *)ptr + length);
tests/Makefile+5−3
@@ -35,8 +35,8 @@ endif · 34 unmodified lines
3535 ifeq (,$(filter arm64 i386 x86_64,$(ARCH)))
3636 TESTS := $(filter-out vla_test-run,$(TESTS))
3737 endif
38−ifeq ($(CONFIG_arm_eabi),yes)
39− TESTS := $(filter-out test3,$(TESTS))
38+ifeq (-$(CONFIG_arm_eabi)-$(CONFIG_arm_vfp)-,-yes--)
39+ TESTS := $(filter-out test3 test1b,$(TESTS))
4040 endif
4141 ifeq (,$(filter i386 x86_64,$(ARCH)))
4242 TESTS := $(filter-out asm-c-connect-test,$(TESTS))
@@ -250,7 +250,7 @@ abitest-% : abitest-%.exe · 207 unmodified lines
250250 ./$< $(TCCFLAGS)
251251
252252 abitest: abitest-cc
253−ifneq ($(CONFIG_arm_eabi),yes) # not ARM soft-float
253+ifneq (-$(CONFIG_arm_eabi)-$(CONFIG_arm_vfp)-,-yes--)
254254 abitest: abitest-tcc
255255 endif
256256
@@ -261,6 +261,8 @@ vla_test-run: vla_test$(EXESUF) · 4 unmodified lines
261261 @echo ------------ $@ ------------
262262 ./vla_test$(EXESUF)
263263
264+.PHONY: abitest vla_test
265+
264266 asm-c-connect$(EXESUF): asm-c-connect-1.c asm-c-connect-2.c
265267 $(TCC) -o $@ $^
266268
tests/tcctest.c+10−5
@@ -21,14 +21,19 @@ · 20 unmodified lines
2121 typedef __SIZE_TYPE__ uintptr_t;
2222 #endif
2323
24−#if defined(_WIN32) || \
25− (defined(__arm__) && \
26− (defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)))
24+#if defined(_WIN32) \
25+ || (defined(__arm__) \
26+ && (defined(__FreeBSD__) \
27+ || defined(__OpenBSD__) \
28+ || defined(__NetBSD__) \
29+ || defined __ANDROID__))
2730 #define LONG_LONG_FORMAT "%lld"
2831 #define ULONG_LONG_FORMAT "%llu"
32+#define XLONG_LONG_FORMAT "%llx"
2933 #else
3034 #define LONG_LONG_FORMAT "%Ld"
3135 #define ULONG_LONG_FORMAT "%Lu"
36+#define XLONG_LONG_FORMAT "%Lx"
3237 #endif
3338
3439 // MinGW has 80-bit rather than 64-bit long double which isn't compatible with TCC or MSVC
@@ -2265,7 +2270,7 @@ double ftab1[3] = { 1.2, 3.4, -5.6 }; · 2230 unmodified lines
22652270
22662271 void float_test(void)
22672272 {
2268−#if !defined(__arm__) || defined(__ARM_PCS_VFP)
2273+#if !defined(__arm__) || defined(__ARM_PCS_VFP) || defined __ANDROID__
22692274 volatile float fa, fb;
22702275 volatile double da, db;
22712276 int a;
@@ -2531,7 +2536,7 @@ void longlong_test(void) · 259 unmodified lines
25312536 b = 0x12345678;
25322537 a = -1;
25332538 c = a + b;
2534− printf("%Lx\n", c);
2539+ printf(XLONG_LONG_FORMAT"\n", c);
25352540 #endif
25362541
25372542 /* long long reg spill test */
tests/tests2/Makefile+2−2
@@ -9,7 +9,7 @@ TESTS = $(patsubst %.c,%.test,\ · 8 unmodified lines
99
1010 # some tests do not pass on all platforms, remove them for now
1111 SKIP = 34_array_assignment.test # array assignment is not in C standard
12−ifeq ($(CONFIG_arm_eabi),yes) # not ARM soft-float
12+ifeq (-$(CONFIG_arm_eabi)-$(CONFIG_arm_vfp)-,-yes--)
1313 SKIP += 22_floating_point.test
1414 endif
1515 ifdef CONFIG_OSX
@@ -27,12 +27,12 @@ ifeq (,$(filter i386 x86_64,$(ARCH))) · 11 unmodified lines
2727 SKIP += 125_atomic_misc.test # currently only x86 supported
2828 endif
2929 ifeq ($(CONFIG_backtrace),no)
30− SKIP += 112_backtrace.test
3130 SKIP += 113_btdll.test
3231 CONFIG_bcheck = no
3332 # no bcheck without backtrace
3433 endif
3534 ifeq ($(CONFIG_bcheck),no)
35+ SKIP += 112_backtrace.test
3636 SKIP += 114_bound_signal.test
3737 SKIP += 115_bound_setjmp.test
3838 SKIP += 116_bound_setjmp2.test

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t