Я закоммитила содержимое http://diamond.kolibrios.org/menuetlibc.7z с поправкой в опциях gcc в репозиторий.
Sorcerer, размер стека вполне достаточен.
LibC(MenuetLibC) + GCC
-
Сделаем мир лучше!
"Программист, написавший код, понимает его скорее всего лучше, чем кто-либо еще, мне кажется." - это такой эвфемизм для "не буду я фиксить чужие баги"?
Фиксированный размер стека не есть хорошо. Есть способ передать значение в ld из командной строки или только через скрипт ?
Разумеет речь идёт об ELF.
Разумеет речь идёт об ELF.
Serge, в формате ELF физически не существует поля размера стека. Если речь идёт о том, чтобы задавать нужный размер стека в программе для Колибри - у ld есть опция командной строки --defsym=SYMBOL=VALUE, с помощью которой можно определить какой-нибудь символ, который потом можно использовать в скрипте.
Сделаем мир лучше!
CleverMouse
Спасибо. Попробую сделать динамическое выделение стека как в newlib.
Спасибо. Попробую сделать динамическое выделение стека как в newlib.
Нашёл интересную статью о том, как можно разбирать строку на аргументы (в принципе, всё было и так понятно, но с ней вообще всё ясно). Да, алгоритм не идеальный, но очень простой. Будет время, попробую что-нибудь сделать с crt...
http://stackoverflow.com/questions/1706 ... -argv-argc
http://stackoverflow.com/questions/1706 ... -argv-argc
Albom, Sorcerer, вы действительно верите, что ошибка в коде разбора параметров? По второму из "спойлеров" из viewtopic.php?p=31758#p31758 очевидно же, что нет - иначе эквивалентное с точки зрения языка Си преобразование ничего бы не меняло.
Сделаем мир лучше!
CleverMouse
Я понятия не имею - в разборе или нет. Что-то где-то затирается... Может стек виноват, сказать не могу. Но в crt, я считаю, покопаться нужно... Во-первых, там есть "#if 0" со старой реализацией разбора строки. Для удобства восприятия исходника можно всё связанное с ней убрать. А во-вторых, разбор строки работает неправильно, так как при запуске программы без параметров, argc = 0, а должно быть 1 и в argv[0] указатель на имя программы.
Я понятия не имею - в разборе или нет. Что-то где-то затирается... Может стек виноват, сказать не могу. Но в crt, я считаю, покопаться нужно... Во-первых, там есть "#if 0" со старой реализацией разбора строки. Для удобства восприятия исходника можно всё связанное с ней убрать. А во-вторых, разбор строки работает неправильно, так как при запуске программы без параметров, argc = 0, а должно быть 1 и в argv[0] указатель на имя программы.
Albom, ага, из-за этого код нужно полностью переписать и верить, что ошибка, вызванная другими причинами, уйдёт сама.
Тогда что может быть причиной?
Однако в коде действительно ошибки.
Если командная строка пустая, то и argc=0.
Code: Select all
if(__menuet__app_param_area[0]!='\0')
__crt0_setup_arguments();
Значит, Albom, возмущавшийся таким поведением, может не переписывать код, а удалить одну строчку. Естественно, к проблеме Sorcerer эта недоработка отношения не имеет.
P.S. Раз уж упоминали diamond'а... эти строчки присутствуют и на menuetlibc.sf.net, так что это не он.
P.S. Раз уж упоминали diamond'а... эти строчки присутствуют и на menuetlibc.sf.net, так что это не он.
Сделаем мир лучше!
Согласен, что к проблеме Sorcerer это отношения не имеет.
Кстати, я не возмущался, просто меня смущает несколько мест в коде.
Кстати, я не возмущался, просто меня смущает несколько мест в коде.
http://websvn.kolibrios.org/filedetails ... uet%2Fos.h
Почему
?
Кнопка ведь это 3 или я чего-то не понимаю.
Почему
Code: Select all
#define EVENT_BUTTON 0x00000004
Кнопка ведь это 3 или я чего-то не понимаю.
Из хаоса в космос
Третий бит: 1 SHL 2. Третий с единицы, второй с нуля.
Who is online
Users browsing this forum: No registered users and 0 guests