LINUX.ORG.RU
ФорумJob

Ищем разработчика на Си для интеграции libtcc в radare2

 


0

1

Ввиду внезапного отказа одного из разработчиков необходимо интегрировать libtcc в radare2 для разработки cparse модуля.

Описание работы:

Write parser on pure C without external dependencies for data
descriptions with C syntax, e.g.
struct qwe {
        int i2;
        long i3;
        struct wer {
             char rt[5];
             int* 4;
        };
        unsigned int y;
};
It should support:
1) Recursive parsing (nested structs)
2) Structs, unions, enums, arrays and bitfields
3) Signed/unsigned
4) Additional attributes
5) Simple preprocessor for :
     a) #define/#undefine
     b) #ifdef/#if defined
     c) AND, OR, NOT operations on defined contstants (e.g. #if defined(SOME1) || defined(SOME2)
     d) #include
6) Function definitions, like
    int *some_function(int arg1, char *arg2, char rt[5]);
7) Function attributes (inline, static, volatile)
8) Variable arguments count (like e.g. printf() function definition)
9) __attribute__((packed))
10) Multidimensional arrays
11) Multiple data and/or function definitions in the file
12) All standard C data types + linux kernel (uint8_t, etc) + clang types (u8, u16, i32, etc)
All syntax taken from C standard.
It shouldn't be written using bison/antlr/etc.
It should be integrated in radare2 using it's api, see here
old and buggy implementation
https://github.com/radare/radare2/tree/master/libr/anal/cparse
Result should be licensed under LGPLv3

Полное ТЗ (плюс дополнительная информация) - http://sync.in/nbnmBQ9N05

См. также коммиты https://github.com/radare/radare2/commit/a21afe405322a3b1ffcecf754ee75cccbb27... и https://github.com/radare/radare2/commit/537cbefdbffe150a1595a3d63ce0bbeb56d3...

Срок: 2 месяца

Цена вопроса: 500 евро.

★★★★★

Последнее исправление: XVilka (всего исправлений: 2)

Ответ на: комментарий от ziemin

Совершенно не вписывается в ТЗ, да еще и куча зависимостей.

XVilka ★★★★★
() автор топика

Зачем мелочиться, прикрути clang - тогда в будущем не будет проблем даже с крестами

annulen ★★★★★
()
Ответ на: комментарий от annulen

Для крестов возьмем более высокоуровневый язык - javascript или python. Для базового функционала не хотелось бы тащить clang в зависимостях (мы его уже рассматривали в качестве кандидатуры) - radare2 собирается и для android, и для ios.

XVilka ★★★★★
() автор топика
Ответ на: комментарий от XVilka

Для крестов возьмем более высокоуровневый язык - javascript или python.

И получится ещё один кривой велосипед.

Deleted
()
Ответ на: комментарий от Deleted

Не факт - декомпиляцию все равно не на си придется писать - так что на выбранном языке будем обрабатывать и более сложные структуры (как в плюсах)

XVilka ★★★★★
() автор топика

Result should be licensed under LGPLv3
Цена вопроса: 500 евро.

Удачи!

bhfq ★★★★★
()
Ответ на: комментарий от XVilka

Для крестов возьмем более высокоуровневый язык - javascript или python.

Если у вас нет религиозных чувств против Python, возьмите pycparser: https://github.com/eliben/pycparser Правда, препроцессора там нет.

P.S. «in C», не «on C».

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 3)
Ответ на: комментарий от XVilka

Для базового функционала не хотелось бы тащить clang в зависимостях

Ага, поэтому нужно взять один недокомпилятор для базового функционала и написать велосипед для небазового. Неконструктивно.

radare2 собирается и для android, и для ios.

Можно подумать, что clang под них не соберется.

Если напрягает размер бинарника и нужен только парсер - LLVM можно очень сильно обрезать, да и сам Clang тоже (убрать static analyser и прочую ерунду)

annulen ★★★★★
()

Размер оплаты и сложность задачи предполагают какое то нириальное сочетание джастфорфана и опыта.

baverman ★★★
()

It shouldn't be written using bison/antlr/etc.

бизон-то чем не угодил?

rand
()

идея кузявая. честь и хвала конечно. но сразу вопросы

зачем объявил на главной странице, что твоя штукенция не имеет зависимостей?

цель реинжинирить всякую бинарь. но зачем поддерживать запуск программ на стольких осях? не проще ли доставить бинарь на GNU/Linux там отпарсить и вернуть ответ обратно? ты же собираешься атачить удаленный gdb. почему также не сделать с самой программой?

punya ★★
()
Последнее исправление: punya (всего исправлений: 2)

сейчас вроде не 1980, чтобы текст на си парсить. Регекспы уже есть или их придётся тоже писать?

dimon555 ★★★★★
()
Ответ на: комментарий от punya

Чтобы с планшета что-то можно было посмотреть, когда нет доступа к компьютеру/ноутбуку.

XVilka ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.