Wed Jul 13 10:02:51 2016: Request 116056 was acted upon. Transaction: Correspondence added by kbr...@cornell.edu Queue: PAR-Packer Subject: Re: [rt.cpan.org #116056] Fixes for Cygwin build of PAR::Packer Broken in: 1.030 Severity: (no value) Owner: Nobody Requestors: kbr...@cornell.edu Status: open Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=116056 >
On 7/13/2016 6:26 AM, Roderich Schupp via RT wrote: > <URL: https://rt.cpan.org/Ticket/Display.html?id=116056 > > > Am 2016-07-11 15:15:22, kbr...@cornell.edu schrieb: >> There are two problems with the build of PAR::Packer 1.033 on Cygwin: > > Thanks for reporting these problems. Next time, please do not lump > several problems into one bug, but submit diffrent bug reports for ach. OK, sorry about that. >> 1. The build fails with "undefined reference to `__stack_chk_fail'". >> This happens starting with version 1.030 due to the removal of the line >> >> $boot_ldflags .= $static_ldflags; >> >> from Makefile.PL. Adding that line back (see the attached >> boot_ldflags.patch) fixes the problem. > > That's definitively the wrong fix, boot.exe is a standalone executable > that has no dependencies or perl stuff. How about something like this: --- origsrc/PAR-Packer-1.033/myldr/Makefile.PL 2016-05-12 03:20:37.000000000 -0400 +++ src/PAR-Packer-1.033/myldr/Makefile.PL 2016-07-13 09:48:08.177541500 -0400 @@ -370,7 +370,7 @@ $parldyn_exe: $par_exe boot$o: \$(MKTMP_STUFF) boot_embedded_files.c $boot_exe: boot$o - \$(LD) boot$o $boot_ldflags $res $out$boot_exe_link + \$(LD) boot$o \$(LDFLAGS) $boot_ldflags $res $out$boot_exe_link $mt_cmd boot_embedded_files.c: $par_exe >> 2. The method for detecting a 64-bit system in Makefile.PL, based on >> $Config{archname}, doesn't work on 64-bit Cygwin. Here we have the >> following: >> ... >> So PAR::Packer should use myuname on Cygwin instead of archname. See >> the attached x86_64_cygwin.patch. > > A better solution is to use $Config{ptrsize} (4 or 8) to differentiate > between 32 bit and 64 bit systems. Agreed. Ken