aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Adjust relocation offset for thumb to ARM veneerThomas Preud'homme2014-03-111-1/+1
|
* Don't hardcode gcc in tests MakefileThomas Preud'homme2014-03-092-8/+8
|
* Fix warning of clangThomas Preud'homme2014-03-093-24/+24
|
* Use intptr_t to cast pointerThomas Preud'homme2014-03-091-1/+3
|
* Undefine __va* in libtcc1 to avoid errors w/ clangThomas Preud'homme2014-03-091-0/+5
|
* Make condition in libtcc1 based on targetThomas Preud'homme2014-03-091-5/+5
| | | | | | Prior to this commit runtime library was compiled according to the host because of the macro used to detec what architecture to choose. This commit fixes this by using the TARGET_* macro instead.
* Fix type_to_str test for unsigned intThomas Preud'homme2014-03-091-1/+1
|
* Fix various errors uncovered by static analysisThomas Preud'homme2014-03-084-5/+2
| | | | Reported-by: Carlos Montiers <cmontiers@gmail.com>
* libtcc: ignore linker optizimization and as-needed options. This allows ↵Austin English2014-03-061-0/+4
| | | | compiling some packages from Gentoo's portage
* Call fill_got_entry unconditionallyThomas Preud'homme2014-02-101-2/+0
| | | | | | Call fill_got_entry unconditionally from fill_got so as to avoid warnings on !x86-64 architectures. This can be done since this code path is only followed by x86-64 architecture anyway.
* Define float_eabi only in arm-gen.oThomas Preud'homme2014-02-091-2/+2
|
* conftest: fix globbing to match MSVCAustin English2014-02-081-0/+4
|
* Fix warning about undeclared __clear_cache function call.Christian Jullien2014-02-081-0/+1
|
* Ignore VT_DEFSIGN in load on x86-64 archThomas Preud'homme2014-02-071-1/+1
| | | | | This fixes commit b0b5165d1668373c5d7b7933da599426f33e723b for x86-64 targets.
* Def signedness != signed != unsigned for charThomas Preud'homme2014-02-064-15/+26
| | | | | | | | When checking for exact compatibility between types (such as in __builtin_types_compatible_p) consider the case of default signedness to be incompatible with both of the explicit signedness for char. That is, char is incompatible with signed char *and* unsigned char, no matter what the default signedness for char is.
* Add support of Thumb to ARM branch relocationThomas Preud'homme2014-02-062-0/+29
|
* Split elf_output_file in smaller functionsThomas Preud'homme2014-02-061-544/+652
|
* Add macro to browse reloc and sym entriesThomas Preud'homme2014-02-061-79/+39
| | | | | Introduce for_each_elem to browse relocation entries and symbols of a section.
* Round mode of ll -> float conversion to nearestThomas Preud'homme2014-02-051-5/+20
| | | | | Change rounding mode of long long to float conversion to nearest in libtcc1.
* Fix negative long long to float conversion on ARMThomas Preud'homme2014-02-051-2/+2
|
* Fix float to long long conversion on ARMThomas Preud'homme2014-02-051-8/+8
| | | | | Fix float to long long conversion on ARM when the result would fit in an int.
* Fix and extend *FCAST test in tcctest.cThomas Preud'homme2014-02-051-5/+8
| | | | | | | Result of float to unsigned integer conversion is undefined if float is negative. This commit take the absolute value of the float before doing the conversion to unsigned integer and add more float to integer conversion test.
* Fix parameter passing of long long bitfieldThomas Preud'homme2014-02-042-0/+4
|
* switch last 2 params of TOK_memset on ARMThomas Preud'homme2014-02-031-0/+5
| | | | | On ARM, TOK_memset is executed via __aeabi_memset which reverse the order of the last two parameters.
* Don't perform builtin_frame_address on ARMThomas Preud'homme2014-02-031-2/+3
|
* Fix fct param passing of struct with size < 4Thomas Preud'homme2014-02-031-2/+3
|
* Switch float abi to softfp for int <--> float convThomas Preud'homme2014-02-021-17/+9
| | | | | | | This improves commit 5cbe03b9c47e676e045b4978c384087433bd6042 by avoiding a double transfer when the default float ABI is already softfp. It's also more clean by expliciting that the ABI is simply changed for runtime ABI functions.
* Revert "Add macro to browse reloc and sym entries"Thomas Preud'homme2014-02-021-37/+77
| | | | This reverts commit 3cbc7a2dccf13b96c572623582d6c54394f98c36.
* Revert "Split elf_output_file in smaller functions"Thomas Preud'homme2014-02-021-652/+544
| | | | This reverts commit b5b82df3e388e2565ee424994e3d5041fbf91161.
* Revert "Add support of Thumb to ARM branch relocation"Thomas Preud'homme2014-02-021-28/+0
| | | | This reverts commit 8635939b8d902244679cb1a024190fa37a4fed10.
* Add support of Thumb to ARM branch relocationThomas Preud'homme2014-02-021-0/+28
|
* Split elf_output_file in smaller functionsThomas Preud'homme2014-02-021-544/+652
|
* Add macro to browse reloc and sym entriesThomas Preud'homme2014-02-021-77/+37
| | | | | Introduce for_each_elem to browse relocation entries and symbols of a section.
* Give ARM asm mnemonic of PLT entriesThomas Preud'homme2014-02-021-9/+9
| | | | Give ARM assembly mnemonic of PLT entries in put_got_entry
* Clean tccelf.cThomas Preud'homme2014-02-021-199/+179
| | | | | | | - remove debug printf and commented out code - remove C++-like comments - remove whitespace at end of lines - replace tabs by spaces
* Ignore abitest-cc and abitest-tcc test programsThomas Preud'homme2014-02-021-0/+1
|
* Test long long to float conversionsThomas Preud'homme2014-02-011-0/+8
|
* Move result of itof double conv back to VFP regThomas Preud'homme2014-02-012-0/+10
| | | | | | | | | | | EABI functions to convert an int to a double register take the integer value in core registers and also give the result in core registers. It is thus necessary to move the result back to VFP register after the function call. This only affected integer to double conversion because integer to float conversion used a VFP instruction to do the conversion and this obviously left the result in VFP register. Note that the behavior is left untouched for !EABI as the correct behavior in this case is unknown to the author of this patch.
* Ordinary and implicit rules cannot be mixed in the same string in MakefileIavael2014-01-231-1/+1
|
* tcctest: add back testXb (self compile with -b)grischka2014-01-213-21/+25
| | | | | | | | | | | | | | | | | | - Thanks to Kirill "tcc -b itself" should work now (was removed in d5f4df09ff4a84dda5b03525285f03be7723376b) Also: - tests/Makefile: - fix spurious --I from 767410b8750b45d63805b45ca1a2cf34d7cb4923 - lookup boundtest.c via VPATH (for out-of-tree build) - test[123]b?: fail on diff error - Windows: test3 now works (from e31579b0769e1f9c0947d12e83316d1149307b1a) - abitest: a libtcc.a made by gcc is not usable for tcc on WIndows - using source instead (libtcc.c) - tccpe: - avoid gcc warning (x86_64)
* workaround a wine cmd bug in build-tcc.batAustin English2014-01-201-1/+1
|
* tccrun: Mark argv area as valid for bcheckKirill Smelkov2014-01-191-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On my x86_64 box in i386 mode with address space randomization turned off, I've observed the following: tests$ ../tcc -B.. -b -run boundtest.c 1 Runtime error: dereferencing invalid pointer boundtest.c:222: at 0x808da73 main() With diagnostic patch (like in efd9d92b "lib/bcheck: Don't assume heap goes right after bss") and bcheck traces for __bound_new_region, __bound_ptr_indir, etc... here is how the program run looks like: >>> TCC etext: 0x8067ed8 edata: 0x807321d end: 0x807d95c brk: 0x807e000 stack: 0xffffd0b4 &errno: 0xf7dbd688 mark_invalid 0xfff80000 - (nil) mark_invalid 0x80fa000 - 0x100fa000 new 808fdb0 808ff40 101 101 fd0 ff0 new 808ff44 808ff48 101 101 ff0 ff0 new 808ff49 8090049 101 101 ff0 1000 new 808fd20 808fd29 101 101 fd0 fd0 new 808fd2c 808fd6c 101 101 fd0 fd0 new 808fd6d 808fda0 101 101 fd0 fd0 E: __bound_ptr_indir4(0xffffd184, 0x4) Runtime error: dereferencing invalid pointer boundtest.c:222: at 0x808ea83 main() So we are accessing something on stack, above stack entry for compiled main. Investigating with gdb shows that this is argv: tests$ gdb ../tcc Reading symbols from /home/kirr/src/tools/tinycc/tcc...done. (gdb) set args -B.. -b -run boundtest.c 1 (gdb) r Starting program: /home/kirr/src/tools/tinycc/tests/../tcc -B.. -b -run boundtest.c 1 warning: Could not load shared library symbols for linux-gate.so.1. Do you need "set solib-search-path" or "set sysroot"? >>> TCC etext: 0x8067ed8 edata: 0x807321d end: 0x807d95c brk: 0x807e000 stack: 0xffffd074 &errno: 0xf7dbd688 mark_invalid 0xfff80000 - (nil) mark_invalid 0x80fa000 - 0x100fa000 new 808fdb0 808ff40 101 101 fd0 ff0 new 808ff44 808ff48 101 101 ff0 ff0 new 808ff49 8090049 101 101 ff0 1000 new 808fd20 808fd29 101 101 fd0 fd0 new 808fd2c 808fd6c 101 101 fd0 fd0 new 808fd6d 808fda0 101 101 fd0 fd0 E: __bound_ptr_indir4(0xffffd144, 0x4) Program received signal SIGSEGV, Segmentation fault. 0x0808ea83 in ?? () (gdb) bt #0 0x0808ea83 in ?? () #1 0x080639b3 in tcc_run (s1=s1@entry=0x807e008, argc=argc@entry=2, argv=argv@entry=0xffffd144) at tccrun.c:132 #2 0x080492b0 in main (argc=6, argv=0xffffd134) at tcc.c:346 (gdb) f 1 #1 0x080639b3 in tcc_run (s1=s1@entry=0x807e008, argc=argc@entry=2, argv=argv@entry=0xffffd144) at tccrun.c:132 132 ret = (*prog_main)(argc, argv); 132 ret = (*prog_main)(argc, argv); (gdb) p argv $1 = (char **) 0xffffd144 So before running compiled program, mark argv as valid region and we are done - now the test passes. P.S. maybe it would be better to just mark the whole vector kernel passes to program (argv, env, auxv, etc...) as valid all at once...
* Fixed the LDBL_* macros in include/float.h for x86-64: as saidVincent Lefevre2014-01-121-1/+1
| | | | | | when x86-64 support was added, "for long double, we use x87 FPU". And indeed, tests show that Intel's extended precision is used, not double precision.
* Revert "Use anonymous file instead of regular file to back mmap"Iavael2014-01-121-5/+12
| | | | | | This reverts commit 935d8169b8e3570f1a5e726c5295be2f460c1540, because two anonymous mappings would have different content, while they must have the same one.
* tcctest: One more signed zero testMichael Matz2014-01-121-0/+6
| | | | This also checks that -(-0.0) is +0.0.
* Fix floating point unary minus and plusMichael Matz2014-01-122-17/+45
| | | | | | | negate(x) is subtract(-0,x), not subtract(+0,x), which makes a difference with signed zeros. Also +x was expressed as x+0, in order for the integer promotions to happen, but also mangles signed zeros, so just don't do that with floating types.
* Fix compile on ARM non-eabi and non-vfpMichael Matz2014-01-111-1/+1
| | | | Adjust arm_init prototype to match declaration.
* Fix Fixes for PE x86_64 for fail in codeMichael Matz2014-01-111-27/+20
| | | | | | | Applying 64bit relocs assumes that the CVal is initialized to zero for the whole 64bit. Consolidate this a bit, at the same time zeroing the .ull member more consistently when needed. Fixes segfault on x86_64-linux using global vars in tcctest.c.
* Fix missing mem_size assignment when using mmap()keren2014-01-101-0/+2
|
* Fixes previous fixesArchidemon2014-01-101-5/+5
|