[devel] PIE Executables

Led =?iso-8859-1?q?ledest_=CE=C1_gmail=2Ecom?=
Чт Май 22 10:50:27 MSD 2008


Thursday, 22 May 2008 08:02:03 Kirill A. Shutemov написав:
> On Thu, May 22, 2008 at 03:04:58AM +0300, Led wrote:
> > Thursday, 22 May 2008 02:41:59 Dmitry V. Levin написав:
> > > On Thu, May 22, 2008 at 01:06:54AM +0300, Led wrote:
> > > > Thursday, 22 May 2008 00:49:17 Dmitry V. Levin написав:
> > > > > On Wed, May 21, 2008 at 11:44:39PM +0300, Led wrote:
> > > > > > Wednesday, 21 May 2008 22:21:33 Kirill A. Shutemov написав:
> > > > > > > On Wed, May 21, 2008 at 09:02:42PM +0300, Led wrote:
> > > > > > > > Забавный случай:
> > > > > > > >
> > > > > > > > $ file ~/tmp/autofs-buildroot/usr/sbin/automount
> > > > > > > > automount: ELF 64-bit LSB shared object, x86-64, version 1
> > > > > > > > (SYSV), for GNU/Linux 2.6.9, stripped
> > > > > > > >
> > > > > > > > ?
> > > > > > > > Естественно, rpmbuild (fixup-libraries) делает ему "chmod
> > > > > > > > 644" :(
> > > > > > >
> > > > > > > Нет, это не естественно.
> > > > > > > shared object -- это и shared library и position independed
> > > > > > > executable. В fixup-libraries есть эвристика для отделения мух
> > > > > > > от котлет. chmod, по идее, должен делаться только для shared
> > > > > > > library.
> > > > > >
> > > > > > Нет там такой эвристики.
> > > > >
> > > > > Я эту эвристику туда поместил.  Если её оттуда не убрали, то она
> > > > > там есть. Если бы её не было, то ничего бы не работало.
> > > > >
> > > > > Маловероятно, но, возможно, эвристика дала сбой?
> > > >
> > > > Я ведь не придумал. Я поставил "затычки" перед fixup-libraries и
> > > > после него. До fixup-libraries - 755, после 644. Да и на консоль
> > > > выводит, что /usr/sbin/automount "чмодит" в 644. Могу полный лог
> > > > сборки прикрепить,
> > >
> > > В этом нет смысла.
> > >
> > > > если в рассылку пропустят. Или возьмите autofs-5.0.3 и соберите.
> > >
> > > Где можно взять?
> >
> > autofs-5.0.3-alt0.1.src.rpm в /i/D
> > Для проявления эффекта заменить в спеке:
> > -%make_build DAEMON_CFLAGS= DAEMON_LDFLAGS=
> > +%make_build
>
> Эвристику ломает преждеверменный strip. Опция -s при линковке удаляет
> символ __preinit_array_end по которому shared library отделяется от
> position independed executable.

Точно! Спасибо!
Надо бы это где-то задокументировать. Потому как ИМХО неочевидно, что strip 
при сборке у нас, получается, недопустим :(

-- 
Led


Подробная информация о списке рассылки Devel