aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--TODO13
-rw-r--r--tcc-doc.texi58
3 files changed, 42 insertions, 31 deletions
diff --git a/Makefile b/Makefile
index 1267e26..0b377d0 100644
--- a/Makefile
+++ b/Makefile
@@ -13,7 +13,7 @@ CFLAGS+=-m386 -malign-functions=0
CFLAGS+=-DCONFIG_TCC_PREFIX=\"$(prefix)\"
DISAS=objdump -d
INSTALL=install
-VERSION=0.9.12
+VERSION=0.9.13
# run local version of tcc with local libraries and includes
TCC=./tcc -B. -I.
diff --git a/TODO b/TODO
index 4993610..6e607f9 100644
--- a/TODO
+++ b/TODO
@@ -1,20 +1,19 @@
TODO list:
-- To fix: 'sizeof' generates code if too complex expression is given.
-- add gcc extension typeof()
-- add gcc extension __alignof__()
-- fix constant error msg
- add 'CType' structure to optimize type handling (= compile even faster)
- suppress unneeded hash table for Symbols (= compile even faster)
- add alloca()
-- ignore at least asm extension
+- implement minimal 'asm' extension
- setjmp is not supported properly in bound checking.
- better local variables handling (needed for other targets)
- fix bound check code with '&' on local variables (currently done
only for local arrays).
-- To check: bound checking and float/long long/struct copy code. bound
+- sizeof, alignof, typeof can still generate code in some cases.
+- bound checking and float/long long/struct copy code. bound
checking and symbol + offset optimization
-- free all allocated data and use longjmp for errors (useful for libtcc use)
+- Fix the remaining libtcc memory leaks.
+- make libtcc fully reentrant (except for the compilation stage itself).
+- '-MD' option
Not critical:
diff --git a/tcc-doc.texi b/tcc-doc.texi
index 9c300f1..d5ddb40 100644
--- a/tcc-doc.texi
+++ b/tcc-doc.texi
@@ -37,7 +37,7 @@ generation (@xref{libtcc}).
@example
usage: tcc [-c] [-o outfile] [-Bdir] [-bench] [-Idir] [-Dsym[=val]] [-Usym]
- [-g] [-b] [-Ldir] [-llib] [-shared] [-static]
+ [-g] [-b] [-bt N] [-Ldir] [-llib] [-shared] [-static]
[--] infile1 [infile2... --] [infile_args...]
@end example
@@ -131,21 +131,6 @@ also be defined: @code{'-DF(a)=a+1'}
Undefine preprocessor symbol 'sym'.
@end table
-C compiler options:
-
-@table @samp
-@item -g
-Generate run time debug information so that you get clear run time
-error messages: @code{ test.c:68: in function 'test5()': dereferencing
-invalid pointer} instead of the laconic @code{Segmentation
-fault}.
-
-@item -b
-Generate additionnal support code to check
-memory allocations and array/pointer bounds. '-g' is implied. Note
-that the generated code is slower and bigger in this case.
-@end table
-
Linker options:
@table @samp
@@ -172,19 +157,36 @@ also be given).
@end table
+Debugger options:
+
+@table @samp
+@item -g
+Generate run time debug information so that you get clear run time
+error messages: @code{ test.c:68: in function 'test5()': dereferencing
+invalid pointer} instead of the laconic @code{Segmentation
+fault}.
+
+@item -b
+Generate additionnal support code to check
+memory allocations and array/pointer bounds. @samp{-g} is implied. Note
+that the generated code is slower and bigger in this case.
+
+@item -bt N
+Display N callers in stack traces. This is useful with @samp{-g} or
+@samp{-b}.
+
+@end table
+
+Note: GCC options @samp{-Ox}, @samp{-Wx}, @samp{-fx} and @samp{-mx} are
+ignored.
+
@chapter C language support
@section ANSI C
TCC implements all the ANSI C standard, including structure bit fields
and floating point numbers (@code{long double}, @code{double}, and
-@code{float} fully supported). The following limitations are known:
-
-@itemize
- @item The preprocessor tokens are the same as C. It means that in some
- rare cases, preprocessed numbers are not handled exactly as in ANSI
- C. This approach has the advantage of being simpler and FAST!
-@end itemize
+@code{float} fully supported).
@section ISOC99 extensions
@@ -320,6 +322,16 @@ generate function @code{'my_add'} in section @code{.mycodesection}.
(so it has not exactly the same semantics as string literal GNUC
where it is a string literal).
+@item The @code{__alignof__} keyword can be used as @code{sizeof}
+to get the alignment of a type or an expression.
+
+@item The @code{typeof(x)} returns the type of @code{x}.
+@code{x} is an expression or a type.
+
+@item Computed gotos: @code{&&label} returns a pointer of type
+@code{void *} on the goto label @code{label}. @code{goto *expr} can be
+used to jump on the pointer resulting from @code{expr}.
+
@end itemize
@section TinyCC extensions