Page 2 of 2

Re: LibC(MenuetLibC) + GCC

Posted: Mon Feb 21, 2011 4:34 pm
by CleverMouse
Я закоммитила содержимое http://diamond.kolibrios.org/menuetlibc.7z с поправкой в опциях gcc в репозиторий.
Sorcerer, размер стека вполне достаточен.

Re: LibC(MenuetLibC) + GCC

Posted: Mon Feb 21, 2011 5:10 pm
by CleverMouse
"Программист, написавший код, понимает его скорее всего лучше, чем кто-либо еще, мне кажется." - это такой эвфемизм для "не буду я фиксить чужие баги"?

Re: LibC(MenuetLibC) + GCC

Posted: Mon Feb 21, 2011 6:15 pm
by Serge
Фиксированный размер стека не есть хорошо. Есть способ передать значение в ld из командной строки или только через скрипт ?
Разумеет речь идёт об ELF.

Re: LibC(MenuetLibC) + GCC

Posted: Mon Feb 21, 2011 7:30 pm
by CleverMouse
Serge, в формате ELF физически не существует поля размера стека. Если речь идёт о том, чтобы задавать нужный размер стека в программе для Колибри - у ld есть опция командной строки --defsym=SYMBOL=VALUE, с помощью которой можно определить какой-нибудь символ, который потом можно использовать в скрипте.

Re: LibC(MenuetLibC) + GCC

Posted: Mon Feb 21, 2011 11:10 pm
by Serge
CleverMouse

Спасибо. Попробую сделать динамическое выделение стека как в newlib.

Re: LibC(MenuetLibC) + GCC

Posted: Tue Feb 22, 2011 10:49 am
by Albom
Нашёл интересную статью о том, как можно разбирать строку на аргументы (в принципе, всё было и так понятно, но с ней вообще всё ясно). Да, алгоритм не идеальный, но очень простой. Будет время, попробую что-нибудь сделать с crt...
http://stackoverflow.com/questions/1706 ... -argv-argc

Re: LibC(MenuetLibC) + GCC

Posted: Tue Feb 22, 2011 11:41 am
by CleverMouse
Albom, Sorcerer, вы действительно верите, что ошибка в коде разбора параметров? По второму из "спойлеров" из viewtopic.php?p=31758#p31758 очевидно же, что нет - иначе эквивалентное с точки зрения языка Си преобразование ничего бы не меняло.

Re: LibC(MenuetLibC) + GCC

Posted: Tue Feb 22, 2011 11:53 am
by Albom
CleverMouse
Я понятия не имею - в разборе или нет. Что-то где-то затирается... Может стек виноват, сказать не могу. Но в crt, я считаю, покопаться нужно... Во-первых, там есть "#if 0" со старой реализацией разбора строки. Для удобства восприятия исходника можно всё связанное с ней убрать. А во-вторых, разбор строки работает неправильно, так как при запуске программы без параметров, argc = 0, а должно быть 1 и в argv[0] указатель на имя программы.

Re: LibC(MenuetLibC) + GCC

Posted: Tue Feb 22, 2011 11:58 am
by CleverMouse
Albom, ага, из-за этого код нужно полностью переписать и верить, что ошибка, вызванная другими причинами, уйдёт сама.

Re: LibC(MenuetLibC) + GCC

Posted: Tue Feb 22, 2011 12:44 pm
by Albom
Тогда что может быть причиной?

Re: LibC(MenuetLibC) + GCC

Posted: Tue Feb 22, 2011 12:53 pm
by Serge
Однако в коде действительно ошибки.

Code: Select all

if(__menuet__app_param_area[0]!='\0')
 __crt0_setup_arguments();
Если командная строка пустая, то и argc=0.

Re: LibC(MenuetLibC) + GCC

Posted: Tue Feb 22, 2011 1:01 pm
by CleverMouse
Значит, Albom, возмущавшийся таким поведением, может не переписывать код, а удалить одну строчку. Естественно, к проблеме Sorcerer эта недоработка отношения не имеет.
P.S. Раз уж упоминали diamond'а... эти строчки присутствуют и на menuetlibc.sf.net, так что это не он.

Re: LibC(MenuetLibC) + GCC

Posted: Tue Feb 22, 2011 1:11 pm
by Albom
Согласен, что к проблеме Sorcerer это отношения не имеет.
Кстати, я не возмущался, просто меня смущает несколько мест в коде.

Re: LibC(MenuetLibC) + GCC

Posted: Tue Mar 03, 2015 9:08 pm
by Leency
http://websvn.kolibrios.org/filedetails ... uet%2Fos.h

Почему

Code: Select all

#define EVENT_BUTTON              0x00000004
?

Кнопка ведь это 3 или я чего-то не понимаю.

Re: LibC(MenuetLibC) + GCC

Posted: Tue Mar 03, 2015 9:52 pm
by dunkaist
Третий бит: 1 SHL 2. Третий с единицы, второй с нуля.