Tiny Core Linux
- 1 year ago
- 0
- 0
Tiny C Compiler ( англ. Tiny C Compiler — «крошечный компилятор Си»), или TinyCC , или TCC — компилятор C для платформы x86 .
Работает в ОС Linux , KolibriOS , Microsoft Windows . Существуют также версии для ARM , TMS320C67xx . Распространяется по лицензии GNU LGPL .
#!/usr/local/bin/tcc -run
Также, наличие библиотеки
libtcc
позволяет осуществлять динамическую генерацию кода. С помощью этой библиотеки пользователь, например, может скомпилировать строку, содержащую программу на Си, после чего получить доступ к любому глобальному символу (переменной или функции), определенному в программе.
TCC поддерживает не только стандарт
ANSI C
, но и большую часть нового стандарта
ISO C99
и многие
расширения GNU C
, включая
ассемблерные
вставки. TCC также имеет собственные расширения, например, представление чисел в двоичном коде (
0b101
вместо
5
), а также предопределенный макрос
__TINYC__
, с помощью которого можно определить, используется ли TCC.
TCC первоначально разрабатывался для ОС Linux , однако начиная с версии 0.9.23 ( 17 июня 2005 ) работает и в ОС Microsoft Windows .
Первый вариант TCC был разработан как Obfuscated Tiny C Compiler (OTCC). OTCC — программа, написанная Фабрисом Белларом для участия в конкурсе International Obfuscated C Code Contest (IOCCC) в 2002 году (на официальном сайте конкурса Фабрис Беллар с программой OTCC числится среди победителей конкурса за 2001 год .) С того времени Беллар значительно расширил функциональность программы и сделал её более понятной.
На данный момент проект TCC продолжает развиваться. Существует активный список рассылки, а текущая версия от Фабриса Беллара доступна через CVS . Однако, официальная разработка TCC замедлилась в связи с занятостью Беллара в других проектах. На данный момент (апрель 2012) на сайте разработчика висит сообщение, что он больше не занимается поддержкой компилятора.
Роб Лендли, используя Mercurial SCM , создал версию TCC, включающую различные патчи от сторонних разработчиков.
Помимо обозначенных выше, существуют и другие модификации TCC и патчи для него, такие как, неофициальная коллекция патчей от Дейва Доджа, патчи от Debian и , а также патчи для GCC от grischka.
В версии TCC 0.9.23 была обнаружена уязвимость, получившая номера CVE-2006-0635
и Open Source Vulnerability Database vulnerability 22956
. В отчёте было сказано, что TCC «содержит ошибку, способную вызвать проблемы с безопасностью в программах, скомпилированных с его помощью. Компилятор не способен возвращать беззнаковое значение оператора
sizeof
, что может привести к
переполнениям целых чисел
в скомпилированных объектах». Эта уязвимость была закрыта в версии 0.9.24.
На основе TCC создан загрузчик (англ.) , позволяющий компилировать и загружать ядро Linux непосредственно из исходных текстов.