On Wed, Aug 09, 2006 at 04:15:10AM +0400, Dmitry V. Levin wrote: > On Wed, Aug 09, 2006 at 04:07:26AM +0400, Alexey Tourbin wrote: > > В binutils более новой версии, чем у нас, реализована новая > > опция --hash-style=gnu. По утверждению редхатовцев, это дает > > 50% ускорение при запуске приложений. > > http://sources.redhat.com/ml/binutils/2006-06/msg00418.html > > Это даёт ~50% ускорение relocation'ов за счёт более подходящего алгоритма > хэширования. И это должно заметно сказать на скорости работы shell скриптов, в частности, на время загрузки системы. Кстати, 50% ускорение -- это во сколько раз? В два раза или в полтора? Скорость увеличивается, а время загрузки уменьшается. Следовало бы говорить именно о времени загрузки. > > В общем накапливается уже несколько моментов, ради которых всё стоит > > пересобрать: -D_FORTIFY_SOURCE, -fstack-protector, -pie, и вот теперь > > --hash-style. > > Я не совсем понимаю, как автоматизировать -pie, но и без -pie причин для > пересборки достаточно. Хуже другое: я не понимаю, как этот объём пакетов > выложить и как пользователи будут обновлять свои системы? Помнится во времена подготовки M22 ко всем пакетам было требование: пройти пересборку новым компилятором (gcc3.2). Тогда ещё правда не было ни регулярных пересборок, ни возможности автоматической пересборки; так что это требование имело большое значение. Теперь эти возможности есть, однако предлагаю поступить старым способом. В час X, когда базовая сборочная среда будет готова, отрывается сезон пересборки пакетов. Maintainer'ам желательно найти какой-нибудь не слишком пустяковый повод для пересборки пакетов. Например, разобраться c x86_64, или исправить что-нибудь из багзиллы. В час Y сезон плавно закрывается и наступает более глубокий фриз. Думаю, что значительная часть пакетов, и в особенности все важные пакеты, в промежуток X-Y будут пересобраны. Стоит ли тогда автоматически пересобрать оставшиеся пакеты, я не знаю. -pie действительно непросто автоматически прошить. Но можно воспользоваться вот какими соображениями. 1) если при компиляции объектных файлов не указана опция -fpic/-fPIC, тогда автоматически врубать -fpie, если только не указана опция -fno-pie. 2) если при линковке не указана опция -shared, то автоматически врубать опцию -pie, если только не указана -no-pie (кстати, кажется такой опции нет).