aboutsummaryrefslogtreecommitdiff
path: root/libtcc.c
Commit message (Collapse)AuthorAgeFilesLines
* Revert "Add a --multiarch-triplet switch to configure"Thomas Preud'homme2011-08-031-18/+6
| | | | This reverts commit 76adc5770f4ab5b1aaa2e5dde6104efc06431fe2.
* Add a --multiarch-triplet switch to configureThomas Preud'homme2011-08-021-6/+18
| | | | | | | | | | | | | Add a --multiarch-triplet switch to configure. The switch will allow files to be search for each default path in path/<triplet> and then path. Default paths handled that way: - CONFIG_TCC_SYSINCLUDE_PATHS - CONFIG_TCC_LIBPATH - path to crt*.o - path to libgcc_s.so.1 Path missing: elf interpreter path (will be handled in another commit)
* Set CONFIG_TCC_CRT_PREFIX relative to CONFIG_SYSROOTThomas Preud'homme2011-08-011-2/+2
| | | | | Set CONFIG_TCC_CRT_PREFIX relative to CONFIG_SYSROOT for consistency with CONFIG_TCC_LDDIR.
* Accept colon separated paths with -L and -Igrischka2011-08-011-107/+56
| | | | | | | | | | | | | | | | | | This allows passing colon separated paths to tcc_add_library_path tcc_add_sysinclude_path tcc_add_include_path Also there are new configure variables CONFIG_TCC_LIBPATH CONFIG_TCC_SYSINCLUDE_PATHS which define the lib/sysinclude paths all in one and can be overridden from configure/make For TCC_TARGET_PE semicolons (;) are used as separators Also, \b in the path string is replaced by s->tcc_lib_path (CONFIG_TCCDIR rsp. -B option)
* fixed Makefile test targetsJoe Soroka2011-07-221-1/+1
|
* make: create native tcc from separate objectsgrischka2011-07-141-2/+1
| | | | | | | | | | | | | | | | | | | | | | | This was already possible using make NOTALLINONE=1 and is now the default. To build as previously from one big source, use make ONE_SOURCE=1 Cross compilers are still build from one source because using separate objects requires separate build directories one per platform which currently is not (yet) supported by the makefile. We could probably use gnu-makeish target variables like $(I386_CROSS): OUTDIR=build/i386 $(X64_CROSS): OUTDIR=build/x86-64 and so on ... Also NEED_FLOAT_TYPES for arm-gen is removed. It was about variables that are referenced from outside (libtcc, tccgen). We could declare them in tcc.h (as with reg_classes) or have them twice in arm-gen.c. I chose option 2.
* win32: add -Wl,--stack=xxx switchgrischka2011-07-111-6/+4
| | | | | | | | For example: $ tcc -Wl,--stack=4194309 which means 4 MB. Default is 1 MB.
* Fix problem spotted in <4E15F966.4090102@gmx.de>Thomas Preud'homme2011-07-081-35/+33
| | | | | | | | * Rename tcc_split_path_components * Move tcc_split_path below memory wrapper section * Ident tcc_split_path by 4 * Remove prefix and suffix clutter in tcc_split_path * Don't dereference beyond the end of the search paths string
* Add configuration of include subdirectoriesThomas Preud'homme2011-07-071-2/+17
| | | | | | | | Add the possibility to search headers in several subdirectories of /usr/local/include and /usr/include. A possible use case would be for tcc to search for headers in /usr/local/include/x86_64-linux-gnu, /usr/local/include, /usr/include/x86_64-linux-gnu and /usr/include in turn.
* Introduce tcc_split_path_component for 31ca000dThomas Preud'homme2011-07-071-20/+41
| | | | | Rewrite code introduced by 31ca000d and following commits around a new function tcc_split_path_component.
* Free extra_libdir_str after use.Thomas Preud'homme2011-07-061-0/+1
|
* Add multiarch dirs to linker search pathThomas Preud'homme2011-07-051-0/+24
| | | | | | | | | | | By default, tcc search libraries in /lib and /usr/local/lib while crt*.o files are searched in /usr/lib and ld.so is searched in /lib. Unfortunetely the path are hardcoded in source code. This patch allow tcc to look in an other directory and also to look in extra directories. It's then possible to make tcc search libraries in /lib/x86_64-linux-gnu and /usr/local/lib/x86_64-linux-gnu while crt*.o files are searched in /usr/lib/x86_64-linux-gnu and ld.so is searched in /lib/x86_64-linux-gnu.
* Remove unused variablesThomas Preud'homme2011-05-161-0/+1
| | | | | Declare float type conditionally to not declare them conditionally when they are not used.
* fix spurious vstack-leak warnings on errorJoe Soroka2011-05-021-3/+3
|
* libtcc.c: report vstack "leaks" only if compile succeededJoe Soroka2011-04-141-2/+3
|
* VLA leaks vstack. added warning to detect future leaksJoe Soroka2011-04-081-0/+4
|
* tccpe: support leading underscore for symbolsgrischka2011-02-131-1/+1
| | | | | | | | | To make this the default, enable this line in libtcc.c:tcc_new: #if defined(TCC_TARGET_PE) && 0 s->leading_underscore = 1; and then recompile tcc and also libtcc1.a
* Fix fct asm label: only valid for declarationThomas Preud'homme2011-02-091-4/+4
| | | | | | | | | - Fix function assembly label mechanism introduced in commit 9b09fc376e8c212a767c875e71ca003e3b9a0d2e to only accept alternative name for function declaration. - merge the code with the one introduced in commit 264a103610e3ee86b27b8cbb0e4ec81cd654d980. - Don't memorize token for asm label but directly the asm label.
* add -isystem cmdline optionJoe Soroka2011-02-011-1/+1
|
* tccasm: define __ASSEMBLER__ for .S files, like gcc doesJoe Soroka2011-02-011-0/+6
|
* support weak attribute on variablesJoe Soroka2011-02-011-1/+1
|
* make: new lib/Makefile for libtcc1.a on more platformsgrischka2010-12-041-25/+3
| | | | | | win32/64 cross-compilers now build libtcc1.a and install it together with the windows headers in a 'win32' sub-directory of TCCDIR.
* split cross libtcc1.a to separate directoriesHenry Kroll III2010-12-021-1/+27
|
* libtcc: fix s->include_stack_ptr used uninitialized in tcc_opengrischka2010-11-261-0/+1
|
* x86_64: finish biarch path fixupHenry Kroll III2010-11-251-1/+1
|
* libtcc: new function tcc_open_bf to create BufferedFilegrischka2010-11-251-68/+53
| | | | | | | | Use it in: - tcc_open - tcc_compile_string - tcc_define_symbol - tcc_assemble_inline
* x86_64: fix --with-libgcc and simplify biarch pathsHenry Kroll III2010-11-251-9/+3
|
* Move asm label functions from tccasm.c to tccgen.cThomas Preud'homme2010-09-141-6/+0
| | | | | | | | | | * Move functions parse_asm_str and asm_label_instr from tccasm.c to tccgen.c * Remove CONFIG_TCC_ASM_LABEL macro as asm label are available on all archs. See: http://lists.nongnu.org/archive/html/tinycc-devel/2010-09/msg00026.html for the rationale.
* Add support for __REDIRECT_NTH needed with eglibc.Thomas Preud'homme2010-09-121-0/+3
| | | | | | Add support for __REDIRECT_NTH as eglibc makes use of this macro to redirect long double functions to long functions on arch not supporting long double.
* Add support for __FreeBSD_kernel__ kernelThomas Preud'homme2010-09-101-0/+3
| | | | | Add support for kfreebsd-i386 and kfreebsd-amd64 Debian arch with thanks to Pierre Chifflier <chifflier@cpe.fr>.
* Add support of asm label for functions.Thomas Preud'homme2010-09-101-1/+10
| | | | | | Add support for asm labels for functions, that is the ability to rename a function at assembly level with __asm__ ("newname") appended in function declaration.
* tcc_set_linker: mimic all option forms as supported by GNU ldKirill Smelkov2010-08-121-11/+55
| | | | | | | | | Namely * `-option' or `--option' (start with double or single dash) * `-param=val' or `-param,val' See GNU ld manual (2.1 Command Line Options)
* Avoid crash with "Avoid a crash with weak symbols for "make test""grischka2010-06-301-1/+1
| | | | | | | This fixes commit 197a6acb30940068d1dc3d0fa53c9f0863309885 which fixed commit 95b9a477b6743004e0e9bf728b25bf63d2908777 Also remove useless example files
* Document what tcc_fileextension doesKirill Smelkov2010-06-211-0/+4
| | | | This is evident, but won't hurt
* tcc -E: Let output_default be <file>.o instead of a.outKirill Smelkov2010-06-211-1/+3
| | | | | | | | | | | | | | | | | | This affectes where `tcc -E -MD file.c` will place generated dependency information -- previously, for `tcc -E` output_default was a.out, and so deps were put into a.d . Avoid this behaviour, by treating `tcc -E` as `tcc -c` with respect to output_default computation. This will not hurt anything else (preprocessor outputs to either stdout, or to explicitely given (-o <file>) destination, so no default filename is used here), and on the other hand `tcc -E -MD file.c` now puts dependencies into file.d (the same behaviour as for gcc -E). v2: - restructured condition a bit to make it more clear
* tcc: Draft suppoprt for -MD/-MF optionsKirill Smelkov2010-06-211-0/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In build systems, this is used to automatically collect target dependencies, e.g. ---- 8< (hello.c) ---- #include "hello.h" #include <stdio.h> int main() { printf("Hello World!\n"); return 0; } $ tcc -MD -c hello.c # -> hello.o, hello.d $ cat hello.d hello.o : \ hello.c \ hello.h \ /usr/include/stdio.h \ /usr/include/features.h \ /usr/include/bits/predefs.h \ /usr/include/sys/cdefs.h \ /usr/include/bits/wordsize.h \ /usr/include/gnu/stubs.h \ /usr/include/bits/wordsize.h \ /usr/include/gnu/stubs-32.h \ /home/kirr/local/tcc/lib/tcc/include/stddef.h \ /usr/include/bits/types.h \ /usr/include/bits/wordsize.h \ /usr/include/bits/typesizes.h \ /usr/include/libio.h \ /usr/include/_G_config.h \ /usr/include/wchar.h \ /home/kirr/local/tcc/lib/tcc/include/stdarg.h \ /usr/include/bits/stdio_lim.h \ /usr/include/bits/sys_errlist.h \ NOTE: gcc supports -MD only for .c -> .o, but in tcc, we generate dependencies for whatever action is being taken. E.g. for .c -> exe, the result will be: $ tcc -MD -o hello hello.c # -> hello, hello.d hello: \ /usr/lib/crt1.o \ /usr/lib/crti.o \ hello.c \ hello.h \ /usr/include/stdio.h \ /usr/include/features.h \ /usr/include/bits/predefs.h \ /usr/include/sys/cdefs.h \ /usr/include/bits/wordsize.h \ /usr/include/gnu/stubs.h \ /usr/include/bits/wordsize.h \ /usr/include/gnu/stubs-32.h \ /home/kirr/local/tcc/lib/tcc/include/stddef.h \ /usr/include/bits/types.h \ /usr/include/bits/wordsize.h \ /usr/include/bits/typesizes.h \ /usr/include/libio.h \ /usr/include/_G_config.h \ /usr/include/wchar.h \ /home/kirr/local/tcc/lib/tcc/include/stdarg.h \ /usr/include/bits/stdio_lim.h \ /usr/include/bits/sys_errlist.h \ /usr/lib/libc.so \ /lib/libc.so.6 \ /usr/lib/ld-linux.so.2 \ /lib/ld-linux.so.2 \ /usr/lib/libc_nonshared.a \ /lib/libc.so.6 \ /usr/lib/libc_nonshared.a \ /home/kirr/local/tcc/lib/tcc/libtcc1.a \ /usr/lib/crtn.o \ So tcc dependency generator is a bit more clever than one used in gcc :) Also, I've updated TODO and Changelog (in not-yet-released section). v2: (Taking inputs from grischka and me myself) - put code to generate deps file into a function. - used tcc_fileextension() instead of open-coding - generate deps only when compilation/preprocessing was successful v3: - use pstrcpy instead of snprintf(buf, sizeof(buf), "%s", ...)
* tcc: Refactor "compute default outfile name" into libtcc functionKirill Smelkov2010-06-201-0/+28
| | | | | | | | | | | | | | | | Since for upcoming -MD support default _compile_ output file be needed even when preprocesssing (tcc -E), let's move this code out of one particular condition block into a common function, so that we could use it in deps generation code too. v2: - As suggested by grischka, moved into libtcc function instead of always computing near start of main() - There is a FIXME about how to return result - I don't want to bother callers with allocating temp buffers, not I think it will be a good idea to hook default_target to TCCState. Clearly, I'm to used to things like std::string and python's str...
* Add input files/libs and reloc_output switch to TCCStateKirill Smelkov2010-06-201-0/+8
| | | | | | | | | | | | | | | | | files[0], and reloc_outpu will be needed for (upcoming in the next patch) "compute default outfile name" refactored into libtcc function. Also, since for symmetry and from libification point of view, it makes some sense to also put all information about what was given as input to compilation into TCCState, let's not only put files[0], but all files and all libraries given explicitely by user. One point: I've used bitfield for reloc_output & trimmed down output_type to 8 bits so that TCCState stays the same in size, and also access to output_type is (hopefully) is not slower. By the way -- as of today, sizeof(TCCState) on i686-pc-linux-gnu is 2884 bytes...
* make --with-selinux work with libtcc, tooHenry Kroll III2010-04-241-0/+5
|
* libtcc.c: fix compilation failure (inconsistent tcc_add_file_internal)Sergei Trofimovich2010-04-191-1/+1
| | | | | | | | | gcc -o libtcc1.o -c lib/libtcc1.c -O2 -Wall libtcc.c: At top level: libtcc.c:1063: error: static declaration of 'tcc_add_file_internal' follows non-static declaration tccelf.c:2915: note: previous implicit declaration of 'tcc_add_file_internal' was here Signed-off-by: Sergei Trofimovich <st@anti-virus.by>
* libtcc: Detect (but ignore) -init and -fini for -WlDetlef Riekenberg2010-04-051-11/+20
| | | | | -- By by ... Detlef
* libtcc: Support -soname for the linkerDetlef Riekenberg2010-04-051-0/+3
| | | | | -- By by ... Detlef
* libtcc: Allow multiple options for -Wl separated with ','Detlef Riekenberg2010-04-051-0/+111
| | | | | | | I moved the code to libtcc to prepare for a later tiny_ld -- By by ... Detlef
* Avoid a crash with weak symbols for "make test"Timo VJ Lähde2010-04-051-1/+1
| | | | | | | Patch from the mailing list by Timo VJ Lähde -- By by ... Detlef
* weak function symbolsManuel Simoni2010-02-271-2/+6
|
* fill got table for static linkingAli Gholami Rudi2010-02-051-0/+9
|
* Added patch to detect and use the paths for 64bit libraries asNikos Mavrogiannopoulos2010-01-281-1/+7
| | | | used by CentOS (affects X86_64 only).
* win64: defined size_t and ptrdiff_t to unsigned long longgrischka2010-01-141-7/+12
|
* x86-64: use uplong for symbol valuesgrischka2010-01-141-1/+1
|
* tccpe: improve dllimport/export and use for tcc_add_symbolgrischka2010-01-141-20/+24
|