| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
| |
Fix commit aa561d70119accb59a17f10f9ba69076fb0ab516 by setting
has_plt_entry once the plt has been created, not before.
|
| |
|
|
|
|
|
|
|
|
|
| |
For program manipulating argv or arge as pointer with construct such as:
(while *argv++) {
do_something_with_argv;
}
it is necessary to have argv and arge inside a region. This patch create
regions argv and arge) if main is declared with those parameters.
|
| |
|
|
|
|
|
| |
As was pointed out on tinycc-devel, many uses of get_tok_str gives as
second parameter the value NULL. However, that pointer was
unconditionally dereferenced in get_tok_ptr. This commit explicitely add
support for thas case.
|
| |
|
|
|
|
| |
have the undesired side effect of programs compiled with
debug info segfaulting after debug info been striped
more tought must be done here
|
| |
|
|
| |
memory, with this when compiling fossil-scm with tcc on linux X86_64 it works fine.
|
| |
|
|
| |
false positive, thanks to grischka for pointing it.
|
| |
|
|
|
|
| |
valgrind complain with:
Inconsistency detected by ld.so: rtld.c: 1284: dl_main: Assertion `_rtld_local._dl_rtld_map.l_libname' failed!
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
crashing,
I found the problem it was because CValue stack variables have rubish as it inital values
and assigning to a member that is smaller than the big union item and trying to
recover it later as a different member gives bak garbage.
ST_FUNC void vset(TCCState* tcc_state, CType *type, int r, int v)
{
CValue cval;
memset(&cval, 0, sizeof(CValue));
cval.i = v; //,<<<<<<<<<<< here is the main bug that mix with garbage
vsetc(tcc_state, type, r, &cval);
}
/* store a value or an expression directly in global data or in local array */
static void init_putv(TCCState* tcc_state, CType *type, Section *sec, unsigned long c,
int v, int expr_type)
{
...
case VT_PTR:
if (tcc_state->tccgen_vtop->r & VT_SYM) {
greloc(tcc_state, sec, tcc_state->tccgen_vtop->sym, c, R_DATA_PTR);
}
//<<< on the next line is where we try to get the assigned value to cvalue.i as cvalue.ull
*(addr_t *)ptr |= (tcc_state->tccgen_vtop->c.ull & bit_mask) << bit_pos;
break;
Also this patch makes vla tests pass on linux 32 bits
|
| |
|
|
|
|
|
|
| |
Introduce a new attribute to check the existence of a PLT entry for a
given symbol has the presence of an entry for that symbol in the dynsym
section is not proof that a PLT entry exists.
This fixes commit dc8ea93b13faefb565fb937f8b8c08c40c063549.
|
| |
|
|
| |
"clean"
|
| |
|
|
| |
tcctest.c with tcc.
|
| |
|
|
|
|
|
| |
Some symbol (such as __gmon_start__ but this one does not matter to tcc)
can have both a R_386_GOT32 and R_386_PLT32 relocation. It is thus not
enough to test if a GOT reloc was already done when deciding whether to
return early from put_got_entry.
|
| |
|
|
| |
On x86 tcc call to function in libtcc1.a to implement va_* functions.
|
| |
|
|
|
| |
* Adapt tests2 Makefile to support testing tcc error reporting
* Add test for previous commit
|
| |
|
|
|
|
| |
For ARM target, tcc uses the soft float ABI when not asked to use hard
float ABI. This means machine without a VFP co-processor generate code
that they cannot run. This commit add a warning for such cases.
|
| | |
|
| |
|
|
|
| |
This makes int char c; and struct {} int c; generate an error. Thanks
Mobi Phil for reporting.
|
| |
|
|
|
|
|
| |
When bound check is enabled, tcc tries to relocate a call to
__bound_init in _init. This means that relocation (in tcc_add_bcheck)
must be done after libtcc1.a (which countains __bound_init) is loaded
but before crtn.o is loaded as this finalize _init.
|
| |
|
|
| |
Forgot to give the parameters to syscall function, doh!
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
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.
|
| | |
|
| |
|
|
| |
Reported-by: Carlos Montiers <cmontiers@gmail.com>
|
| |
|
|
| |
compiling some packages from Gentoo's portage
|
| |
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
This fixes commit b0b5165d1668373c5d7b7933da599426f33e723b for x86-64
targets.
|
| |
|
|
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| |
|
|
|
| |
Introduce for_each_elem to browse relocation entries and symbols of a
section.
|
| |
|
|
|
| |
Change rounding mode of long long to float conversion to nearest in
libtcc1.
|
| | |
|
| |
|
|
|
| |
Fix float to long long conversion on ARM when the result would fit in an
int.
|
| |
|
|
|
|
|
| |
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.
|
| | |
|
| |
|
|
|
| |
On ARM, TOK_memset is executed via __aeabi_memset which reverse the
order of the last two parameters.
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
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.
|
| |
|
|
| |
This reverts commit 3cbc7a2dccf13b96c572623582d6c54394f98c36.
|
| |
|
|
| |
This reverts commit b5b82df3e388e2565ee424994e3d5041fbf91161.
|
| |
|
|
| |
This reverts commit 8635939b8d902244679cb1a024190fa37a4fed10.
|