[devel] [#56408] DONE (try 52) perl.git=5.14.2-alt1 srpm=perl-Filter-1.39-alt1.src.rpm ...

Dmitry V. Levin ldv на altlinux.org
Пн Окт 24 23:18:04 MSK 2011


On Tue, Oct 25, 2011 at 02:36:31AM +0400, Alexey Tourbin wrote:
[...]
> Во-вторых, и это очень важно, перловый код теперь должен компилироваться
> с родными для перла CCFLAGS.  Точнее, на архитектуре i586 весь перловый
> код должен компилироваться с флагом -D_FILE_OFFSET_BITS=64.  Это связано
> с тем, что в структуре "struct interpreter" имеется поле "struct stat",
> размер которого зависит от _FILE_OFFSET_BITS.  Соответственно, когда мы
> хотим прочитать какие-то поля из "struct interpreter", которые расположены
> после "struct stat", то без правильного значения _FILE_OFFSET_BITS можно
> промахнуться и прочитать совсем не то.  В результате может при загрузке
> модуля может появиться такое сообщение об ошибке:
> 	
> 	Not a CODE reference at /usr/lib/perl/DynaLoader.pm line 207

Почему бы не вставить в файл, определяющий структуру "struct interpreter",
защиту от неправильной компиляции?

[после #include <sys/stat.h>]
#if defined(__i386__) && defined(__GLIBC__) && !defined(__USE_FILE_OFFSET64)
# if __WORDSIZE == 32
#  error "<файл.h> cannot be used without -D_FILE_OFFSET_BITS==64"
# endif
#endif


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


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