Igor Sysoev wrote:
> On Wed, 22 Feb 2006, Michail Baikov wrote:
>
>> Igor Sysoev wrote:
>>> On Tue, 21 Feb 2006, Michail Baikov wrote:
>>>
>>>> Igor Sysoev wrote:
>>>>> On Tue, 21 Feb 2006, Michail Baikov wrote:
>>>>>
>>>>>> gcc -c -march=i686 -O2 -fomit-frame-pointer -pipe -I src/core -I
>>>>>> src/event -I src/event/modules -I src/os/unix -I objs >>>>>> -o objs/src/core/ngx_cpuinfo.o >>>>>> src/core/ngx_cpuinfo.c
>>>>>> src/core/ngx_cpuinfo.c: In function `ngx_cpuinfo':
>>>>>> src/core/ngx_cpuinfo.c:22: error: can't find a register in class
>>>>>> `BREG'
>>>>>> while reloading `asm'
>>>>>> src/core/ngx_cpuinfo.c:22: error: can't find a register in class
>>>>>> `BREG'
>>>>>> while reloading `asm'
>>>>>> make[1]: *** [objs/src/core/ngx_cpuinfo.o] Error 1
>>>>>> make[1]: Leaving directory
>>>>>> `/var/tmp/portage/nginx-0.3.29/work/nginx-0.3.29'
>>>>>> make: *** [build] Error 2
>>>>>>
>>>>>> !!! ERROR: www-servers/nginx-0.3.29 failed.
>>>>>
>>>>> OS
>>>>> gcc -v
>>>>> as -v
>>>>>
>>>> Как и везде :)
>>>>
>>>> Linux/i386
>>>> www ~ # gcc -v
>>>> Reading specs from /usr/lib/gcc/i686-pc-linux-gnu/3.4.4/specs
>>>> Configured with: /var/tmp/portage/gcc-3.4.4-r1/work/gcc-3.4.4/configure
>>>> --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/3.4.4
>>>> --includedir=/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include
>>>> --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4.4
>>>> --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4.4/man
>>>> --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4.4/info
>>>> --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include/g++-v3
>>>>
>>>>
>>>> --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec
>>>> --enable-nls --without-included-gettext --with-system-zlib
>>>> --disable-checking --disable-werror --disable-libunwind-exceptions
>>>> --disable-multilib --disable-libgcj --enable-languages=c,c++
>>>> --enable-shared --enable-threads=posix --enable-__cxa_atexit
>>>> --enable-clocale=gnu
>>>> Thread model: posix
>>>> gcc version 3.4.4 (Gentoo Hardened 3.4.4-r1, ssp-3.4.4-1.0, pie-8.7.8)
>>>> www ~ # as -v
>>>> GNU assembler version 2.16.1 (i686-pc-linux-gnu) using BFD version
>>>> 2.16.1
>>>>
>>>> На другой такой же машине все собирается. Тут апгрейд с .26 не
>>>> проходит.
>>>
>>> Есть ощущение, что здесь как-то пояивлся -fPIC, но его нигде не видно.
>
>> Да нет - он тут может быть даже и был - машина то hardened. Но раньше
>
> А что такое hardened ?
>
>> все собиралось - 26 версия стоит и работает нормально.....
>
> В 0.3.27 появилось:
>
> *) Добавление: определение размера строки кэша распространённых
> процессоров при старте.
>
> До этого не было. В ngx_cpuinfo() вставляется ассемблерный код cpuid,
> который использует регистр ebx, а gcc использует этот же регистр для своих
> целей, если используется -fPIC код.
>
>
> Игорь Сысоев
> http://sysoev.ru
>
>
Да - дело в этом. Hardened - это в двух словах - набор защит от
различных "нехороших" действий (SELinux, RSBAC, PaX, GrSecurity).
http://www.gentoo.org/proj/en/hardened/
Каким образом мне собрать nginx с использованием -fPIC?
--
Mike Baikov <mike at baikov dot com>
GameDot Labs Developer