| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |
|
|
| |
Also make some functions more portable.
|
| | |
|
| | |
|
| |
|
|
|
| |
to build tcc with bound checking
./configure --cc=tcc --extra-cflags-b
|
| | |
|
| |
|
|
| |
Allow other flags too...
|
| |
|
|
| |
Use native Windows API via wrapper with stat-like API.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
round and fmin/fmax are relatively commonly used functions but were not
implemented anywhere in the tcc Windows distribution package. Newer mingw(64)
math.h stil doesn't include these implementations.
Add C implementations for these functions and place it as inline functions at
win32/include/tcc/tcc_libm.h - which is already included from math.h .
The code is mostly taken from musl-libc rs-1.0 (MIT) [*],
musl-libc: http://git.musl-libc.org/cgit/musl/tree/src/math?h=rs-1.0
license: http://git.musl-libc.org/cgit/musl/tree/COPYRIGHT?h=rs-1.0
Potential enhancements:
- Check how many useful libm implementations are still missing and consider
adding them (some of them already work via the MS runtime).
- Consider putting libm implementations in an actual libm.a file, or add a dummy
one such that build processes which try to link with libm will not fail.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The asm code cannot currently be used with tcc since tcc doesn't support 't'
constraint.
Use inline C implementation instead, place it win32/include/tcc/tcc_libm.h, and
include it from win32/include/math.h.
Since fpclassify now works, it also fixes few other macros which depend on it.
Implicitly fixed: isfinite, isinf, isnan, isnormal.
The implementations were taken from musl-libc rs-1.0 (MIT license).
musl-libc: http://git.musl-libc.org/cgit/musl/tree/src/math?h=rs-1.0
license: http://git.musl-libc.org/cgit/musl/tree/COPYRIGHT?h=rs-1.0
|
| |
|
|
|
|
| |
It was broken due to tcc not able to compile asm with 't' constraint, and it's
still broken because fpclassify on which it now depends has the same issue. Next
commit will fix this.
|
| |
|
|
|
|
| |
This reverts commit 45bc50596874ec7cb26aac3dca3339ba25086436.
The new asm code did not work as expected. Coordinated with seiko.
|
| |
|
|
| |
A case for the absolute path: prevent an error after openening
|
| |
|
|
| |
goto removed
|
| |
|
|
| |
This should have been part of b051549. Someone should test on ARM.
|
| | |
|
| |
|
|
|
|
| |
curremtly no one will try to compile a linux kernel
from the boot loader. With current tcc it is not
possible w/o additional tuning.
|
| |
|
|
|
|
|
|
|
|
|
| |
./configure --enable-cross
make
tcc -o i386-tcc tcc.c
tcc -o x86_64-tcc tcc.c
tcc -o i386-win-tcc tcc.c
In file included from tcc.c:22:
In file included from libtcc.c:39:
tccgen.c:2580: error: 'TOK_memmove' undeclared
|
| |
|
|
|
| |
a cross-compilation from unix to win32 need a "sys/stat.h"
include file
|
| |
|
|
|
|
|
|
|
| |
include dirs are prepared as in gcc
- for each duplicate path keep just the first one
- remove each include_path that exists in sysinclude_paths
include_next streamlined by introducing inc_path_index
in the BufferedFile
|
| |
|
|
|
| |
replaced by loading a float argument from memory and
using the "m" modifier
|
| | |
|
| |
|
|
|
|
| |
Also, in tok_str_add2, use memcpy instead of the illegal cast.
Unfortunately, I can't see an easy way of fixing the bug.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
arm64-gen.c: Implement gen_vla_sp_save, gen_vla_sp_restore, gen_vla_alloc.
tests/Makefile: Run vla_test on arm64.
|
| |
|
|
| |
An error message is changed to suggest -fcommon
|
| |
|
|
|
|
|
|
|
|
|
| |
gcc-3.4.6 don't give such error by default
example file1
char __version_303_xxxxxxxx;
void func1() {}
example file2
char __version_303_xxxxxxxx;
void func2() {}
int main() { return 0; }
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This version looks rigth. Comparing to the original
algorithm:
1) Loop breaking. We remember a start point after wich
we can try next path. Do not search include stack after
this.
2) But compare next file patch with the start point.
Skip if it the same. Remove "./" before comparing.
PS: a problems with compaling a coreutils-8.24.51-8802e
remain. There are errors messages like:
src/chgrp
src/chown-core.c:42: multiple definition of `make_timespec'
src/chgrp.c:42: first defined here
A problem is in the lib/config.h
#define _GL_INLINE_ extern inline // gcc
#define _GL_INLINE_ inline // tcc
A long description from the lib/config.h
* suppress extern inline with HP-UX cc, as it appears to be broken
* suppress extern inline with Sun C in standards-conformance mode
* suppress extern inline on configurations that mistakenly use
'static inline' to implement functions or macros in standard
C headers like <ctype.h>.
GCC and Clang are excluded from this list. Why not tcc?
|
| |
|
|
|
|
|
|
|
|
| |
don't give an error and simply ingnore directive
if we detect a loop of the #include_next.
With this aproach coreutils-8.24.51-8802e
compiles, but with errors:
lib/libcoreutils.a: error: 'xnmalloc' defined twice
lib/libcoreutils.a: error: 'xnrealloc' defined twice
|
| |
|
|
|
|
|
|
|
| |
A more correct fix. This one don't break old logic.
But if include file is not found, we try to search
again with the new compare rule.
A description of the problem:
http://permalink.gmane.org/gmane.comp.compilers.tinycc.devel/2769
|
| |
|
|
| |
a next version of the patch will follow
|
| |
|
|
| |
skip include file only if include_file_name=current_file_name
|
| |
|
|
|
|
|
|
|
| |
don't panic with
error: '.' expected
if there is only two '.' chars. Return tok='.' in such case.
An asm code to test:
jz do_move0 # .. then we have a normal low
# .. or else we have a high
|
| |
|
|
|
|
|
|
| |
The call to build_got can cause symtab_section->data to be reallocated
(build_got -> add_elf_sym -> put_elf_sym -> section_ptr_add ->
section_realloc -> tcc_realloc). This is not obvious on a cursory
inspection, but fortunately Valgrind spotted it immediately.
Are there other, similar bugs that Valgrind did not detect?
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
don't crash
a test program:
================
typedef struct X { int len; } X;
#define init(s,len) s.len = len;
int main(void) {
X myX;
init(myX,10);
return 0;
}
================
After a patch:
error: field name expected
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
a test program:
========
typedef struct X { int len; } X;
int main(void) {
X myX;
myX.10 = 10;
return 0;
}
========
Error message before a patch:
error: ';' expected (got "(null)")
After a patch:
error: field name expected
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
patch from Anaƫl Seghezzi
a test program:
============================
#include <stdio.h>
struct fl4{ float x, y, z, w; };
void asm_test(void)
{
struct fl4 v1, v2, v3;
v1.x = 0.1;
v1.y = 0.2;
v1.z = 0.4;
v1.w = 0.3;
v2.x = 0.11;
v2.y = 0.0;
v2.z = 0.01;
v2.w = 0.04;
asm volatile (
"movups %0, %%xmm0;"
"movups %1, %%xmm1;"
"addps %%xmm1, %%xmm0;"
"movups %%xmm0, %2"
:: "g" (v1), "g" (v2), "g" (v3) : "memory");
printf("sse fl4 add : %f %f %f %f\n", v3.x, v3.y, v3.z, v3.w);
printf("expected : %f %f %f %f\n", v1.x+v2.x, v1.y+v2.y, v1.z+v2.z, v1.w+v2.w);
}
int main() { asm_test(); }
/*
sse fl4 add : 0.210000 0.200000 0.410000 0.340000
expected : 0.210000 0.200000 0.410000 0.340000
*/
============================
|
| |
|
|
| |
They also responded to my mail with a YES.
|