grischka
d165e87340
libtcc: new api tcc_set_lib_path
2009-04-18 15:08:03 +02:00
grischka
73ba078d2f
tcc_relocate: return error and remove unused code
2009-04-18 15:08:03 +02:00
Shinichiro Hamaji
d36fea34e3
Call relocate_sym() before we return the offset, so user doesn't need to check the return value twice.
2009-04-18 15:08:03 +02:00
grischka
dd5630ff95
tcc -E: fix pasting empty tokens
...
/* test case */
#define t(x,y,z) x ## y ## z
int j[] = { t(1,2,3), t(,4,5), t(6,,7), t(8,9,),
t(10,,), t(,11,), t(,,12), t(,,) };
tcc -E: xpected result:
int j[] = { 123, 45, 67, 89,
10, 11, 12, };
2009-04-18 15:08:02 +02:00
grischka
0f0ed4a8bf
tcc -E: preserve spaces, alternative solution
...
/* test case */
#define STR(x) #x
#define MKSTR(x) STR(x)
MKSTR(-A-)
MKSTR(+ B +)
tcc -E: expected result:
"-A-"
"+ B +"
2009-04-18 15:08:02 +02:00
grischka
90697c4c56
CONFIG_TCC_STATIC: add dummy for dlclose
2009-04-18 15:08:02 +02:00
grischka
d62301b050
avoid warning uninitialized
2009-04-18 15:08:02 +02:00
Shinichiro Hamaji
9a7173bf69
x86-64: Fix tcc -run. We need extra memory for PLT and GOT.
...
Size of the extra buffer is too large for now.
2009-04-18 15:08:02 +02:00
grischka
e6ba81b012
get rid of 8 bytes memory leak
2009-04-18 15:08:02 +02:00
grischka
b1697be691
change tcc_add/get_symbol to use void*
2009-04-18 15:08:02 +02:00
grischka
795f67428e
alternative int tcc_relocate(TCCState *s1, void *ptr);
2009-04-18 15:08:02 +02:00
grischka
9a8b2912ed
TOK_builtin_malloc: alternative solution
2009-04-18 15:08:02 +02:00
Shinichiro Hamaji
39a4b859d4
x86-64: Fix cast from integers to pointers.
...
Now,
./tcc -run -DTCC_TARGET_X86_64 tcc.c -run tcctest.c
works!
2009-04-18 15:08:02 +02:00
Shinichiro Hamaji
83fd36333a
Fixes for issues I've just found/introduced to x86 TCC.
...
- Cast from pointer to long long makes TCC output an error. Use cast to int before we apply shift operation for a pointer value.
- Removed test cases for casts from pointer to char/short because they produce warning.
2009-04-18 15:08:01 +02:00
Shinichiro Hamaji
be43c8e0ed
x86-64: Cast from 64bit pointer to long long must not generate movslq.
2009-04-18 15:08:01 +02:00
grischka
a9c78d04f2
win32: accept uppercase filename suffixes
2009-04-18 15:08:01 +02:00
Shinichiro Hamaji
b879ffa193
x86-64: There can be valid addresses which is greater than 0xc0000000.
2009-04-18 15:08:01 +02:00
Shinichiro Hamaji
de3f0a46fe
Fix for x86-64: The first and second arguments of memcpy must be pointers.
2009-04-18 15:08:01 +02:00
Shinichiro Hamaji
2e9b57b6d0
Fix silly typos in the previous change.
2009-04-18 15:08:01 +02:00
Shinichiro Hamaji
9fe28b610e
x86-64: Make ABI for long double compatible with GCC.
...
- Now we use x87's stack top the long double return values.
- Add rc_fret and reg_fret, wrapper functions for RC_FRET and REG_FRET.
- Add a test case to check if strto* works OK.
2009-04-18 15:08:01 +02:00
Shinichiro Hamaji
fcf2e5981f
x86-64: Combine buffers of sections before we call tcc_run().
...
- Now we can run tcc -run tcc.c successfully, though there are some bugs.
- Remove jmp_table and got_table and use text_section for got and plt entries.
- Combine buffers in tcc_relocate().
- Use R_X86_64_64 instead of R_X86_64_32 for R_DATA_32 (now the name R_DATA_32 is inappropriate...).
2009-04-18 15:08:01 +02:00
Shinichiro Hamaji
830b7533c9
Generate PIC code so that we can create shared objects properly.
...
- Add got_table in TCCState. This approach is naive and the distance between executable code and GOT can be longer than 32bit.
- Handle R_X86_64_GOTPCREL properly. We use got_table for TCC_OUTPUT_MEMORY case for now.
- Fix load() and store() so that they access global variables via GOT.
2009-04-18 15:08:01 +02:00
grischka
6c10429aa5
check for absolute include paths
...
Suggested by Sandor Zsolt <narkoskatona@yahoo.com>
2009-04-18 15:07:28 +02:00
grischka
29c8e1545a
get rid of "free_section problem" with private sections
2009-04-18 15:07:28 +02:00
grischka
5818945ef6
accept "restrict" in array-decl (STDC 199901)
2009-04-18 15:07:27 +02:00
grischka
0e015988cc
i386: apply "align=8 for doubles ..." for PE only
2009-04-18 15:07:27 +02:00
Shinichiro Hamaji
e6db5f5fb6
x86-64 bug fix: Use stack with alignment just like 32bit environments.
2009-04-18 15:07:09 +02:00
Shinichiro Hamaji
ebb874e216
Remove multiple definition error caused by combination of x86-64 and va_list.
...
We need malloc and free to implement va_start and va_end.
Since malloc and free may be replaced by #define, we add __builtin_malloc and __builtin_free.
2009-04-18 15:07:09 +02:00
Shinichiro Hamaji
6512d9e2ea
Add check for invalid numbers.
...
If there are some characters after TCC parses a number, it is an error.
This bug was reported on list:
http://www.mail-archive.com/tinycc-devel@nongnu.org/msg02014.html
2009-04-18 15:07:09 +02:00
Shinichiro Hamaji
af6cbc48d1
Fix overrun in decl_initializer_alloc.
...
This bug was reported on
http://lists.gnu.org/archive/html/tinycc-devel/2009-03/msg00035.html
This happens because parser of array initializer doesn't stop to read until semi-colon or comma.
2009-04-18 15:07:09 +02:00
Shinichiro Hamaji
006c907da7
Code cleaning: utilize vpushll().
2009-04-18 15:07:09 +02:00
Shinichiro Hamaji
4f056031f4
Support long long bitfields for all architectures.
...
- Modified gv() and vstore(), added vpushll().
- Added a test case for long long bitfields.
- Tested on x86 and x86-64.
2009-04-18 15:07:09 +02:00
Shinichiro Hamaji
ae607280c5
Allow long long as a type of bitfields on x86-64.
2009-04-18 15:07:08 +02:00
grischka
3116744bdd
i386: align=8 for double and long long
2009-04-18 15:07:08 +02:00
grischka
b41fc95566
win32: fix for VC8Express compiler
2009-04-18 15:07:08 +02:00
Kirill Smelkov
00f0932760
tcc -E: preserve spaces (partial solution)
...
Recently I needed to trim storage space on an embedded distro which has
X.
X depend on cpp which is ~8MB in size as shipped in Debian, so the idea
was to remove cpp and use `tcc -E` instead where appropriate.
I've done this with the following 'hack' put inplace of /usr/bin/cpp :
#!/bin/sh -e
TCC=/home/kirr/local/tcc/bin/tcc
last="${!#}"
# hack to distinguish between '... -D...' and '... file'
if test -r "$last"; then
exec $TCC -E "$@"
else
exec $TCC -E "$@" -
fi
But the problem turned out to be in `tcc -E` inability to preserve
spaces between tokens. So e.g. the following ~/.Xresources
XTerm*VT100*foreground: black
...
got translated to
XTerm * VT100 * foreground : black
which is bad, bacause now X don't understand it.
Below is a newbie "fix" for the problem.
It still does not preserve spaces on macro expansion, but since the fix
cures original problem, I think it is at least one step forward.
Signed-off-by: Kirill Smelkov <kirr@landau.phys.spbu.ru>
2009-04-18 15:07:08 +02:00
Alexander Egorenkov
5a044b67bb
type_size function returned incorrect size
...
of multi dimensional arrays if dimension is divisable by 2
2009-04-18 15:07:08 +02:00
grischka
64147b346b
fix constant optimization for unsigneds
2009-04-18 15:07:08 +02:00
grischka
7c3f19c079
fix data overflow with init_putv
...
The simplest code to reproduce this bug seems to be
int a[][] = {{1,1,1,1,1,1,1}};
2008-12-02 02:36:27 +01:00
Shinichiro Hamaji
0a9873aa22
Add support of x86-64.
...
Most change was done in #ifdef TCC_TARGET_X86_64. So, nothing should be broken by this change.
Summary of current status of x86-64 support:
- produces x86-64 object files and executables.
- the x86-64 code generator is based on x86's.
-- for long long integers, we use 64bit registers instead of tcc's generic implementation.
-- for float or double, we use SSE. SSE registers are not utilized well (we only use xmm0 and xmm1).
-- for long double, we use x87 FPU.
- passes make test.
- passes ./libtcc_test.
- can compile tcc.c. The compiled tcc can compile tcc.c, too. (there should be some bugs since the binary size of tcc2 and tcc3 is differ where tcc tcc.c -o tcc2 and tcc2 tcc.c -o tcc3)
- can compile links browser. It seems working.
- not tested well. I tested this work only on my linux box with few programs.
- calling convention of long-double-integer or struct is not exactly the same as GCC's x86-64 ABI.
- implementation of tcc -run is naive (tcc -run tcctest.c works, but tcc -run tcc.c doesn't work). Relocating 64bit addresses seems to be not as simple as 32bit environments.
- shared object support isn't unimplemented
- no bounds checker support
- some builtin functions such as __divdi3 aren't supported
2008-12-02 02:30:47 +01:00
Shinichiro Hamaji
1e776b29d3
Suport LDOUBLE_SIZE == 16 environment.
2008-12-02 02:26:40 +01:00
Shinichiro Hamaji
c92daa02e4
One more s/int/long/
2008-12-02 02:26:11 +01:00
Shinichiro Hamaji
2355fc7686
Use long instead of int to hold pointer values.
2008-12-02 02:26:03 +01:00
Shinichiro Hamaji
d6072d3703
Add __builtin_frame_address(0)
...
Adding the GCC extension __builtin_frame_address(). We support only zero as the argument for now.
With this functionality, we can implement GCC compatible stdarg by macros in x86-64.
2008-12-02 02:25:59 +01:00
Shinichiro Hamaji
7dd792ef51
Introduce ElfW macro and ELFW to encapsulate the difference between Elf32_* and Elf64_*. Also, introduce ElfW_Rel and SHT_RELX for difference between REL and RELA.
2008-12-02 02:25:45 +01:00
Daniel Glöckner
76b02c2a03
Futher changes to casts
...
nocode_wanted can't be used to enforce constant expressions, as it is
set f.ex. by __builtin_constant_p.
A null pointer is unequal to a pointer to any object or function.
Assuming symbols always point to memory, a symbol+constant cast to bool
is always true.
2008-11-30 07:21:49 +01:00
Daniel Glöckner
5fd6f7bd44
Fix get_tok_str wrt wide characters
...
Fixes both, character constants and string literals.
2008-11-30 07:21:46 +01:00
Daniel Glöckner
deb410710c
Rewrote '?' for constants
...
The condition is now cast to _Bool and it now works with return
types bigger than 32 bit.
2008-11-30 07:21:42 +01:00
Daniel Glöckner
1b599ea7f8
Cast parameter of '!' to _Bool
2008-11-30 07:21:35 +01:00
Daniel Glöckner
2d9b5e0bb8
Rewrote casts
...
Casting of constants was done only inside functions.
I restructured the code and used intermediate types (long double/long long)
for most conversions to have less ifs.
Please review.
There are lots of cases to take care of and lots of mistakes to make.
2008-11-30 07:21:30 +01:00
grischka
83466c6151
line-numbers output for TCC -E
2008-11-30 07:21:01 +01:00
grischka
7bebf1f59a
was hash, not link
2008-09-15 02:07:55 +02:00
Daniel Glöckner
a80acab4fc
Display error on statement expressions with complex return type
...
The return type of a statement expression (a GCC extention) may
involve elements on the symbol stack that have been put there by
the expression. These will be freed at the end of the expression
so that the calling block can not use them.
Contrary to the comment (written in 2003), this bug no longer shows
up in Valgrind, as freed symbols are now put onto a stack for later
reuse.
2008-09-12 22:23:02 +02:00
Daniel Glöckner
3783b33508
Fix bitfields with non-int types and in unions
...
The ISO C draft allow only signed/unsigned int and _Bool as base type
for bitfields. TinyCC ever since allowed a wider range of types, but
there were many bugs that shifted values when they shouldn't, etc..
The patch introduces a restriction to the layout of bitfields with
mixed types that makes it incompatible with GCC. In
struct {
typeA x:1;
typeB y:1;
};
y is combined with x in the same byte iff typeA is typeB (neglecting
signedness). This is done to avoid alignment issues and exceeding the
width of typeA.
2008-09-12 22:23:01 +02:00
Daniel Glöckner
43a34d354a
Force null pointer exception for code outside of a function
...
TinyCC sometimes has problems to evaluate constant expressions at
compile time. This leads to code being generated outside of functions.
Without this patch some of these bugs are not caught, because
cur_text_section still points to the section of the last function.
Before the first function cur_text_section is uninitialized.
Setting cur_text_section to a null pointer should make TinyCC die in
all cases.
2008-09-12 22:23:00 +02:00
Daniel Glöckner
5a92536cea
Optimize arithmetic with pointer to value on stack + constant
2008-09-12 22:23:00 +02:00
Daniel Glöckner
e263ee3cbf
Fix gv for long longs
...
long long a();
long long b() {
return a();
}
At the end of b there will be some useless register shuffling.
This is because return wants to have the result of a in REG_IRET.
gv checks if this is the case for BOTH registers of the long long.
After this test it uses REG_LRET for the second register if the
first is supposed to be REG_IRET. In other cases it uses RC_INT.
The patch compares the second register against the class it will
have in the end instead of the register class the first register
will have.
At this point I would like to remind those who pick up the patches
that there are two other mails by me with uncommitted fixes:
http://lists.gnu.org/archive/html/tinycc-devel/2003-10/msg00044.html
http://lists.gnu.org/archive/html/tinycc-devel/2008-08/msg00007.html
Daniel
2008-09-12 22:22:59 +02:00
Daniel Glöckner
256f6e6200
A prefix for default library/include search paths
...
This patch is useful for cross compilers. Without this patch tcc
tries to use the host's libraries, crt*.o and include files.
The patch prepends a string to all default paths. The string can
be passed to configure with --sysroot=string.
Daniel
2008-09-12 22:22:58 +02:00
Daniel Glöckner
12265da6cd
Runtime lib functions
...
Yesterday I felt the urge to change a few things in TinyCC.
This is the first and biggest change of all of them.
- use __aeabi_*divmod functions in ARM EABI to make binaries depend
solely on standardized library functions
- refactor ARM floating point <-> integer conversion a bit
- rename long long->float and shift library functions to correspond to
the names used by GCC
- compile more tokens conditionally to reduce the size of TinyCC
The intention is primarily to allow users of the ARM target to use
libgcc (which is usually available as a shared library) instead of
libtcc1 (which can't be compiled for ARM due to lack of an inline
assembler).
Changing the EABI target to use the divmod functions in theory allows
to use it without libtcc1 on any (not necessarily GCC based) ARM EABI
system.
Daniel
2008-09-12 22:22:36 +02:00
grischka
2c6cd08bcc
fix isidnum_table for CH_EOF (-1)
2008-09-12 02:36:05 +02:00
grischka
1300cec38c
free_section bugfix
2008-09-12 02:36:01 +02:00
grischka
f9bf48d643
release loaded dlls cleanly (Sam K)
2008-05-05 22:40:49 +00:00
grischka
96bd8f2b25
enable pe-output from libtcc (Shmuel Zeigerman)
2008-05-05 22:39:43 +00:00
grischka
f2698687fb
fix options in C scripts after -run
2008-04-27 18:50:35 +00:00
grischka
5247bbc2f0
fix stabstr with linked objects
2008-04-27 18:49:31 +00:00
grischka
23594b6980
enable multiple states and fix minor memory leaks
2008-04-27 18:47:35 +00:00
grischka
f22e961f80
update manual, changelog
2008-03-31 19:50:58 +00:00
grischka
a327c7a552
added verbosity levels (-vv -vvv)
2008-03-31 19:49:14 +00:00
grischka
4d9aaacc85
Accept standard input as an inputstream (Hanzac Chen)
2008-03-31 18:42:56 +00:00
grischka
9bcc0b970b
Add -soname linker option (Marc Andre Tanner)
2008-03-25 21:04:47 +00:00
grischka
6ed868c51c
Enable -B option for library path on win32
2008-03-08 20:00:56 +00:00
grischka
3667408a57
Just warn about unknown directives, define __STDC_VERSION__=199901L
2008-01-16 20:16:35 +00:00
grischka
5342b32eef
Switch to newer tccpe.c (includes support for resources)
2007-12-19 17:36:42 +00:00
grischka
adb1456472
Handle backslashes within #include, #error, #warning
2007-12-17 19:35:15 +00:00
grischka
6c96c41ee4
Import changesets (part 4) 428,457,460,467: defines for openbsd etc.
2007-12-16 18:24:44 +00:00
grischka
34140dd627
Use _WIN32 for a windows hosted tcc and define it for the PE target.
2007-12-13 19:07:19 +00:00
grischka
f99d3de221
Import 409,410: ARM EABI by Daniel Glckner
2007-12-04 20:38:09 +00:00
grischka
2de1b2d14c
Some in-between fixes (See Changelog for details).
2007-11-25 22:14:35 +00:00
grischka
d778bde7f9
Import more changesets from Rob Landley's fork (part 2)
2007-11-21 17:16:31 +00:00
grischka
54bf8c0556
Import some changesets from Rob Landley's fork (part 1)
2007-11-14 17:34:30 +00:00
bellard
fb2c34f8cd
fixed sign extension in some type conversions (Dave Dodge)
2006-10-28 14:47:39 +00:00
bellard
52b7254b9c
fixed multiple typedef specifiers handling
2006-10-28 14:28:02 +00:00
bellard
0bea5c7f21
workaround for function pointers in conditional expressions (Dave Dodge)
2006-10-28 14:15:37 +00:00
bellard
24a19cc37e
discard type qualifiers when comparing function parameters (Dave Dodge)
2006-10-28 14:13:28 +00:00
bellard
3b8cd565be
fixed multiple concatenation of PPNUM tokens (initial patch by Dave Dodge)
2006-10-28 14:05:19 +00:00
bellard
200b58dad8
initial implementation of -E option
2006-10-16 19:44:00 +00:00
bellard
62c5a5466a
fixed parsing of function parameters
2005-09-03 22:51:34 +00:00
bellard
7bc5e51847
anonymous union/struct support (Filip Navara)
2005-09-03 22:33:53 +00:00
bellard
e9c64e3f47
windows style fastcall (Filip Navara)
2005-09-03 22:21:22 +00:00
bellard
81f957ae09
normalized slashes in paths (Filip Navara)
2005-09-03 22:18:51 +00:00
bellard
6f8b8887b1
added support for win32 wchar_t (Filip Navara)
2005-09-03 21:54:47 +00:00
bellard
44738b516a
fixed function type check
2005-09-03 21:07:35 +00:00
bellard
b0b8ac13ce
mark executable sections as executable when running in memory
2005-09-03 18:31:43 +00:00
bellard
4d7eadb2fa
preprocessor function macro parsing fix (grischka) - disabled -fleading-underscore for win32
2005-06-17 22:05:58 +00:00
bellard
f6db2edc40
added -f[no-]leading-underscore - '@' symbol for asm
2005-06-15 22:32:29 +00:00
bellard
fe9b1f60ce
win32 merge (grischka)
2005-04-17 13:15:54 +00:00
bellard
4821702fb4
win32 merge
2005-04-14 23:49:21 +00:00
bellard
0bca832c18
#pragma pack support (grischka)
2005-04-13 21:30:51 +00:00
bellard
8f2d519203
#include_next support (Bernhard Fischer)
2005-04-10 22:18:53 +00:00
bellard
2c538d7a2b
initial PE format support
2005-04-10 21:46:58 +00:00
bellard
fc72e41a55
better gcc compatibility (Jon Griffiths)
2004-12-16 22:19:28 +00:00
bellard
48c85f1b15
optimisations: hash table for include file search, pool for symbol allocation - sympler token string allocation - '-b' fix with '-run' option
2004-11-07 15:45:19 +00:00
bellard
1d0e5e8b01
stack full fix
2004-11-02 21:55:13 +00:00
bellard
1e1d3ff687
packed attribute support
2004-10-29 23:55:13 +00:00
bellard
736b565766
fixed const and volatile function parameters typing - fixed string parsing when skipping code
2004-10-28 21:14:30 +00:00
bellard
6b52984ce4
added _Bool in bit-fields
2004-10-27 21:42:06 +00:00
bellard
c9c05ca5f0
copyright update
2004-10-27 21:38:03 +00:00
bellard
59c3563827
do not generate code for unused inline functions - fixed long long code gen bug - added --oformat linker option
2004-10-23 22:52:05 +00:00
bellard
9668499b9f
primitive fastcall functions support - -fno-common option - -Ttext linker option - bit field fixes - section alignment fixes
2004-10-18 00:18:20 +00:00
bellard
13affef3f1
win32 configure
2004-10-07 21:11:43 +00:00
bellard
c50af8399d
fixed __LINE__ token type
2004-10-07 20:15:50 +00:00
bellard
ec7d36326d
C67 COFF executable format support (TK)
2004-10-05 22:33:55 +00:00
bellard
6e5b1cc43a
ARM fixes (Daniel Glockner)
2004-10-04 22:19:21 +00:00
bellard
79c72b2419
initial TMS320C67xx support (TK)
2004-10-04 21:57:35 +00:00
bellard
df36de6507
fixes for dietlibc
2004-10-02 14:11:28 +00:00
bellard
22d8df96c6
comment parsing fix - bitfields partial fix
2004-10-02 13:48:50 +00:00
bellard
fe203057c2
fixed assignment of const struct in struct
2003-10-17 20:59:15 +00:00
bellard
114883e078
added -funsigned-char, -fsigned-char and -Wimplicit-function-declaration
2003-10-17 20:43:47 +00:00
bellard
4df5bd2eb0
ARM target support (Daniel Glockner) - allow unsigned char as default on ARM (Daniel Glockner) - fixed small ld script support (Daniel Glockner)
2003-10-14 22:15:56 +00:00
bellard
bef8703f77
added arguments to -run - fixed libc linking when running in memory - output a warning instead of an error if invalid escaped sequence in character
2003-10-04 21:23:51 +00:00
bellard
d369a77647
unbounded section name (might be useful when section name contains function name for g++ linkonce sections)
2003-10-04 14:41:18 +00:00
bellard
c5ce5eaeda
fixed -w option - doc update (thanx to Romain Francoise)
2003-10-04 13:04:47 +00:00
bellard
9c1106d854
added -w option
2003-09-19 20:35:50 +00:00
bellard
f8d0241764
changed tcc_get_symbol() prototype
2003-07-20 19:19:58 +00:00
bellard
c5959b77b4
fixed typdefed type parsing (Mauro Persano)
2003-07-20 18:44:29 +00:00
bellard
7b940fcb1b
reject abstract declarators in function definition (Mauro Persano)
2003-07-20 12:40:53 +00:00
bellard
21d2d99bdc
suppressed warning for const function parameters
2003-06-02 20:32:30 +00:00
bellard
d0476a0e2e
help update
2003-05-24 16:21:09 +00:00
bellard
98713a6be3
added -rdynamic support
2003-05-24 15:46:29 +00:00
bellard
8f5e44a439
changed license to LGPL
2003-05-24 14:11:17 +00:00
bellard
638e666c42
fixed zero arg macro parse
2003-05-18 18:48:33 +00:00
bellard
6cdf6f88d7
fixed macro argument substitution
2003-05-18 17:16:20 +00:00
bellard
c4e6b2e9be
alacarte linking (Dave Long)
2003-04-28 22:06:38 +00:00
bellard
2b64f2f570
added -nostdlib
2003-04-27 11:45:01 +00:00
bellard
7828683e60
added __builtin_constant_p() and __builtin_types_compatible_p() support
2003-04-26 21:28:09 +00:00
bellard
9791bfaf48
more precise C type check support (const warnings) - added generic -W option support
2003-04-26 20:49:46 +00:00
bellard
410fc57ba0
default output object filename is basename of input filename (same behaviour as gcc)
2003-04-16 21:35:02 +00:00
bellard
214ccccea7
simpler function call API
2003-04-16 21:16:20 +00:00
bellard
c5ab452d64
switch label parse fix
2003-04-14 22:23:36 +00:00
bellard
85fa15e64c
compile fix
2003-04-13 22:42:15 +00:00
bellard
40987541dc
added __TIME__ and __DATE__ support - added -v and -run options
2003-04-13 21:54:03 +00:00
bellard
5647993e79
configure support
2003-04-13 19:49:30 +00:00
bellard
f46a02a360
fixed macro function bug
2003-04-13 18:32:37 +00:00
bellard
cab6018913
fixed comment parsing
2003-04-13 18:05:51 +00:00
bellard
0c618f4b7f
sanitized string and character constant parsing
2003-04-13 17:37:14 +00:00
bellard
d6819c2c36
comment fixes (Peter Lund)
2003-04-13 14:35:27 +00:00
bellard
73acbe2413
function parameters must be converted to pointer of functions
2003-04-13 14:30:32 +00:00
bellard
60b9a1aa38
better _Bool lvalue support
2003-04-13 14:11:34 +00:00
bellard
eed54d6bfb
struct syntax fix
2003-04-13 14:03:18 +00:00
bellard
8e40dd90bb
macro opt - asm support - new option parsing - supressed IL code
2003-01-06 20:21:08 +00:00
bellard
4df76253ad
FreeBSD fixes - file type guessing - glibc2.2 fixes - ELF align issue
2002-12-08 14:35:31 +00:00
bellard
abf909e1ac
added static bit fields init - version change - #error and #warning fix - support aligned attribute without parameter
2002-11-24 16:00:08 +00:00
bellard
b9d9425993
fixed structure type test - fixed enum parsing - added warning for int/ptr conversions instead of error
2002-11-24 14:56:25 +00:00
bellard
7b2721ff07
added empty structs support - changed double align to 4 (i386 default ABI) - added align support for structs - added GCC defines for basic types
2002-11-24 14:18:17 +00:00
bellard
0841db04c5
fixed structure init without {} - fixed function declaration parse
2002-11-23 23:56:12 +00:00
bellard
ab9973c843
optimized unary() - fix long long signed comparisons
2002-11-23 23:12:26 +00:00
bellard
0adc5a8921
fixed line numbering
2002-11-23 22:35:28 +00:00
bellard
a9f08655ac
expression optimization
2002-11-23 22:26:46 +00:00
bellard
9e180474f0
optimized token strings - optimized token hashing
2002-11-23 22:02:40 +00:00
bellard
8901fbeef1
parsing optimizations
2002-11-23 18:15:17 +00:00
bellard
b81d4ba6b3
prepared parser for direct use of file->buf_ptr - faster comment parsing
2002-11-22 23:28:06 +00:00
bellard
cdcfed9737
restored include file optimization - added static on all globals
2002-11-22 22:16:30 +00:00
bellard
2956bd85cd
suppressed ch1 and preparser
2002-11-22 18:12:41 +00:00
bellard
e926c359bb
error message fixes - CH_EOB is now '\'
2002-11-22 14:43:38 +00:00
bellard
2f219d8702
use CH_EOB
2002-11-22 14:12:28 +00:00
bellard
63965fc585
further parse optimizations
2002-11-22 13:37:52 +00:00
bellard
5286d3d84c
suppressed secondary hash tables - began parsing optimization
2002-11-20 00:29:04 +00:00
bellard
9620fd18e4
added CType structure for type storage - supressed define hash table - added time dump in bench
2002-11-18 21:46:44 +00:00
bellard
804d0c8d41
added computed gotos - better runtime error handling
2002-11-03 00:43:55 +00:00
bellard
43f30315f9
added alignof and typeof - better sizeof support - fixed get_tok_str() for TOK_PPNUM
2002-11-02 20:45:52 +00:00
bellard
c0180c4e5f
added correct ## handling : added TOK_PPNUM token
2002-11-02 17:02:31 +00:00
bellard
c62792e6aa
ignore some gcc options - removed many memory leaks - suppressed many global variables
2002-11-02 14:12:32 +00:00
bellard
d8ef07df04
added tcc_relocate() and tcc_get_symbol()
2002-09-08 22:46:32 +00:00
bellard
8ecc9cd789
macro optimization - string constant optimisation
2002-09-08 21:55:47 +00:00
bellard
ab4da04aa9
added include file optimization
2002-09-08 19:34:32 +00:00
bellard
509fa60368
force #if #endif match in same file
2002-09-08 16:14:57 +00:00
bellard
405c88106d
fixed bound checking for structures - fixed ?: type handling - fixed '--' parsing
2002-09-08 12:42:36 +00:00
bellard
44b19defc2
fixed octal char const parsing - better __FUNCTION__ handling - handling of static libraries in case of memory compilation
2002-08-31 12:43:39 +00:00
bellard
6dd6a026c3
better command line parsing - added -r option
2002-08-30 22:46:35 +00:00
bellard
d2115bfb27
added symbol + relocation handling
2002-08-29 23:05:59 +00:00
bellard
46803f05e0
fixed local extern handling - fixed '!' with symbols
2002-08-29 21:57:41 +00:00
bellard
41391fbb20
added linux define - added __FUNCTION - fixed spaces parsing - defined special macros
2002-08-29 21:16:24 +00:00
bellard
f946dffd33
suppressed section_ptr - fixed constant string allocation
2002-08-18 14:34:57 +00:00
bellard
53834650fb
moved ELF stuff to tccelf.c - fixed #include and #line parsing - removed size limit on strings - added support for bound checking in generated executables - fixed -I include order - fixed incorrect function displayed in runtime error - fixed lvalue type when saved in local stack
2002-08-18 13:22:55 +00:00
bellard
7ac43f6d19
better DLL generation - added size to all ELF symbols - dynamic hash table size
2002-07-27 23:08:04 +00:00
bellard
18e40e1a25
add stripping if not debug mode - moved debug and bound check init
2002-07-27 15:38:21 +00:00
bellard
519ec30bcf
added __start_x and __stop_x symbol generation - fp_hw fix for dynamic executables
2002-07-27 15:18:33 +00:00
bellard
9b48237795
use data_offset in sections instead of pointer to ease section reallocation - relocated .stabs and .bounds sections - fixed char constants casts - fixed implicit cast to unary plus - fixed type for string constants
2002-07-27 14:05:37 +00:00
bellard
540cd6fde7
fixed preprocessor expression parsing
2002-07-26 22:59:19 +00:00
bellard
b12e91aa01
fixed command line help - added -B option - moved bcheck.c outside of tcc
2002-07-24 22:10:59 +00:00
bellard
6cdecbe4e6
added runtime library - fixed more relocations
2002-07-22 23:37:39 +00:00
bellard
9051cc21af
better elf output - generalized dynamic array use
2002-07-22 00:20:38 +00:00
bellard
7b54a53e08
added archive support - better ELF output - fixed symbol relocation - added COMMON symbol handling
2002-07-18 00:51:11 +00:00
bellard
a50e58e5ba
more consistent command line handling
2002-07-15 22:17:02 +00:00
bellard
61a1599052
added object file reading support
2002-07-15 21:33:00 +00:00
bellard
3cd4a7c4f9
better elf output - fixed float relocation data
2002-07-14 23:00:39 +00:00
bellard
6cd36b1285
added better relocation support (needed for file output)
2002-07-14 14:38:33 +00:00
bellard
12f3f3592c
better file output - fixed order of variable declaration if initializer is present
2002-07-13 17:23:25 +00:00
bellard
17cbb388d3
optimized bound checking
2002-07-13 15:55:38 +00:00
bellard
3d3e2372c5
added char/short types in lvalues to fix cast problems - added gcc style variadic macros - fixed zero arg macros - refuse extra comma at end of function call - fixed unused logical operation result case
2002-07-13 11:17:19 +00:00