aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Fix to test for HOST_OS not TARGETOSRaphael Cohn2015-04-071-1/+1
|
* Fixing bug for Linux x86_64 introduced in previous macosx commitRaphael Cohn2015-04-071-2/+2
|
* Adjusted configure host_os to use uname for DarwinRaphael Cohn2015-04-072-2/+11
| | | | | Adjusted Makefile to make it Darwin (Mac OS X 10.10)-friendly for cross-compilers by removing the creation of arm64 cross-compilers on this platform.
* Adjusted configure to be more BSD friendlyRaphael Cohn2015-04-071-1/+1
|
* a small revers for bcheck.o changes (d80593bc4d43)seyko2015-03-301-1/+1
| | | | | | replacing (addr > e->size) with (addr >= e->size) was correct only in one place, a second replacing is reversed by this commit.
* Fix for Microsoft compilersseyko2015-03-292-2/+2
| | | | | Miccrosoft Visual Sudio (Express) 2008 and 2010 do not accept variable definitions C99 style, reported by Fabio <oldfaber@gmail.com>
* fix for the bcheck.o (bug #14958)seyko2015-03-292-14/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | - care about __attribute__ redefinition in the system headers - an invalid pointer must be returned when (addr >= e->size), and not (addr > e->size) A test program: #include <stdio.h> #include <stdlib.h> int main () { int v[10]; fprintf(stderr, "&v[0] = %p\n", &v[0]); fprintf(stderr, "&v[10] = %p\n", &v[10]); exit(1); return 0; } // tcc -b test.c The output before a patch: &v[0] = 0xbf929d8c &v[10] = 0xbf929db4 The output after a patch: &v[0] = 0xbff6e33c &v[10] = 0xfffffffe
* fix: try to add a bounds.o only if __bounds_init not foundseyko2015-03-281-3/+6
| | | | | | | | | | | | | | | /usr/local/lib/tcc/i386/bcheck.o: error: '__bound_error_msg' defined twice #include <stdio.h> int main () { #if 1 int v[10]; v[10] = 0; fprintf(stderr, "is bounds error catched?\n"); #endif return 0; } // tcc -b test.c
* fix for the previous commit (compilation on RPi)seyko2015-03-262-2/+2
|
* make a bound checking more compatible with Windows 64seyko2015-03-266-53/+53
| | | | | | On Linux 32: sizeof(long)=32 == sizeof(void *)=32 on Linux 64: sizeof(long)=64 == sizeof(void *)=64 on Windows 64: sizeof(long)=32 != sizeof(void *)=64
* fix for the previous commit: tcc_add_support() was used before definitionseyko2015-03-261-25/+25
|
* fix: enforce bcheck.o linking when -b option is usedseyko2015-03-262-1/+10
| | | | | fixes a crash for the empry program (tcc -b empty.c) empty.c: int main() { return 0; }
* fix a bug #43984: tcc -run reports errno=2seyko2015-03-251-0/+4
| | | | | | | | | The following program (errno.c) reports errno=2 when run using "tcc -run errno.c" #include <errno.h> #include <stdio.h> int main(void) { printf("errno=%d\n", errno); return 0; }
* fix for a -dumpversion option: move it before -dDseyko2015-03-231-2/+2
| | | | | | | Options must be sorted and a long one must preceed a short one. What was before: tcc -dumpversion tcc: error: invalid option -- '-dumpversion'
* fix for: x86_64-tcc compiled by i386-tcc is wrongseyko2015-03-233-4/+4
| | | | | | | | | | | | | | | | | | | | | A test program (must be compiled by the above version of the tcc): /* Tickle a bug in TinyC on 64-bit systems: * the LSB of the top word or ARGP gets set * for no obvious reason. * * Source: a legacy language interpreter which * has a little stack / stack pointer for arguments. * * Output is: 0x8049620 0x10804961c * Should be: 0x8049620 0x804961c */ #include <stdio.h> #define NARGS 20000 int ARG[NARGS]; int *ARGSPACE = ARG; int *ARGP = ARG - 1; main() { printf("%p %p\n", ARGSPACE, ARGP); }
* fix a gcc compiler warning for the previous commitseyko2015-03-231-1/+1
| | | | mark a constant as long long (or -std=gnu99 is needed)
* revert a commit: Work around for the issue TCC doesn't handle -2147483648 ↵seyko2015-03-231-1/+1
| | | | | | | properly because a tcc handle now -2147483648 properly. Look a commit: Make integer constant parsing C99 compliant
* A right fix for the array in struct initialization w/o '{'seyko2015-03-234-21/+116
| | | | | Parse a type if there is only one '(' before a type token. Otherwise a recursion will perform a job.
* Revert of the commit: fix for the array in struct initialization w/o '{', case 2seyko2015-03-231-16/+9
| | | | A right solution for this problem will follow.
* quick fix for the native tcc on debian/ubuntuseyko2015-03-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Force to use a NATIVE_DEFINES insteed of the DEFINES for the native tcc. After this change we have on debian/ubuntu # ./x86_64-tcc -vv tcc version 0.9.26 (x86-64, Linux) install: /usr/local/lib/tcc crt: /usr/lib/x86_64-linux-gnu libraries: /usr/lib/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib /usr/local/lib/x86_64-linux-gnu /usr/local/lib include: /usr/local/include/x86_64-linux-gnu /usr/local/include /usr/include/x86_64-linux-gnu /usr/include /usr/local/lib/tcc/include elfinterp: /lib64/ld-linux-x86-64.so.2 Before this change the output was # ./x86_64-tcc -vv tcc version 0.9.26 (x86-64, Linux) install: /usr/local/lib/tcc crt: /usr/lib libraries: /usr/lib /lib /usr/local/lib include: /usr/local/include /usr/include /usr/local/lib/tcc/include elfinterp: /lib64/ld-linux-x86-64.so.2 This change don't fix a cross compilers
* configure: don't output CONFIG_LDDIR when build_cross = "yes"seyko2015-03-211-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | This fixes i386-tcc on CentOS 7. After patch [root@centos7 tinycc]# ./i386-tcc -vv tcc version 0.9.26 (i386, Linux) install: /usr/local/lib/tcc crt: /usr/lib libraries: /usr/lib /lib /usr/local/lib Before patch: [root@centos7 tinycc]# ./i386-tcc -vv tcc version 0.9.26 (i386, Linux) install: /usr/local/lib/tcc crt: /usr/lib64 libraries: /usr/lib64 /lib64 /usr/local/lib64
* skip 73_arm64,test on ARCH=x86-64: it fails on this ARCHseyko2015-03-201-0/+3
|
* restore a linux 2.4.26 kernel compilation (commit 5bcc3eed7b93 correction)seyko2015-03-201-1/+5
| | | | | | | | The following check in tccgen.c is removed if (nocode_wanted) tcc_error("statement expression in global scope"); This check is introduced in commit 5bcc3eed7b93 and breaks compilation of the linux 2.4.26 kernel.
* correction for the previous commitseyko2015-03-201-2/+2
| | | | use "x86-64" as a directory name for the libtcc1.a installation when cross-compiling.
* libtcc1.a while "configure --enable-cross"seyko2015-03-202-7/+10
| | | | | build and install libtcc1.a for i386, x86_64 and arm64 (libtcc1.a for x86_64 was not installed on i386)
* "configure --enable-cross" on x86: build a libtcc1.a for x86_64seyko2015-03-192-5/+3
|
* fix to allow build tcc by build-tcc.batseyko2015-03-194-4/+4
| | | | | move call to print_defines() from tcc.c to the libtcc.c define a print_defines() as a ST_FUNC
* Convert some lines from ISO-8859-1 to UTF-8.Edmund Grimley Evans2015-03-114-10/+10
| | | | | | | | perl -i -pe 'use Text::Iconv; $c1 = Text::Iconv->new("utf-8", "utf-8"); $c2 = Text::Iconv->new("iso-8859-1", "utf-8"); if (!$c1->convert($_)) { $_ = $c2->convert($_); }' \ `find * -type f`
* .gitignore: Add lib/arm64.Edmund Grimley Evans2015-03-101-0/+1
|
* tccgen.c: (!nocode_wanted) -> (nocode_wanted) in arm64 part.Edmund Grimley Evans2015-03-101-2/+2
|
* Add some missing nocode_wanted guardThomas Preud'homme2015-03-104-16/+30
| | | | | | int i = i++ causes a segfault because of missing guard. Looking recursively at all backend functions called from middle end several more guard appeared to be missing.
* lib/Makefile: Partial revert of 896a0c881ac3.Edmund Grimley Evans2015-03-101-1/+0
| | | | lib/lib-arm64.c must be compiled by tcc.
* A correction for the commit: revert a grischka patch: gdb refused to know "main"seyko2015-03-101-0/+7
| | | | | keep revert (check SHF_ALLOC) only for x86 target and keep a grishka patch for other targets
* don't use a *-tcc to compile *.S files for ARM*seyko2015-03-101-0/+2
| | | | | A tcc for ARM* don't have an assembler. This is partial reverse of the commit build-libtcc1-by-tcc: use a new tcc to compile a libtcc1.c and alloca.S
* A native tcc for MSYS (Windows) must be i386-win-tcc.exe and not i386-tcc.exeseyko2015-03-102-1/+17
| | | | | i386-tcc.exe is a compiler for i386 Linux. A HOST_OS variable in Makefile is introduced and used to select a native compiler (which one to name as tcc.exe)
* x86-64: Fix stdarg for large non-float structsMichael Matz2015-03-091-4/+3
| | | | | | | | | | Some structs are passed in registers. When they need more than one the implementation of __va_arg on x86-64 didn't correctly account for this. This fixes only the cases where the structs consist of integer types, as there the register save area is consecutive. Fixes some tests from 73_arm64.c, but still leaves those failing that use floating point in the large-but-regpassed structs.
* Remove incorrect commentMichael Matz2015-03-091-2/+0
| | | | Not the code was confused, I was :)
* Find libtcc1.a on arm32Michael Matz2015-03-091-1/+1
| | | | The directory is called "arm", not "ARM".
* Fix stack overwrite on structure returnMichael Matz2015-03-097-17/+26
| | | | | | | | | The common code to move a returned structure packed into registers into memory on the caller side didn't take the register size into account when allocating local storage, so sometimes that lead to stack overwrites (e.g. in 73_arm64.c), on x86_64. This fixes it by generally making gfunc_sret also return the register size.
* arm64: Implement __clear_cache.Edmund Grimley Evans2015-03-085-1/+63
| | | | | | __clear_cache is defined in lib-arm64.c with a single call to __arm64_clear_cache, which is the real built-in function and is turned into inline assembler by gen_clear_cache in arm64-gen.c
* tests/Makefile: Quote to avoid: /bin/sh: 1: [: !=: unexpected operatorEdmund Grimley Evans2015-03-071-1/+1
|
* arm64: Optimise some integer operations with a constant operand.Edmund Grimley Evans2015-03-073-2/+243
|
* tccgen.c: Optimise 0<<x, 0>>x, -1>>x, x&0, x*0, x|-1, x%1.Edmund Grimley Evans2015-03-071-10/+25
| | | | | | | | | More precisely, treat (0 << x) and so on as constant expressions, but not if const_wanted as we do not want to allow "case (x*0):", ... Do not optimise (0 / x) and (0 % x) here as x might be zero, though for an architecture that does not generate an exception for division by zero the back end might choose to optimise those.
* arm64-gen.c: In load(), do not sign-extend 32-bit VT_CONST.Edmund Grimley Evans2015-03-071-2/+2
|
* fix for the array in struct initialization w/o '{', case 2seyko2015-03-071-9/+16
| | | | | | | | | | | | | | a test program: struct { int a[2], b[2]; } cases[] = { { ((int)0), (((int)0)) }, ((int)0), (((int)0)) /* error: ',' expected (got ")") */ }; int main() { return 0; } This commit allow to skip ')' in the decl_initializer() and to see ','
* Add __builtin_return_address.Edmund Grimley Evans2015-03-062-1/+14
| | | | | | Implementation is mostly shared with __builtin_frame_address. It seems to work on arm64, i386 and x86_64. It may need to be adapted for other targets.
* Makefile: install tcc$(EXESUF) as symlink to the $(ARCH)-tccseyko2015-03-061-4/+2
|
* Makefile: add dependencies for $($(I386_CROSS)_LINK), ...seyko2015-03-061-8/+7
| | | | | This is another solution for the make process. Commit 4b92dbf9237c is reverted.
* Makefile leftover of rev 44c6e99Roy2015-03-061-2/+2
|
* fixing decl_initializer() for size_only: don't eat ')'seyko2015-03-051-2/+8
| | | | | | | | | | a test program: struct { int c[1]; } s1[] = { (int)0 }; /* OK */ struct { int c[1]; } s2[] = { { ((int)0) } }; /* OK */ struct { int c[1]; } s3[] = { 0 }; /* OK */ struct { int c[1]; } sx[] = { ((int)0) }; /* error: ')' expected (got "}") */ int main() { return 0; }