[devel] libc on i586: WTF?

Dmitry V. Levin ldv на altlinux.org
Сб Окт 16 11:18:48 UTC 2010


Hi,

On Sat, Oct 16, 2010 at 12:26:18PM +0800, REAL wrote:
> 
> Что-то загадочное произошло на вчерашнем 
> срезе сизифа (может быть и раньше так 
> было, только не замечал):
> 
> $ gfortran -O2 -c ilaenv.f
> $ nm ilaenv.o|grep stack_chk_fail
>                  U __stack_chk_fail
> 
> НО:
> $ gfortran -fPIC -O2 -c ilaenv.f
> $ nm ilaenv.o|grep stack_chk_fail
>                  U __stack_chk_fail_local
> 
> Проявляется на i586, на x86_64 всё в порядке.

Так было всегда, на i586 маловато регистров.

<cite>
> Этому [text relocations в shared objects] нет оправдания.
Есть. На дебильных x86 это дикий оверхед. Один регистр общего назначения -
коту под хвост. При том, что их на этом калькуляторе-переростке и так не
богато.
                -- vsl in devel@
</cite>

> Символ __stack_chk_fail_local присутствует только 
> в libc.a, не в libc.so:
> 
> $ nm /usr/lib/libc.a|grep stack_chk_fail
> stack_chk_fail.o:
> 0000000000000000 T __stack_chk_fail
> stack_chk_fail_local.o:
>                  U __stack_chk_fail
> 0000000000000000 T __stack_chk_fail_local
> 
> $ nm -D /lib/libc.so.6|grep stack_chk_fail
> 00000000000e09a0 T __stack_chk_fail
> 
> Как дальше жидь?

Вам просто интересно, или беспокойство чем-то обусловлено?

В первом случае см.
http://sourceware.org/git/?p=glibc.git;a=blob;f=debug/stack_chk_fail_local.c

Во втором случае просто выкиньте это из головы.


-- 
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 198 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20101016/2972eac6/attachment.bin>


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