CTSRD-CHERI / cheribsd-ports

FreeBSD ports tree adapted for CheriBSD.
https://CheriBSD.org
Other
5 stars 11 forks source link

lang/perl5.32: Capability tag fault #75

Open gcjenkinson opened 1 year ago

gcjenkinson commented 1 year ago

Capability tag fault building perl5.32 in miniperl. gdb reports:

Program received signal SIGPROT, CHERI protection violation.
Capability tag fault.
S_mro_get_linear_isa_dfs (my_perl=0x40dab000 [rwRW,0x40dab000-0x40dacbd0], stash=0x40e678a0, level=1) at mro_core.c:237
237      = HvAUX(stash)->xhv_name_u.xhvnameu_name && HvENAME_HEK_NN(stash)

A brief investigation appeared to show this as being caused by the cast on line 1566 of gv.c:

   1539 HV*
   1540 Perl_gv_stashsvpvn_cached(pTHX_ SV *namesv, const char *name, U32 namelen, I32 flags)
   1541 {
   1542     HV* stash;
   1543     HE* he;
   1544
   1545     PERL_ARGS_ASSERT_GV_STASHSVPVN_CACHED;
   1546
   1547     he = (HE *)hv_common(
   1548         PL_stashcache, namesv, name, namelen,
   1549         (flags & SVf_UTF8) ? HVhek_UTF8 : 0, 0, NULL, 0
   1550     );
   1551
   1552     if (he) {
   1553         SV *sv = HeVAL(he);
   1554         HV *hv;
   1555         assert(SvIOK(sv));
   1556         hv = INT2PTR(HV*, SvIVX(sv));