Bug 31914 - [FR][e2k] сделать возможной сборку не-gcc (или сильно старым gcc)
: [FR][e2k] сделать возможной сборку не-gcc (или сильно старым gcc)
Status: CLOSED WORKSFORME
: Sisyphus
(All bugs in Sisyphus/perl)
: unstable
: all Linux
: P3 enhancement
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2016-03-22 22:33 by
Modified: 2017-08-18 19:06 (History)


Attachments
lcc support (612 bytes, patch)
2016-03-22 23:07, viy
no flags Details | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2016-03-22 22:33:28
Пронаблюдал проблему сборки 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

Было бы здорово по возможности подправить, если что-то по этим ссылкам окажется
достаточно очевидным.
------- Comment #1 From 2016-03-22 22:49:08 -------
PS: выставляется там __LCC__
------- Comment #2 From 2016-03-22 23:06:34 -------
напрашивается такой патч:

Миша, проверь, пожалуйста.

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.
 */
------- Comment #3 From 2016-03-22 23:07:45 -------
Created an attachment (id=6676) [details]
lcc support
------- Comment #4 From 2016-03-22 23:29:26 -------
И впрямь; зарядил сборку.
------- Comment #5 From 2016-03-22 23:53:52 -------
Спасибо, так miniperl собирается, но падает уже дальше при запуске;
отправил грохот разработчикам МЦСТ.  Наверное, в пакет пока не стоит.
------- Comment #6 From 2017-08-18 19:06:09 -------
Исходная проблема не наблюдается на perl-5.24.2-alt1 и lcc-1.21.20;
для сегфолта miniperl коллегами из МЦСТ предложен обход, проблема в работе.