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
[email protected]
http://lists.inf.ed.ac.uk/mailman/listinfo/polyml