[HEADSUP] Dropping libopenssl098 from distro

Ken Brown kbrown@cornell.edu
Thu Jan 29 20:25:00 GMT 2015


On 1/23/2015 8:48 AM, Ken Brown wrote:
> My guess is correct.  lisp.exe uses bit 31 (counting from the LSB) as a marker
> during garbage collection, and this is incompatible with Cygwin's use of high
> memory for the heap.  I think I know how to fix this (by defining
> LINUX_NOEXEC_HEAPCODES in the Cygwin build), but I haven't finished testing it yet.

I've now built clisp-2.48 with this change (32-bit only), and I've tested it as 
well as I can, given that I'm not a clisp user.  The build passes all but a 
handful of about 12,000 tests, so I think it's probably OK.  (None of the test 
failures involved crashes.)

I'm attaching the patches that I applied (on top of Reini's patches) in order to 
make the build succeed.  I also had to use libdb4.5 instead of libdb4.8.
Reini, if you're still lurking, maybe you could take a look at the patches.

Ken
-------------- next part --------------
--- origsrc/clisp-2.48/src/unix.d	2009-06-17 10:26:40.000000000 -0400
+++ src/clisp-2.48/src/unix.d	2015-01-26 12:11:27.111212000 -0500
@@ -716,7 +716,10 @@ extern int wait2 (PID_T pid); /* see uni
 /* Interpretation of FILETIME structure: */
 #ifdef UNIX_CYGWIN32
   #define WIN32_LEAN_AND_MEAN
+  #pragma push_macro ("Handle")
+  #undef Handle
   #include <windows.h>
+  #pragma pop_macro ("Handle")
   #undef WIN32
   extern long time_t_from_filetime (const FILETIME * ptr);
   extern void time_t_to_filetime (time_t time_in, FILETIME * out);
-------------- next part --------------
--- origsrc/clisp-2.48/src/lispbibl.d	2009-07-28 09:58:03.000000000 -0400
+++ src/clisp-2.48/src/lispbibl.d	2015-01-26 12:14:01.822061000 -0500
@@ -2603,7 +2603,7 @@ Long-Float, Ratio and Complex (only if S
      malloc results (and hence also of shared libraries) are randomized;
      only the code address is fixed around 0x1C000000 and the stack address
      is around 0xCF000000. In this case, we also use LINUX_NOEXEC_HEAPCODES. */
-    #if (defined(I80386) && defined(UNIX_LINUX)) || (defined(I80386) && defined(UNIX_OPENBSD) && defined(ADDRESS_RANGE_RANDOMIZED))
+    #if (defined(I80386) && defined(UNIX_LINUX)) || (defined(I80386) && defined(UNIX_OPENBSD) && defined(ADDRESS_RANGE_RANDOMIZED)) || (defined(I80386) && defined(UNIX_CYGWIN32))
       #define LINUX_NOEXEC_HEAPCODES
     #else
       #define STANDARD_HEAPCODES
-------------- next part --------------
--- origsrc/clisp-2.48/modules/syscalls/calls.c	2009-07-22 21:12:31.000000000 -0400
+++ src/clisp-2.48/modules/syscalls/calls.c	2015-01-26 12:28:34.091951900 -0500
@@ -3302,6 +3302,7 @@ DEFUN(POSIX::DUPLICATE-HANDLE, old &opti
 
 #if defined(WIN32_NATIVE) || defined(UNIX_CYGWIN32)
 #include <shlobj.h>
+#include <shlguid.h>
 DEFCHECKER(check_file_attributes, type=DWORD, reverse=uint32_to_I,      \
            default=, prefix=FILE_ATTRIBUTE, bitmasks=both,              \
            ARCHIVE COMPRESSED :DEVICE :DIRECTORY ENCRYPTED HIDDEN :NORMAL \
--- origsrc/clisp-2.48/modules/syscalls/configure	2009-07-28 12:33:13.000000000 -0400
+++ src/clisp-2.48/modules/syscalls/configure	2015-01-26 12:09:16.528743100 -0500
@@ -4085,7 +4085,7 @@ fi
 done
 
 if test "$ac_cv_header_shlobj_h" = yes ; then
-   LIBS=${LIBS}' -luser32 -lole32 -loleaut32 -luuid';
+   LIBS=${LIBS}' -luser32 -lole32 -loleaut32 -L/usr/lib/w32api -luuid';
 fi
 # The cast to long int works around a bug in the HP C Compiler
 # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects


More information about the Cygwin-apps mailing list