The apple m1 uses position independent executables (pie). I have implemented this in tccmacho.c Apple also uses the stack different for var_args. Also characters are signed instead of unsigned. This is implemented in arm64-gen.c/tccdefs.h Add bounds checking lib to lib/Makefile. Add underscore support in lib/atomic.S and lib/fetch_and_add.S Disable __clear_cache in lib/lib-arm64.c (Use system version). I will try to fix this in future push. Disable test_asm_call in tests/tcctest.c. Clang does not support @plt. Also disable weak symbols test. I will try to fix weak support in future push. Disable tests/tests2/124_atomic_counter.c for 64BITS. This is a bug in the atomic code and will be fixed in future push. You have to use --dwarf configure option. stabs only works with -run. tested on apple x86_64(10.5) and arm64(12.3).
Showing the changes to include (1 of 10 files). Show all
Unified · Split
| @@ -207,11 +207,18 @@ · 206 unmodified lines | ||
| 207 | 207 | &~3), *(type *)(ap - ((sizeof(type)+3)&~3))) |
| 208 | 208 | |
| 209 | 209 | #elif defined __aarch64__ |
| 210 | +#if defined __APPLE__ | |
| 211 | + typedef struct { | |
| 212 | + void *__stack; | |
| 213 | + } __builtin_va_list; | |
| 214 | + | |
| 215 | +#else | |
| 210 | 216 | typedef struct { |
| 211 | 217 | void *__stack, *__gr_top, *__vr_top; |
| 212 | 218 | int __gr_offs, __vr_offs; |
| 213 | 219 | } __builtin_va_list; |
| 214 | 220 | |
| 221 | +#endif | |
| 215 | 222 | #elif defined __riscv |
| 216 | 223 | typedef char *__builtin_va_list; |
| 217 | 224 | #define __va_reg_size (__riscv_xlen >> 3) |