| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
Alignment of unknown sections changed from 32 to PTR_SIZE
This is gcc/pcc default value. This helps to use
tcc as linux kernel compiler.
|
| |
|
|
| |
This code is from "Improve hash performance"
|
| |
|
|
|
| |
Without sorting they run in whatever order readdir returns,
I like it better when the order is reliable (and alphanumeric).
|
| |
|
|
|
|
|
|
|
| |
- uses new `TinyAlloc`-ators for small `TokenSym`, `CString` and
`TokenString` instances
- conditional `TAL_DEBUG` for mem leaks and double frees detection
- on `TAL_DEBUG` collects allocation origin (file + line)
- conditional `TAL_INFO` for allocators stats (in release mode too)
- chain a new allocator twice current capacity on buffer exhaustion
|
| |
|
|
|
|
|
|
|
|
|
|
| |
- better `TOK_HASH_FUNC`
- increases `hash_ident` initial size to 16k (from 8k)
- `cstr_cat` uses single `realloc` + `memcpy`
- `cstr_cat` can append terminating zero
- `tok_str_realloc` initial size to 16 (from 8)
- `parse_define` uses static `tokstr_buf`
- `next` uses static `tokstr_buf`
- fixes two latent bugs (wrong deallocations in libtcc.c:482 and
tccpp.c:2987)
|
| |
|
|
| |
This reverts commit fa2472c17246206ce6947475782de17245eceeea.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
parse_print_line_comment() and parse_print_comment() are
combined and made more simply:
* don't worry about speed with -E option
* don't handle straya in comments
Do we need to handle strays in regular
parse_line_comment() and
parse_comment() ?
|
| |
|
|
|
| |
Taken from David Mertens tcc branch on github
https://github.com/run4flat/tinycc.git
|
| |
|
|
|
| |
* pcc have only __linux__ macro (and no __linux)
* pcc don't have __clear_cache proc
|
| |
|
|
|
| |
This is done by impression of the pcc -C option.
Usual execution path and speed are not changed.
|
| |
|
|
|
| |
with a test program. Problem detected when trying to
compile linux-2.4.37.9 with tcc.
|
| |
|
|
|
| |
gcc 3.4.6 don't understand "#if PATHCMP==stricmp"
where "#define PATHCMP stricmp"
|
| |
|
|
| |
These are used in `libtcc.c` now and cannot remain in `tccpe.c`
|
| |
|
|
| |
This moves listfiles parsing inline in `tcc_parse_args1`
|
| |
|
|
| |
This takes care of case-insensitive filenames (like on win32)
|
| |
|
|
| |
These include all header and source files from source directory
|
| |
|
|
| |
Missed these in e946eb2a4109e0de5f8514457f851897a4824c3e
|
| |
|
|
|
|
|
| |
A problem was in TOK_ASMDIR_text:
- sprintf(sname, ".%s", get_tok_str(tok1, NULL));
+ sprintf(sname, "%s", get_tok_str(tok1, NULL));
When tok1 is '.text', then sname is '..text'
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
From: Vlad Vissoultchev
Date: Tue, 12 Apr 2016 20:43:15 +0300
Subject: Allow tcc arguments to be read from @listfiles
This allows all @ prefixed arguments to be treated as listfiles
containing list of source files or tcc options where each one is on a
separate line. Can be used to benchmark compilation speed with
non-trivial amount of source files.
The impl of `tcc_parse_args` had to be moved to a new function that is
able to be called recursively w/ the original one remaining as a driver
of the new one. Listfiles parsing happens in a new
`args_parser_add_listfile` function that uses `tcc_open`/`tcc_close/inp`
for buffered file input.
|
| |
|
|
|
|
|
|
|
| |
From: Vlad Vissoultchev
Date: Tue, 12 Apr 2016 21:02:43 +0300
Subject: win32: Add missing header files for nginx compilation
The new ones are hoisted from mingw-w64 as most other headers under
`win32/include/winapi`
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
From: Vlad Vissoultchev
Date: Mon, 11 Apr 2016 01:32:28 +0300
Subject: Add VS2015 solution and project files to `win32/vs2015`
directory
This allows release/debug builds for both x86 and x64 targets. Some
warnings had to be suppressed.
Output libtcc.dll and tcc.exe are copied to parent `win32` directory
w/ a post-build action.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
From: Vlad Vissoultchev
Date: Mon, 11 Apr 2016 01:26:32 +0300
Subject: Fix pragma once guard when compiling multiple source files
When compiling multiple source files directly to executable cached
include files guard was incorrectly checked for TOK_once in ifndef_macro
member.
If two source files included the same header guarded by pragma once, then
the second one erroneously skipped it as `cached_includes` is not cleared
on second `tcc_compile`
|
| |
|
|
| |
assign fopen("/dev/null","w") to the s->ppfp insteed of NULL
|
| | |
|
| |
|
|
|
|
|
|
| |
When tccboot kernels compiles with
'Identifiers can start and/or', this kernel don't start.
It is hard to find what is wrong.
PS: there was no test for identifiers in *.S with '.'
|
| |
|
|
|
|
| |
This only silences "cannot find library" error and allows Makefiles targeting gcc to not complain about missing libraries
If there is custom libm then standard handling applies.
|
| |
|
|
|
|
| |
There was already support for -dD option but in contrast -dM dumps only `#define` directives w/o actual preprocessor output.
The original -dD output differs from gcc output by additional comment in front of `#define`s so this quirk is left for -dM as well.
|
| |
|
|
|
|
| |
From gcc docs: "You may also specify attributes between the enum, struct or union tag and the name of the type rather than after the closing brace."
Adds `82_attribs_position.c` in `tests/tests2`
|
| |
|
|
| |
more logical algorithm of the isidnum_table[] changing
|
| |
|
|
|
|
|
| |
we use gnu extension "case 0x80 ... 0xFF" for tcc & gcc
and perform test
if(c & 0x80)
for other compilers
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
made like in pcc
(pcc.ludd.ltu.se/ftp/pub/pcc-docs/pcc-utf8-ver3.pdf)
We treat all chars with high bit set as alphabetic.
This allow code like
#include <stdio.h>
int Lefèvre=2;
int main() {
printf("Lefèvre=%d\n",Lefèvre);
return 0;
}
|
| |
|
|
| |
a test included.
|
| |
|
|
|
| |
compilation speed of the tccboot restored
(patch remove testing of the parse_flags in loop)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
modified version of the old one which don't allow '.'
in #define Identifiers. This allow correctly preprocess
the following code in *.S
#define SRC(y...) \
9999: y; \
.section __ex_table, "a"; \
.long 9999b, 6001f ; \
// .previous
SRC(1: movw (%esi), %bx)
6001:
A test included.
|
| | |
|
| |
|
|
|
|
| |
This reloction must copy initialized data from the library
to the program .bss segment. Currently made like for ARM
(to remove noise of defaukt case). Is this true?
|
| |
|
|
|
|
| |
remove non-existent or duplicate directories from include paths
if -fnormalize-inc-dirs is specified. This will help
to compile current coreutils package
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Identifiers can start and/or contain '.' in PARSE_FLAG_ASM_FILE
- Move all GAS directives under TOK_ASMDIR prefix
This patches breaks compilation of the tccboot (linux 2.4.26
kernel). A test.S which fails with this patches:
#define SRC(y...) \
9999: y; \
.section __ex_table, "a"; \
.long 9999b, 6001f<---->; \
.previous
SRC(1:<>movw (%esi), %bx<------>)
// 029-test.S:7: error: macro 'SRC' used with too many args
|
| |
|
|
|
|
|
|
|
| |
Code like this was broken:
char volatile vi = i;
See testcase, happens in ideosyncratic legacy code sprinkling
volatile all over.
|
| |
|
|
|
| |
We really need to use PEEKC during tokenization so as to
skip line continuations automatically.
|
| |
|
|
|
|
| |
the check on incomplete struct/union/enum types was too early,
disallowing mixed specifiers and qualifiers. Simply rely on
the size (->c) field for that. See testcases.
|
| |
|
|
| |
Use only these tokens in `asm_parse_directive` and don't recycle others' tokens (like TOK_SECTION1)
|
| |
|
|
| |
Including labels, directives and section names
|
| |
|
|
| |
`macro_arg_subst`
|
| |
|
|
| |
Compiled tcc.exe location is under $(top_srcdir)/win32
|
| | |
|
| |
|
|
| |
build-tcc.bat
|
| | |
|
| |
|
|
| |
expansion
|