> Что с этой информацией делать, честно говоря не знаю.
что выдают следующие команды в gdb:
bt
info sharedlibrary
> это адрес системной функции. Как узнать какой именно?
я опять же хз как это в BSD, а в линуксе можно поставить пакеты с отладочной информацией для системных либ.
> на сайте указано только i686, если я не ошибаюсь, то это поддерживалось еще Пнем1
i686 -- это pentium pro. по идее на pIII должно работать.
> в stage3 отладчика нету
его несложно собрать.
> configure:3726: flex conftest.l
> ./configure: line 3727: 25011 Bus error flex conftest.l
Bus error во flex. Вероятные причины в порядке убывания вероятности:
- flex собран с инструкциями не поддерживаемыми твоим процессором
- битая память/проблема в железе.
В любом случае стоит попытаться выполнить оригинальную команду ещё раз. Если заработает (или сломается в другом месте) -- явно проблема железа.
Если flex ты собрал сам раньше, это повод пересмотреть флаги компилятора.
Если скачал бинарник -- проверь, что он рассчитан на твой процессор. Если рассчитан -- это повод зарепортить баг.
Если хочешь поковыряться в этом поглубже -- зайди в /var/tmp/portage/sys-devel/bc-1.06.95-r1/work/bc-1.06.95 и попробуй выполнить flex conftest.l под отладчиком:
- запусти gdb --args flex conftest.l
- выполни команду run
- отладчик остановится на инструкции вызвавшей сбой. Посмотри, что там командой x/i $pc
NFly: вы почитайте исходники сначала, книги надо подобрать в зависимости от того, что будет непонятно: может быть вам нужен учебник языка С++, а может быть мануал по внутренностям gcc.
> например безопасность majetree: вы не могли бы говорить более развёрнуто, какая именно безопасность? Приложения запущенные под wine не имеют доступа к файлам снаружи вайновской песочницы.
> при том, что учу все, что мне дают в универе и имею один из самых высоких баллов по этому предмету
молодец, возьми пирожок, и не думай, что для кого-то кроме тебя это что-то значит.
> ну, не '0', а 48, если быть точным... Adamos: если быть точным, то именно '0', поскольку '0' имеет тип char, а char может быть как знаковым, так и беззнаковым. 48 - это int.
Vi: сказанное относится не к регистрам, а к адресам вида сегмент:смещение записанным в память, которые могут быть загружены в любые регистры.
Приведённый вами код тоже подвергается релокации DOS'ом.
DS нужно установить потому, что при запуске EXE DS указывает на PSP, а не на сегмент данных.
Вот, например, у COM-файлов сегменты данных, кода и стека совмещены, а первые 256 байт зарезервированы как раз для PSP. Код и данные адресуются от начала PSP, куда указывает DS (а также CS и SS) при старте, поэтому модифицировать DS не нужно.
Переполнение буфера по соседству с username?