Пронаблюдал проблему сборки lcc на "Эльбрусе": gcc -fstack-protector -L/usr/local/lib -o miniperl \ perlmini.o opmini.o miniperlmain.o gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro_core.o keywords.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o caretx.o -lpthread -lnsl -ldl -lm -lcrypt -lutil -lc opmini.o: In function `Perl_ck_rvconst': /home/mike/RPM/BUILD/perl-5.22.1/opmini.c:198618: undefined reference to `_Static_assert' opmini.o: In function `Perl_rpeep': /home/mike/RPM/BUILD/perl-5.22.1/opmini.c:201699: undefined reference to `_Static_assert' toke.o: In function `Perl_lex_start': /home/mike/RPM/BUILD/perl-5.22.1/toke.c:679: undefined reference to `_Static_assert' pp_hot.o: In function `Perl_pp_padrange': /home/mike/RPM/BUILD/perl-5.22.1/pp_hot.c:358: undefined reference to `_Static_assert' sv.o: In function `Perl_sv_upgrade': /home/mike/RPM/BUILD/perl-5.22.1/sv.c:1230: undefined reference to `_Static_assert' sv.o:/home/mike/RPM/BUILD/perl-5.22.1/sv.c:1230: more undefined references to `_Static_assert' follow make: *** [lib/buildcustomize.pl] Error 1 Она же описана по этим ссылкам применительно к другим не-gcc, старым gcc и схожим случаям: * https://forums.gentoo.org/viewtopic-p-7462508.html * http://git.kernel.org/cgit/utils/kernel/kmod/kmod.git/patch/?id=dc8ed09f8f21d17ef9481001683d7edfdb308983 * http://permalink.gmane.org/gmane.comp.compilers.tinycc.devel/2715 * http://www.nntp.perl.org/group/perl.perl5.porters/2015/01/msg225172.html * https://rt.perl.org/Public/Bug/Display.html?id=123682 ** https://rt.perl.org/Public/Ticket/Attachment/1328635/709088/0001-static_assert-workaround-for-AIX-xlc.patch Было бы здорово по возможности подправить, если что-то по этим ссылкам окажется достаточно очевидным.
PS: выставляется там __LCC__
напрашивается такой патч: Миша, проверь, пожалуйста. iff --git a/perl.h b/perl.h index dcb184b..3e7cde2 100644 --- a/perl.h +++ b/perl.h @@ -3543,7 +3543,8 @@ typedef pthread_key_t perl_key; STATIC_ASSERT_STMT expands to a statement and is suitable for use inside a function. */ -#if (defined(static_assert) || (defined(__cplusplus) && __cplusplus >= 201103L)) && (!defined(__IBMC__) || __IBMC__ >= 1210) +#if (defined(static_assert) || (defined(__cplusplus) && __cplusplus >= 201103L)) && (!defined(__IBMC__) || __IBMC__ >= 1210) && (!defined(__LCC__)) + /* static_assert is a macro defined in <assert.h> in C11 or a compiler builtin in C++11. */
Created attachment 6676 [details] lcc support
И впрямь; зарядил сборку.
Спасибо, так miniperl собирается, но падает уже дальше при запуске; отправил грохот разработчикам МЦСТ. Наверное, в пакет пока не стоит.
Исходная проблема не наблюдается на perl-5.24.2-alt1 и lcc-1.21.20; для сегфолта miniperl коллегами из МЦСТ предложен обход, проблема в работе.