powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Link obj files
11 сообщений из 11, страница 1 из 1
Link obj files
    #40109598
Vizit0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача: избавиться от внешних длл.
Взята одна из них, в частности libffi.dll (версии 3.2)

Сначала через DLL to Liv 3.0 получил lib. Потом скормил это в objconv.exe -lx libffi.lib, получил несколько обьектников.
Вот беру из них нужный, libffi.obj, и пытаюсь сделать {$LINK libffi}
Ругается на E2216 Can't handle section '.tls' in object file 'libffi.OBJ'

секция пустая, IDA ее видит. Есть несколько методов, связанных с tls, что ушли в другой obj, видимо секция связана с ними. Впрочем, эта пустая секция есть во всех 4х обьектниках.

Подскажите, можно как-то ее убрать?



Локументацию на objconv пахал вдоль и поперек. Доку на родной tlib тоже, но он просто не хавает эту либу. Да, в OMF формат тоже конвертил.
...
Рейтинг: 0 / 0
Link obj files
    #40109600
Vizit0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на всяк приложу файл...
...
Рейтинг: 0 / 0
Link obj files
    #40109618
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vizit0r,

Взять MemoryModule?
...
Рейтинг: 0 / 0
Link obj files
    #40109619
Vizit0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Vizit0r,

Взять MemoryModule?


полезно, но не в моем случае. Мне очень желательно прилинковать именно обьектники.

Впрочем, изначальный вопрос уже неактуален, вооружился студией, и пытаюсь скомпилить из сурсов, чтобы потом прилинковать.
...
Рейтинг: 0 / 0
Link obj files
    #40109626
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vizit0r,
Распиши алгоритм? Тоже вот вопрос интересен.
...
Рейтинг: 0 / 0
Link obj files
    #40109628
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vizit0r,
я так линкую

{$l libsqlite3.a}
{$linklib libkernel32.a}
{$linklib libmsvcrt.a}
{$linklib libgcc.a}
...
Рейтинг: 0 / 0
Link obj files
    #40109690
Vizit0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIsk
Vizit0r,
я так линкую

{$l libsqlite3.a}
{$linklib libkernel32.a}
{$linklib libmsvcrt.a}
{$linklib libgcc.a}


это легко и просто, когда ты можешь скомпилировать под билдером, и взять из него обьектники. А когда нет - становится куда веселее.


ziv-2014
Vizit0r,
Распиши алгоритм? Тоже вот вопрос интересен.


начинал с https://lifeinhex.com/static-linking-of-bassmod-in-delphi/
а дальше маны и гугл.
...
Рейтинг: 0 / 0
Link obj files
    #40109713
Vizit0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIsk,

а, в твоем случае это вообще FPC с linklib. Это отдельная песня, к сожалению в Delphi отсутствующая(
...
Рейтинг: 0 / 0
Link obj files
    #40109737
zedxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А не пробовали скомпилировать библиотеку в MinGW и слинковаться с объектными файлами? Правда, Delphi в таком случае желательно брать посвежее.

http://rvelthuis.de/articles/articles-cobjs.html
...
Рейтинг: 0 / 0
Link obj files
    #40109789
Vizit0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
от MinGW обьектники нормально не линкуются, орут про отсутствие 2х методов, что есть в соседнем обьектнике.
Пробую сейчас MS VS
...
Рейтинг: 0 / 0
Link obj files
    #40110165
Vizit0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прилинковал.
Простые методы работают.

В первом же методе чуть посложнее - выплыли проблемы откуда не ждали. В case switch.

Если смотреть через IDA обьектник - там идет ссылка вида
jmp ds:jpt_7A4[eax*4] ( FF 24 85 8C 0C 00 00)
где .rdata:00000C8C jpt_7A4

А вот если уже в моем коде смотреть на отладке - там
010D4344 FF248524000000 jmp dword ptr [eax*4+$0024]
ведет естественно в никуда, вот и ошибка.

да и искал я содержимое этой джамп-таблицы в моем exe - не нашел.


Или я чего-то не понимаю, но имхо линкер просто игнорит .rdata секцию при линковке.

Бред какой-то, тогда ничего сложнее hello world не работало бы из прилинкованных обьектников. Взять тот же zlib, или regexp.

Через dll все правильно, там адрес switch-таблицы, как и положено.

Кто-то может подсказать, куда копать дальше?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Link obj files
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]