[Bug 1064271] perl-Net-SSLeay tests failing on s390(x) with glibc-2.18.90-21.fc21

bugzilla at redhat.com bugzilla at redhat.com
Fri Mar 28 14:45:54 UTC 2014


https://bugzilla.redhat.com/show_bug.cgi?id=1064271



--- Comment #27 from Dan HorĂ¡k <dan at danny.cz> ---
this function from SSLeay.xs

UV get_my_thread_id(void) /* returns threads->tid() value */
{
    dSP;
    UV tid = 0;
    int count = 0;

#ifdef USE_ITHREADS
    ENTER;
    SAVETMPS;
    PUSHMARK(SP);
    XPUSHs(sv_2mortal(newSVpv("threads", 0)));
    PUTBACK;
    count = call_method("tid", G_SCALAR|G_EVAL);
    SPAGAIN;
    if (SvTRUE(ERRSV) || count != 1)
       /* if threads not loaded or an error occurs return 0 */
       tid = 0;
    else
       tid = (UV)POPi;
    PUTBACK;
    FREETMPS;
    LEAVE;
#endif

    return tid;
}

expands to

UV get_my_thread_id(void)
{
    SV **sp = (((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Istack_sp);
    UV tid = 0;
    int count = 0;


    Perl_push_scope(((PerlInterpreter *)pthread_getspecific(PL_thr_key)));
    Perl_save_int(((PerlInterpreter *)pthread_getspecific(PL_thr_key)),
(int*)&(((PerlInterpreter *)pthread_getspecific(PL_thr_key))->Itmps_floor)),
(((PerlInterprete
r *)pthread_getspecific(PL_thr_key))->Itmps_floor) = (((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Itmps_ix);
    (void)( { if (++(((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Imarkstack_ptr) == (((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Imarkstack_max)) 
Perl_markstack_grow(((PerlInterpreter *)pthread_getspecific(PL_thr_key)));
*(((PerlInterpreter *)pthread_getspecific(PL_thr_key))->Imarkstack_ptr) =
(I32)((sp) - (((P
erlInterpreter *)pthread_getspecific(PL_thr_key))->Istack_base)); } );
    ((void)(__builtin_expect((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Istack_max) - sp < (int)(1),0) && (sp =
Perl_stack_grow(((PerlInterpreter *)pthrea
d_getspecific(PL_thr_key)), sp,sp,(int) (1)))), *++sp =
(Perl_sv_2mortal(((PerlInterpreter *)pthread_getspecific(PL_thr_key)),
Perl_newSVpv(((PerlInterpreter *)pthrea
d_getspecific(PL_thr_key)), "threads",0))));
    (((PerlInterpreter *)pthread_getspecific(PL_thr_key))->Istack_sp) = sp;
    count = Perl_call_method(((PerlInterpreter
*)pthread_getspecific(PL_thr_key)), "tid",2|8);
    sp = (((PerlInterpreter *)pthread_getspecific(PL_thr_key))->Istack_sp);
    if ((((*((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv ?
&((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv) :
&((0+(Perl_gv_add_by_type(((PerlInterpreter *)pthread_getspecific(PL_thr_key)),
((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv)),SVt_NULL))->sv_u.svu_gp)->gp_sv))))
&& ((((*((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv ?
&((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv) :
&((0+(Perl_gv_add_by_type(((PerlInterpreter *)pthread_getspecific(PL_thr_key)),
((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv)),SVt_NULL))->sv_u.svu_gp)->gp_sv))))->sv_flags
& 0x00200000) ? Perl_sv_2bool_flags(((PerlInterpreter
*)pthread_getspecific(PL_thr_key)), (*((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv ?
&((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv) :
&((0+(Perl_gv_add_by_type(((PerlInterpreter *)pthread_getspecific(PL_thr_key)),
((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv)),SVt_NULL))->sv_u.svu_gp)->gp_sv))),2)
: ( !(((*((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv ?
&((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv) :
&((0+(Perl_gv_add_by_type(((PerlInterpreter *)pthread_getspecific(PL_thr_key)),
((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv)),SVt_NULL))->sv_u.svu_gp)->gp_sv))))->sv_flags
& (0x00000100|0x00000200|0x00000400|0x00000800|
0x00001000|0x00002000|0x00004000|0x00008000) ||
(((svtype)(((*((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv ?
&((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv) :
&((0+(Perl_gv_add_by_type(((PerlInterpreter *)pthread_getspecific(PL_thr_key)),
((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv)),SVt_NULL))->sv_u.svu_gp)->gp_sv))))->sv_flags
& 0xff)) == SVt_REGEXP || (((*((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv ?
&((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv) :
&((0+(Perl_gv_add_by_type(((PerlInterpreter *)pthread_getspecific(PL_thr_key)),
((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv)),SVt_NULL))->sv_u.svu_gp)->gp_sv))))->sv_flags
& (0xff|0x00004000|0x00008000|0x01000000)) == (SVt_PVLV|0x01000000))) ? 0 :
(((*((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv ?
&((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv) :
&((0+(Perl_gv_add_by_type(((PerlInterpreter *)pthread_getspecific(PL_thr_key)),
((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv)),SVt_NULL))->sv_u.svu_gp)->gp_sv))))->sv_flags
& 0x00000400) ? ( ((XPV*)(((*((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv ?
&((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv) :
&((0+(Perl_gv_add_by_type(((PerlInterpreter *)pthread_getspecific(PL_thr_key)),
((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv)),SVt_NULL))->sv_u.svu_gp)->gp_sv)))))->sv_any)
&& ( ((XPV*)(((*((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv ?
&((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv) :
&((0+(Perl_gv_add_by_type(((PerlInterpreter *)pthread_getspecific(PL_thr_key)),
((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv)),SVt_NULL))->sv_u.svu_gp)->gp_sv)))))->sv_any)->xpv_cur
> 1 || ( ((XPV*)(((*((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv ?
&((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv) :
&((0+(Perl_gv_add_by_type(((PerlInterpreter *)pthread_getspecific(PL_thr_key)),
((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv)),SVt_NULL))->sv_u.svu_gp)->gp_sv)))))->sv_any)->xpv_cur
&& *((*((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv ?
&((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv) :
&((0+(Perl_gv_add_by_type(((PerlInterpreter *)pthread_getspecific(PL_thr_key)),
((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv)),SVt_NULL))->sv_u.svu_gp)->gp_sv))))->sv_u.svu_pv
!= '0' ) ) ) : (((*((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv ?
&((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv) :
&((0+(Perl_gv_add_by_type(((PerlInterpreter *)pthread_getspecific(PL_thr_key)),
((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv)),SVt_NULL))->sv_u.svu_gp)->gp_sv))))->sv_flags
& (0x00000100|0x00000200)) ? ( ((((*((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv ?
&((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv) :
&((0+(Perl_gv_add_by_type(((PerlInterpreter *)pthread_getspecific(PL_thr_key)),
((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv)),SVt_NULL))->sv_u.svu_gp)->gp_sv))))->sv_flags
& 0x00000100) && ((XPVIV*) ((*((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv ?
&((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv) :
&((0+(Perl_gv_add_by_type(((PerlInterpreter *)pthread_getspecific(PL_thr_key)),
((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv)),SVt_NULL))->sv_u.svu_gp)->gp_sv))))->sv_any)->xiv_u.xivu_iv
!= 0) || ((((*((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv ?
&((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv) :
&((0+(Perl_gv_add_by_type(((PerlInterpreter *)pthread_getspecific(PL_thr_key)),
((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv)),SVt_NULL))->sv_u.svu_gp)->gp_sv))))->sv_flags
& 0x00000200) && ((XPVNV*) ((*((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv ?
&((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv) :
&((0+(Perl_gv_add_by_type(((PerlInterpreter *)pthread_getspecific(PL_thr_key)),
((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv)),SVt_NULL))->sv_u.svu_gp)->gp_sv))))->sv_any)->xnv_u.xnv_nv
!= 0.0)) : (Perl_sv_2bool_flags(((PerlInterpreter
*)pthread_getspecific(PL_thr_key)), (*((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv ?
&((0+((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv))->sv_u.svu_gp)->gp_sv) :
&((0+(Perl_gv_add_by_type(((PerlInterpreter *)pthread_getspecific(PL_thr_key)),
((((PerlInterpreter
*)pthread_getspecific(PL_thr_key))->Ierrgv)),SVt_NULL))->sv_u.svu_gp)->gp_sv))),0)))))
|| count != 1)

       tid = 0;
    else
       tid = (UV)((IV)({SV *_sv = ((SV *)({ void *_p = ((*sp--)); _p; }));
((((_sv)->sv_flags & (0x00000100|0x00200000)) == 0x00000100) ? ((XPVIV*)
(_sv)->sv_any)->xiv_u.xivu_iv : Perl_sv_2iv_flags(((PerlInterpreter
*)pthread_getspecific(PL_thr_key)), _sv,2)); }));
    (((PerlInterpreter *)pthread_getspecific(PL_thr_key))->Istack_sp) = sp;
    if ((((PerlInterpreter *)pthread_getspecific(PL_thr_key))->Itmps_ix) >
(((PerlInterpreter *)pthread_getspecific(PL_thr_key))->Itmps_floor))
Perl_free_tmps(((PerlInterpreter *)pthread_getspecific(PL_thr_key)));
    Perl_pop_scope(((PerlInterpreter *)pthread_getspecific(PL_thr_key)));


    return tid;
}

-- 
You are receiving this mail because:
You are on the CC list for the bug.
Unsubscribe from this bug https://bugzilla.redhat.com/token.cgi?t=NaU0557qDD&a=cc_unsubscribe


More information about the perl-devel mailing list