Subject: RE: cygwin-1.3.11-3: still cannot compile perl-5.8
From: "Green, Paul" <[email-masked]>
To: "'Gerrit P. Haase'" <[email-masked]>, Christopher Faylor <[email-masked]>
Cc: [email-masked]
Date: Tue, 25 Jun 2002 17:18:35 -0400

PerlLIO_link runs through a bunch of macros and ends up calling the POSIX
link function (hard links).  Note that Configure only detects whether or not
you have a link() function available to be called; it never actually calls
it to see if it is operational. On operating systems where link() returns
ENOSYS every time it is called, you must add a line to the hints file that
sets d_link=undef.  (See hints/vos.sh, because the VOS system is one that
provides a dummy link() function that always returns ENOSYS).  Configure
will print a silly WHOA message about the discrepancy between the hint (no
link) and the libraries (link is there), but you can just ignore it.

PG

> -----Original Message-----
> From: Gerrit P. Haase [mailto:[email-masked]]
> Sent: Tuesday, June 25, 2002 3:45 PM
> To: Christopher Faylor
> Cc: [email-masked]
> Subject: Re: cygwin-1.3.11-3: still cannot compile perl-5.8
> 
> 
> Hallo Christopher,
> 
> Am Dienstag, 25. Juni 2002 um 20:51 schriebst du:
> 
> >>>>Still having problems compiling the Perl RC2.
> >>>>It works well to build RC2 with the cygwin-1.3.11-1 testrelease.
> >>>>Now that 1.3.11-3 is not a test release I need someone to verify
> >>>>at another box that this is not a basically problem with my setup.
> >>>>Everything works well up to then point miniperl is used to:
> >>>>
> >>>>make[1]: Entering directory 
> `/sourcecode/perl/perl58/buildperl/x2p'
> >>>>../miniperl -I../lib s2p.PL
> >>>>Signal 11
> >>>>make[1]: *** [s2p] Error 139
> >>>>make[1]: Leaving directory `/sourcecode/perl/perl58/buildperl/x2p'
> >>>>make: *** [x2p/s2p] Error 2
> >>>>
> >>>>$ cat miniperl.exe.stackdump
> >>>>Exception: STATUS_ACCESS_VIOLATION at eip=77F34AC4
> >>>>eax=00000000 ebx=00233378 ecx=FFFFFFFF edx=FFFFFFFF 
> esi=0000000C edi=0000000C
> >>>>ebp=0022F3C0 esp=0022F394 
> program=d:\sourcecode\perl\perl58\buildperl\miniperl.exe
> >>>>cs=001B ds=0023 es=0023 fs=0038 gs=0000 ss=0023
> >>>>Stack trace:
> >>>>Frame     Function  Args
> >>>>0022F3C0  77F34AC4  (00000000, 00000000, 0000000C, FFFFFFFF)
> >>>>0022FCE0  6107120A  (0A0B0AB4, 0A0BA5C8, 0022FD20, 00477B6A)
> >>>>0022FD20  0049262F  (0A010450, 61681570, 0022FD70, 00435D46)
> >>>>0022FD50  0048990D  (0A010450, 0A018010, 0A019818, 00000001)
> >>>>0022FD80  00415671  (0A010450, 00000001, 0022FE98, 004531B3)
> >>>>0022FEB0  00415343  (0A010450, 00000001, 0022FEE0, 00401069)
> >>>>0022FEE0  004010D7  (00000003, 61681570, 0A010278, 77F75B75)
> >>>>0022FF30  61005A9E  (00000008, FFFFFFFE, 000000E0, 610C08A0)
> >>>>0022FF90  61005D28  (00000000, 00000000, 00000246, 8011748B)
> >>>>0022FFB0  004BE312  (00401040, 037F0009, 0022FFF0, 77F1B9EA)
> >>>>0022FFC0  0040103C  (0022E640, 6104BD1C, 7FFDF000, 7FFDF000)
> >>>>0022FFF0  77F1B9EA  (00401000, 00000000, 000000B0, 00000100)
> >>>>End of stack trace
> >>
> >>> Seems like running miniperl in gdb would be instructive.  
> You'd need to
> >>> have debugging symbols in miniperl, of course.
> >>
> >>> I used to debug stuff like this all of the time when I 
> was maintaining
> >>> perl for cygwin.
> >>
> >>(gdb) run -Ilib utils/c2ph.PL
> >>Starting program: 
> /sourcecode/perl/perl58/buildperl/miniperl.exe -Ilib utils/c2ph.PL
> >>
> >>Program received signal SIGSEGV, Segmentation fault.
> >>0x77f34ac4 in _libkernel32_a_iname ()
> >>
> >>(gdb) bt
> >>#0  0x77f34ac4 in _libkernel32_a_iname ()
> >>#1  0xffffffff in ?? ()
> >>#2  0x6107120a in _libkernel32_a_iname ()
> >>#3  0x0049cfcf in Perl_pp_link (my_perl=0xa013cf0) at pp_sys.c:3556
> >                    ^^^^^^^^^^^                         ^^^^^^^^^^^^^
> 
> > What function is this calling?
> 
> PP(pp_link)
> {
> #ifdef HAS_LINK
>     dSP; dTARGET;
>     STRLEN n_a;
>     char *tmps2 = POPpx;
>     char *tmps = SvPV(TOPs, n_a);
>     TAINT_PROPER("link");
>     SETi( PerlLIO_link(tmps, tmps2) >= 0 ); <----3556
>     RETURN;
> #else
>     DIE(aTHX_ PL_no_func, "link");
> #endif
> }
> 
> iperlsys.h:
> #define PerlLIO_link(oldname, newname)                        
>           \
>         (*PL_LIO->pLink)(PL_LIO, (oldname), (newname))
> 
> pp.h:
> #define SETi(i)         STMT_START { sv_setiv(TARG, (IV)(i)); 
> SETTARG; } STMT_END
> 
> 
> -- 
> "All faults& bugs are mine - Robert"
>     from squid/acinclude.m4,   Sun Apr 21 05:21:21 2002
> 

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/