On 11/08/2020 09:37, David Matthews wrote: > > Secure OSs: There is now support for OpenBSD and SELinux in enforcing mode. > There was a problem with these operating systems because they forbid the > creation of memory areas with both execute and write permissions. In order to > create and garbage collect ML code the RTS needs to be able to write to the > code areas and it also needs to be executed. The work-around is to use memory > mapped files and create two separate regions mapped to the same file.
I have problems building that version b95a85ead3ae on Windows with MinGW: """ In file included from osmemwin.cpp:34: osmem.h:97:5: error: 'Bitmap' does not name a type 97 | Bitmap pageMap; | ^~~~~~ osmemwin.cpp: In member function 'bool OSMem::Initialise(OSMem::_MemUsage, size_ t, void**)': osmemwin.cpp:76:10: error: 'pageMap' was not declared in this scope 76 | if (!pageMap.Create(space / pageSize)) | ^~~~~~~ osmemwin.cpp:84:5: error: 'pageMap' was not declared in this scope 84 | pageMap.SetBit(space / pageSize - 1); | ^~~~~~~ osmemwin.cpp: In member function 'void* OSMem::AllocateDataArea(size_t&)': osmemwin.cpp:97:16: error: 'pageMap' was not declared in this scope; did you mea n 'pages'? 97 | while (pageMap.TestBit(lastAllocated - 1)) // Skip the wholly al located area. | ^~~~~~~ | pages osmemwin.cpp:99:26: error: 'pageMap' was not declared in this scope; did you mea n 'pages'? 99 | uintptr_t free = pageMap.FindFree(0, lastAllocated, pages); | ^~~~~~~ | pages osmemwin.cpp: In member function 'bool OSMem::FreeDataArea(void*, size_t)': osmemwin.cpp:118:9: error: 'pageMap' was not declared in this scope; did you mea n 'pages'? 118 | pageMap.ClearBits(offset, pages); | ^~~~~~~ | pages osmemwin.cpp: In member function 'void* OSMem::AllocateCodeArea(size_t&, void*&) ': osmemwin.cpp:134:16: error: 'pageMap' was not declared in this scope; did you me an 'pages'? 134 | while (pageMap.TestBit(lastAllocated - 1)) // Skip the wholly al located area. | ^~~~~~~ | pages osmemwin.cpp:136:26: error: 'pageMap' was not declared in this scope; did you me an 'pages'? 136 | uintptr_t free = pageMap.FindFree(0, lastAllocated, pages); | ^~~~~~~ | pages osmemwin.cpp: In member function 'bool OSMem::FreeCodeArea(void*, void*, size_t) ': osmemwin.cpp:160:9: error: 'pageMap' was not declared in this scope; did you mea n 'pages'? 160 | pageMap.ClearBits(offset, pages); | ^~~~~~~ | pages make[3]: *** [Makefile:800: osmemwin.lo] Error 1 make[3]: Leaving directory '/d/cygwin64/home/wenzelm/lib/polyml/polyml-git/libpo lyml' make[2]: *** [Makefile:840: all-recursive] Error 1 make[2]: Leaving directory '/d/cygwin64/home/wenzelm/lib/polyml/polyml-git/libpo lyml' make[1]: *** [Makefile:729: all-recursive] Error 1 make[1]: Leaving directory '/d/cygwin64/home/wenzelm/lib/polyml/polyml-git' make: *** [Makefile:488: all] Error 2 Build failed *** Error """ (See also https://isabelle.sketis.net/repos/isabelle/file/9e5862223442/Admin/polyml/INSTALL-MinGW) Makarius _______________________________________________ polyml mailing list polyml@inf.ed.ac.uk http://lists.inf.ed.ac.uk/mailman/listinfo/polyml