Alien-TinyCCx
view release on metacpan or search on metacpan
* Updated to latest tccx work, fixing struct alignment issues and
enum handling..
0.11 Mon, Aug 8, 2016
[DIFFERENT BEHAVIOR]
* The binary, library, and include file locations are reported based on
the results of an actual subdirectory search, rather than by sheer
guesswork, as used to be the case.
[BUG FIXES]
* BSDs were switched to use cc, but that is clang (at least on some
BSDs) so we need to add the heinous-gnu-extensions flag.
* Add patch for Mac OSX to #define _VA_LIST_T. Macs were hitting trouble
with incompatible preprocessor definitions. If the macros and internal
definitions had all been expanded, the definitions for variadic function
lists would have been the same, but tcc doesn't know that.
lib/Alien/TinyCCx.pm view on Meta::CPAN
unless -d $dist_dir;
}
else {
$dist_dir = File::ShareDir::dist_dir('Alien-TinyCCx');
}
############################
# Path retrieval functions #
############################
# First we need to find a number of files of interest. Rather than guess
# at these files' locations, we can perform a simple search for them
# and store the locations that we find.
my %files_to_find = (
bin => 'tcc',
lib => 'libtcc.',
inc => 'libtcc.h'
);
if ($^O =~ /MSWin/) {
$files_to_find{bin} .= '.exe';
$files_to_find{lib} .= 'dll';
src/Changelog view on Meta::CPAN
- fixed array declaration in old style function parameters
- support casts in static structure initializations
- added various __xxx[__] keywords for GCC compatibility
- ignore __extension__ GCC in an expression or in a type (still not perfect)
- added '? :' GCC extension support
version 0.9.15:
- compilation fixes for glibc 2.2, gcc 2.95.3 and gcc 3.2.
- FreeBSD compile fixes. Makefile patches still missing (Carl Drougge).
- fixed file type guessing if '.' is in the path.
- fixed tcc_compile_string()
- add a dummy page in ELF files to fix RX/RW accesses (pageexec at
freemail dot hu).
version 0.9.14:
- added #warning. error message if invalid preprocessing directive.
- added CType structure to ease typing (faster parse).
- suppressed secondary hash tables (faster parse).
- rewrote parser by optimizing common cases (faster parse).
src/c67-gen.c view on Meta::CPAN
C67_MVKH(C67_A0, t); //r=reg to load, constant
C67_IREG_B_REG(0, C67_CREG_ZERO, C67_A0); // [!R] B.S2x A0
C67_NOP(5);
return ind1;
}
/* generate a jump to a fixed address */
void gjmp_addr(int a)
{
Sym *sym;
// I guess this routine is used for relative short
// local jumps, for now just handle it as the general
// case
// define a label that will be relocated
sym = get_sym_ref(&char_pointer_type, cur_text_section, a, 0);
greloc(cur_text_section, sym, ind, R_C60LO16);
greloc(cur_text_section, sym, ind + 4, R_C60HI16);
gjmp(0); // place a zero there later the symbol will be added to it
src/c67-gen.c view on Meta::CPAN
C67_IREG_B_REG(C67_invert_test ^ inv, C67_compare_reg, C67_A0); // [!R] B.S2x A0
C67_NOP(5);
t = ind1; //return where we need to patch
} else if (v == VT_JMP || v == VT_JMPI) {
/* && or || optimization */
if ((v & 1) == inv) {
/* insert vtop->c jump list in t */
// I guess the idea is to traverse to the
// null at the end of the list and store t
// there
n = vtop->c.i;
while (n != 0) {
p = (int *) (cur_text_section->data + n);
// extract 32 bit address from MVKH/MVKL
n = ((*p >> 7) & 0xffff);
n |= ((*(p + 1) >> 7) & 0xffff) << 16;
src/configure view on Meta::CPAN
fi
fi
if test -f "/lib/ld-uClibc.so.0" ; then
confvars="$confvars uClibc"
fi
fi
fi
else
# if cross compiling, cannot launch a program, so make a static guess
case $cpu in
powerpc|mips|s390) bigendian=yes;;
esac
fi
# a final configuration tuning
$cc -v --help > cc_help.txt 2>&1
W_OPTIONS="declaration-after-statement"
for i in $W_OPTIONS; do
O_PRESENT="$(grep -- -W$i cc_help.txt)"
src/tcc-doc.texi view on Meta::CPAN
@item .string string[,...]
@item .asciz string[,...]
@item .ascii string[,...]
@end itemize
@section X86 Assembler
@cindex assembler
All X86 opcodes are supported. Only ATT syntax is supported (source
then destination operand order). If no size suffix is given, TinyCC
tries to guess it from the operand sizes.
Currently, MMX opcodes are supported but not SSE ones.
@node linker
@chapter TinyCC Linker
@cindex linker
@section ELF file generation
@cindex ELF
( run in 0.432 second using v1.01-cache-2.11-cpan-702932259ff )