Информация об изменениях

Сообщение Re: Посоветуйте литературу от 21.05.2020 17:52

Изменено 21.05.2020 17:55 lpd

Re: Посоветуйте литературу
Здравствуйте, plastictown, Вы писали:

P>Устройство виртуальной памяти в целом, что происходит в момент загрузки .so в память, в какой момент и как виртуальный адрес транслируется в физический,

P>как устроен механизм, связывающий исполняемый файл с библиотекой (что находится в исполняемом файле и каким образом это позволяет вызывать нужные процедуры из библиотеки).
P>Я вроде бы написал много библиотек, но разобраться с этими вопросами руки не доходили.

Гугли elf format и relocations.
Вообще советую создать простейший .so файл и тестовую программу. Сначала дизассемблируй тестовую программу, и в местах ссылок на библиотеку ты увидишь нули. Потом с помощью gdb загрузи и дизассемблируй уже загруженную программу с библиотекой, и ты увидишь в коде программы правильные адреса символов из библиотеки.
С помощью того-же objdump -t посмотри где символы в библиотеке, с помощью objdump -r/objdump -R разберись в релокациях и прикинь как они используются загрузчиком. Там не так мало, но найти концы можно.
Re: Посоветуйте литературу
Здравствуйте, plastictown, Вы писали:

P>Устройство виртуальной памяти в целом, что происходит в момент загрузки .so в память, в какой момент и как виртуальный адрес транслируется в физический,

P>как устроен механизм, связывающий исполняемый файл с библиотекой (что находится в исполняемом файле и каким образом это позволяет вызывать нужные процедуры из библиотеки).
P>Я вроде бы написал много библиотек, но разобраться с этими вопросами руки не доходили.

Гугли elf format и relocations.
Вообще советую создать простейший .so файл и тестовую программу. Сначала дизассемблируй тестовую программу, и в местах ссылок на библиотеку ты увидишь нули или неполностью разресолвленные адреса. Потом с помощью gdb загрузи и дизассемблируй уже загруженную программу с библиотекой, и ты увидишь в коде программы правильные адреса символов из библиотеки.
С помощью того-же objdump -t посмотри где символы в библиотеке, с помощью objdump -r/objdump -R разберись в релокациях и прикинь как они используются загрузчиком. Там не так мало, но найти концы можно.