Формат MAP-файла, генерируемый компилятором или линкеро

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Сообщение Cheb » 09.02.2008 12:28:10

Кстати, долго бился лбом об стенку чего у меня екзешник получается такой здоровый - мегабайт после полного бруталстрипа и upx'а, да и жмётся хреново... :evil:

Потом долго бился лбом об стенку, вспомнив, что у меня прямо в него влинковывается куча картинок *.jpg и *.png, чтобы графический интерфейс гарантированно работал в любую погоду... :oops:
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Сообщение Cheb » 09.02.2008 13:59:21

Улучшил, припахал zstream, внешний файл получается в 3 раза меньше. :D
[вжимает голову в плечи на случай если что-то случайно сломал и последуют гнилые овощи... :lol:]
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Сообщение Padre_Mortius » 09.02.2008 14:36:35

скомпилил проект brutalstrip с помощью fpc 2.3.1 из svn от 07/02/08.
Бинарник получается не рабочий после стрипа =(
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Cheb » 09.02.2008 16:21:11

Значит, что-то лишнее отрезает, чего в екзешниках от 2.2.0 не было.
Увы, SVN я пользоваться не умею, буду ждать 2.4.0
Совет: brutalstrip пишет в консоль имена всех секций, и какие из них вырезал. Вот как это должно выглядеть:

Код: Выделить всё
Brutally stripping ../../../chentrah.exe
   .text     665K
   .data     795K
   .rdata      3K
   .bss        0K
   .idata      3K
   .rsrc      13K
   /4        353K - removed
   /16       248K - removed
   /30       229K - EXTRACTED
  total crap count: 831K
  line info: 229K, compressed to 64K


-- проверьте, что ещё кроме /4, /16 и /30, он отрезает, и запостите сюда. Я смогу добавить в базу "неприкасаемых" секций (строка 112 un_xtrctdwrflnfo)
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Сообщение Padre_Mortius » 09.02.2008 16:28:47

Код: Выделить всё
Brutally stripping transport.exe
   .text    1265K
   .data     409K
   .bss        0K
   .idata     10K
   .rsrc      15K
   .stab    1284K - removed
   .stabstr 7960K - removed
  total crap count: 9244K
  line info: 0K, compressed to 0K


Это полностью весь вывод программы
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Cheb » 09.02.2008 17:19:13

Всё, последний апдейт.
Можно хранить .zdli файлы в отдельной папке, я там массив для путей поиска добавил.

Да, и для Линукса все эти танцы с бубном беспоолезны, поскольку отладочная инфа из екзешника ничем не вырезается (счастливые 80% к толщине) - зато chelinfo её всегда найдёт.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Сообщение Cheb » 09.02.2008 17:25:21

Это полностью весь вывод программы

:shock:
Тогда я - в глубоких и заслуженных непонятках.
Должно работать после обрезания, я и под вайном и под настоящим Виндовсом проверял - всё работало :(
Значит, упустил что-то. :(

Хотя - вот размер lineinfo - ноль килобайт, не должно быть такого при таком здоровом екзешнике. Может, из-за этого сглючило?

Оно компилировалось с ключом -gw ? Без любых других g* ключей? Наличие любых других ключей, относящихся к отладке, приводит к тому, что dwarf line info не генерируется!
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Сообщение Padre_Mortius » 09.02.2008 18:01:30

компилил из лазаря с установками по умолчанию. Может это и было роковой ошибкой. Но в такой ситуации он портит заголовок.

P.S. попробую собрать под голым fpc. О результатах отпишусь
P.P.S компилил с fpc командой
Код: Выделить всё
fpc.exe -gw brutalstrip.pp

Результат тот же. С какими параметрами у Вас собралось и работает?
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Sergei I. Gorelkin » 09.02.2008 23:31:53

Шестое чувство мне подсказывает, что имена секций .stab и .stabstr - это все-таки отладочная информация stabs, а не dwarf...
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Cheb » 10.02.2008 00:15:44

С какими параметрами у Вас собралось и работает?

fpc -gw brutalstrip.pp

Шестое чувство мне подсказывает, что имена секций .stab и .stabstr - это все-таки отладочная информация stabs, а не dwarf...

Вот именно. С -gw надо компилить в первую очередь ту программу, которая использует модуль un_lineinfo и которую потом бруталстрипаете. Самому brutalstrip от него ни жарко ни холодно.

Fedora 8+Wine 0.9.52 | Windows XP
FPC 2.2.0
Lazarus 0.9.24

З.Ы. Попобуйте заново скачать у меня зип с библиотекой, я его сегодня несколько раз обновлял и багофиксил. Особенно учитывая вот это:
Но в такой ситуации он портит заголовок.

З.З.Ы. Попробуйте ещё upx'ом после бруталстрипа, и раскажите, что upx скажет. Когда я дебажил бруталстрип, upx мне такие песни пел на тему "не могу сжать, побочная информация между секциями".
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Сообщение Alexx2000 » 10.02.2008 02:47:57

Проверил на тестовой проге chelinfo_test.pp,
компилировал так:
Код: Выделить всё
fpc -gw chelinfo_test.pp

После обработки brutalstrip, прога не запускается, выдает что программа не является win32 и т.д.
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 489
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Сообщение Cheb » 10.02.2008 04:03:27

Блин :(
Ладно, бруталстрип будем считать пока неработоспособным (но почему у меня-то всё работает?).

Но всё остальное-то?
В чистом виде chelinfo_test пашет?
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Сообщение Cheb » 10.02.2008 04:19:08

Опаньки.
Под Виндовсом-то у меня стоит 2.0.4!
А все утилиты - бруталстрип и прочее я проверял под Линуксом, где действительно 2.2.0. Но компилировались они и работали как линуксовые екзешники.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Сообщение Cheb » 10.02.2008 04:55:27

Блин, теперь у меня запускаться перестало. :evil:

Найденное решение: сожмите бруталстрипнутый екзешник upx'ом!
Что бы я там ни накосячил, upx всё чинит, и результирующий файл запускается нормально.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Сообщение Alexx2000 » 10.02.2008 14:03:09

Cheb писал(а):Но всё остальное-то?
В чистом виде chelinfo_test пашет?

В чистом виде работает.

Найденное решение: сожмите бруталстрипнутый екзешник upx'ом!
Что бы я там ни накосячил, upx всё чинит, и результирующий файл запускается нормально.

Точно после upx заработало :o
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 489
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Пред.След.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru