[devel] perl.h -D_FILE_OFFSET_BITS=64

Dmitry V. Levin ldv на altlinux.org
Вт Ноя 1 23:28:57 UTC 2011


On Sun, Oct 30, 2011 at 03:40:05AM +0400, Dmitry V. Levin wrote:
> On Tue, Oct 25, 2011 at 03:18:04AM +0400, Dmitry V. Levin wrote:
> > 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
> 
> Это подход работает, предлагаю собрать в Сизиф
> http://git.altlinux.org/people/ldv/packages/?p=perl.git;a=commitdiff;h=5.14.2-alt1-2-g7152efd

http://git.altlinux.org/people/ldv/packages/?p=perl.git;a=commitdiff;h=5.14.2-alt2-1-g3a07420
Повторно предлагаю собрать это изменение в Сизиф.  Если есть
аргументированные возражения по поводу этого изменения, пожалуйста,
не скрывайте их от нас, изложите их здесь.


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


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