Sergey Oboguev (oboguev) wrote,
Sergey Oboguev
oboguev

(сугубо историко-программистское)

Разбирая файлы на магнитной ленте доисторической давности, обнаружил древний файл, который правил драйвер теминала VAX/VMS 4.7 для его обрусения. В VMS, кто не знает, была развитая программа PATCH, которая позволяла не только править байты, но вставлять в код новые инструкции, удалять или замещать существующий код, добавлять новые данные и т.д.

Значительная часть файлов в дистрибутиве очередной версии системы в те времена поставлялась именно посредством патчей: вместо перекомпилированного EXE файла поставлялись патч-файлы, которые правили уже находившийся на машине EXE файл.

Что улыбнуло: оказывается, когда я взялся править драйвер, то в самом PATCH-е обнаружилась ошибка, которая в определённых редких случаях (под которые однако как раз попадал TTDRIVER) приводила к неправильному вычислению адреса расширяющей области, в которую patch помещал новый код и новые данные.

Поэтому пришлось сначала отпатчировать сам патч, и потому уже патчированным патчем патчить драйвер. ;-)

И попутно временно помечать драйвер как PIC-image, поскольку patch считал, что увеличивать размер non-PIC shareable images -- затея с опасными последствиями, в которой он принимать участия не хочет.

"Так они и жили", хотя сейчас это кажется почти невероятным.


Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 2 comments