> man operating_systems
Модераторы: Roman I Khimov, Wanderer, Dron
Автор Добавил
Dreamer
Вторник 23.08.2005 12:30

ID пользователя #9
Зарегистрирован: Воскресенье 04.07.2004 14:01
Сообщений: 235
Пытаюсь сделать свой линковщик DLL и столкнулся с таким вопросом. Надо ли при загрузке DLL файла в память перемещать секции типа .text, .data, .reloc и прочие, если их реальное размещение в самом файле не совпадает со значением Offset секции?

Дело в том, что вчера пытался отследить, куда ведет значение Entry из заголовка PE. Указывало, что RVA входной точки равно 0x1000, а на самом деле код входной точки располагался по смещению 0x200 относительно начала файла. Потом до меня наконец дошла идея глянуть на описание секции .text. Оказалось, что ее начало в файле = 0x200, а Offset = 0x1000. И там и находится входная точка.

Вот почему и возник этот вопрос.

Жизнь на Линуксе есть!
Наверх
Dron
Вторник 23.08.2005 13:01


ID пользователя #13
Зарегистрирован: Понедельник 05.07.2004 11:16
Местонахождение: Москва
Сообщений: 651
Честно говоря с DLL не возился...
Но вот ELF обычно делается так, чтобы секции не приходилось бы перемещать, то есть все заранее выровнено на размер страницы.

Одну из двух вечных российских проблем можно, в принципе, решить с помощью асфальтоукладчиков и катков. А вот с дорогами, конечно, будет труднее...

Андрей Валяев
Наверх
Сайт
Roman I Khimov
Вторник 23.08.2005 14:20

ID пользователя #1
Зарегистрирован: Воскресенье 27.06.2004 12:37
Местонахождение: Санкт-Петербург
Сообщений: 601
Угу, на DLL я тоже не смотрел, а вот ELF разбирал помаленьку, было такое. objdump, распечатанные хексы, потом дизассемблированный код еще в AT&T синтаксисе, весело было...

В общем, надо вопрос "Загрузка DLL" закрыть и плавно перейти к ELF. Благо по нему есть прекрасные документы.


Греби и улыбайся!
Наверх
Сайт
Dreamer
Вторник 23.08.2005 15:01

ID пользователя #9
Зарегистрирован: Воскресенье 04.07.2004 14:01
Сообщений: 235
> и плавно перейти к ELF

Если мне кто-то покажет, как в Visual Studio делать ELF файлы, то я над этим подумаю...

Жизнь на Линуксе есть!
Наверх
Roman I Khimov
Вторник 23.08.2005 15:58

ID пользователя #1
Зарегистрирован: Воскресенье 27.06.2004 12:37
Местонахождение: Санкт-Петербург
Сообщений: 601
Легко! Для начала удаляем Visual Studio...


Греби и улыбайся!
Наверх
Сайт
Chizh
Вторник 23.08.2005 19:18
ID пользователя #90
Зарегистрирован: Понедельник 13.09.2004 18:42
Сообщений: 170
Dreamer написал(а) ...
Надо ли при загрузке DLL файла в память перемещать секции типа .text, .data, .reloc и прочие, если их реальное размещение в самом файле не совпадает со значением Offset секции?

Да, каждая секция должна загружаться по своему виртуальному адресу, который может и не совпадать со смещением внутри файла.
Наверх
Сайт
Wanderer
Среда 24.08.2005 00:08

ID пользователя #2
Зарегистрирован: Вторник 29.06.2004 20:13
Местонахождение: Беларусь, Гомель
Сообщений: 76
Экстремист, блин.

Доказывая идиоту, что он идиот, ты сам становишься идиотом.
Наверх
Сайт
Dreamer
Среда 24.08.2005 11:12

ID пользователя #9
Зарегистрирован: Воскресенье 04.07.2004 14:01
Сообщений: 235
> Экстремист, блин.

И ничего такого ОСь основанная на нескольких DLL - это даже весело, а если учесть, что эти DLL написаны с помощью Microsoft Visual Studio - становится вдвойне веселее

Жизнь на Линуксе есть!
Наверх
 

Перейти:     Наверх

Транслировать сообщения этой темы: rss 0.92 Транслировать сообщения этой темы: rss 2.0 Транслировать сообщения этой темы: RDF
Powered by e107 Forum System

© OSRC.info, 2004-2010.
Авторские права на любые материалы, авторы которых явно указаны, принадлежат их авторам. По вопросам публикации таких материалов обращайтесь к авторам.
Авторские права на любые другие материалы принадлежат OSRC.info.
Сайт является помещением библиотеки. Копирование, сохранение на жестком диске или иной способ сохранения произведений осуществляются пользователями на свой риск.
При использовании материалов сайта ссылка на OSRC.info обязательна.