From 905008af9e1b6ea799ca48bb4d44442d1ebc42d4 Mon Sep 17 00:00:00 2001 From: Ronald Oussoren Date: Tue, 9 Jan 2024 18:07:10 +0100 Subject: [PATCH 1/4] gh-113868: Add a number of MAP_* flags from macOS to module mmap --- Doc/library/mmap.rst | 18 ++++++++++ ...-01-09-18-07-08.gh-issue-113868.DlZG2r.rst | 6 ++++ Modules/mmapmodule.c | 33 +++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2024-01-09-18-07-08.gh-issue-113868.DlZG2r.rst diff --git a/Doc/library/mmap.rst b/Doc/library/mmap.rst index 3fa69e717329e4..e6943b37233603 100644 --- a/Doc/library/mmap.rst +++ b/Doc/library/mmap.rst @@ -380,6 +380,17 @@ MAP_* Constants MAP_STACK MAP_ALIGNED_SUPER MAP_CONCEAL + MAP_NORESERVE + MAP_NOEXTEND + MAP_HASSEMAPHORE + MAP_NOCACHE + MAP_JIT + MAP_RESILIENT_CODESIGN + MAP_RESILIENT_MEDIA + MAP_32BIT + MAP_TRANSLATED_ALLOW_EXECUTE + MAP_UNIX03 + MAP_TPRO These are the various flags that can be passed to :meth:`mmap.mmap`. :data:`MAP_ALIGNED_SUPER` is only available at FreeBSD and :data:`MAP_CONCEAL` is only available at OpenBSD. Note @@ -394,3 +405,10 @@ MAP_* Constants .. versionadded:: 3.12 Added :data:`MAP_ALIGNED_SUPER` constant. Added :data:`MAP_CONCEAL` constant. + + .. versionadded:: 3.13 + Added :data:`MAP_NORESERVE`, :data:`MAP_NOEXTEND`, :data:`MAP_HASSEMAPHORE`, + :data:`MAP_NOCACHE`, :data:`MAP_JIT`, :data:`MAP_RESILIENT_CODESIGN`, + :data:`MAP_RESILIENT_MEDIA`, :data:`MAP_32BIT`, :data:`MAP_TRANSLATED_ALLOW_EXECUTE`, + :data:`MAP_UNIX03` and :data:`MAP_TPRO`. + diff --git a/Misc/NEWS.d/next/Library/2024-01-09-18-07-08.gh-issue-113868.DlZG2r.rst b/Misc/NEWS.d/next/Library/2024-01-09-18-07-08.gh-issue-113868.DlZG2r.rst new file mode 100644 index 00000000000000..3fe18217d7a346 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2024-01-09-18-07-08.gh-issue-113868.DlZG2r.rst @@ -0,0 +1,6 @@ +Added :data:`mmap.MAP_NORESERVE`, :data:`mmap.MAP_NOEXTEND`, +:data:`mmap.MAP_HASSEMAPHORE`, :data:`mmap.MAP_NOCACHE`, +:data:`mmap.MAP_JIT`, :data:`mmap.MAP_RESILIENT_CODESIGN`, +:data:`mmap.MAP_RESILIENT_MEDIA`, :data:`mmap.MAP_32BIT`, +:data:`mmap.MAP_TRANSLATED_ALLOW_EXECUTE`, :data:`mmap.MAP_UNIX03` and +:data:`mmap.MAP_TPRO`. All of them are ``mmap(2)`` flags on macOS. diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c index 66ed0b8efb775c..f6d2a8268af319 100644 --- a/Modules/mmapmodule.c +++ b/Modules/mmapmodule.c @@ -1655,6 +1655,39 @@ mmap_exec(PyObject *module) #endif #ifdef MAP_CONCEAL ADD_INT_MACRO(module, MAP_CONCEAL); +#endif +#ifdef MAP_NORESERVE + ADD_INT_MACRO(module, MAP_NORESERVE); +#endif +#ifdef MAP_NOEXTEND + ADD_INT_MACRO(module, MAP_NOEXTEND); +#endif +#ifdef MAP_HASSEMAPHORE + ADD_INT_MACRO(module, MAP_HASSEMAPHORE); +#endif +#ifdef MAP_NOCACHE + ADD_INT_MACRO(module, MAP_NOCACHE); +#endif +#ifdef MAP_JIT + ADD_INT_MACRO(module, MAP_JIT); +#endif +#ifdef MAP_RESILIENT_CODESIGN + ADD_INT_MACRO(module, MAP_RESILIENT_CODESIGN); +#endif +#ifdef MAP_RESILIENT_MEDIA + ADD_INT_MACRO(module, MAP_RESILIENT_MEDIA); +#endif +#ifdef MAP_32BIT + ADD_INT_MACRO(module, MAP_32BIT); +#endif +#ifdef MAP_TRANSLATED_ALLOW_EXECUTE + ADD_INT_MACRO(module, MAP_TRANSLATED_ALLOW_EXECUTE); +#endif +#ifdef MAP_UNIX03 + ADD_INT_MACRO(module, MAP_UNIX03); +#endif +#ifdef MAP_TPRO + ADD_INT_MACRO(module, MAP_TPRO); #endif if (PyModule_AddIntConstant(module, "PAGESIZE", (long)my_getpagesize()) < 0 ) { return -1; From 2cfd2337c6d0c5f8cf4172ab3cb8f8c3aa36445f Mon Sep 17 00:00:00 2001 From: Ronald Oussoren Date: Tue, 9 Jan 2024 20:41:45 +0100 Subject: [PATCH 2/4] Sort MAP_ constants --- Doc/library/mmap.rst | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Doc/library/mmap.rst b/Doc/library/mmap.rst index e6943b37233603..ddf017b82a5f99 100644 --- a/Doc/library/mmap.rst +++ b/Doc/library/mmap.rst @@ -372,25 +372,25 @@ MAP_* Constants .. data:: MAP_SHARED MAP_PRIVATE - MAP_DENYWRITE - MAP_EXECUTABLE + MAP_32BIT + MAP_ALIGNED_SUPER MAP_ANON MAP_ANONYMOUS - MAP_POPULATE - MAP_STACK - MAP_ALIGNED_SUPER MAP_CONCEAL - MAP_NORESERVE - MAP_NOEXTEND + MAP_DENYWRITE + MAP_EXECUTABLE MAP_HASSEMAPHORE - MAP_NOCACHE MAP_JIT + MAP_NOCACHE + MAP_NOEXTEND + MAP_NORESERVE + MAP_POPULATE MAP_RESILIENT_CODESIGN MAP_RESILIENT_MEDIA - MAP_32BIT + MAP_STACK + MAP_TPRO MAP_TRANSLATED_ALLOW_EXECUTE MAP_UNIX03 - MAP_TPRO These are the various flags that can be passed to :meth:`mmap.mmap`. :data:`MAP_ALIGNED_SUPER` is only available at FreeBSD and :data:`MAP_CONCEAL` is only available at OpenBSD. Note From 2b976abe111615e5dc0cf4fcdfbec78aa5a85b54 Mon Sep 17 00:00:00 2001 From: Ronald Oussoren Date: Tue, 9 Jan 2024 21:50:52 +0100 Subject: [PATCH 3/4] Update Doc/library/mmap.rst Co-authored-by: Serhiy Storchaka --- Doc/library/mmap.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Doc/library/mmap.rst b/Doc/library/mmap.rst index ddf017b82a5f99..c64808153bf177 100644 --- a/Doc/library/mmap.rst +++ b/Doc/library/mmap.rst @@ -403,8 +403,7 @@ MAP_* Constants Added :data:`MAP_STACK` constant. .. versionadded:: 3.12 - Added :data:`MAP_ALIGNED_SUPER` constant. - Added :data:`MAP_CONCEAL` constant. + Added :data:`MAP_ALIGNED_SUPER` and :data:`MAP_CONCEAL` constants. .. versionadded:: 3.13 Added :data:`MAP_NORESERVE`, :data:`MAP_NOEXTEND`, :data:`MAP_HASSEMAPHORE`, From c2e15ef153ab98264a62cdcdb47e92c3aa286291 Mon Sep 17 00:00:00 2001 From: Ronald Oussoren Date: Tue, 9 Jan 2024 21:51:20 +0100 Subject: [PATCH 4/4] Update Doc/library/mmap.rst Co-authored-by: Serhiy Storchaka --- Doc/library/mmap.rst | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Doc/library/mmap.rst b/Doc/library/mmap.rst index c64808153bf177..3b4f3b818b856e 100644 --- a/Doc/library/mmap.rst +++ b/Doc/library/mmap.rst @@ -406,8 +406,9 @@ MAP_* Constants Added :data:`MAP_ALIGNED_SUPER` and :data:`MAP_CONCEAL` constants. .. versionadded:: 3.13 - Added :data:`MAP_NORESERVE`, :data:`MAP_NOEXTEND`, :data:`MAP_HASSEMAPHORE`, - :data:`MAP_NOCACHE`, :data:`MAP_JIT`, :data:`MAP_RESILIENT_CODESIGN`, - :data:`MAP_RESILIENT_MEDIA`, :data:`MAP_32BIT`, :data:`MAP_TRANSLATED_ALLOW_EXECUTE`, - :data:`MAP_UNIX03` and :data:`MAP_TPRO`. + Added :data:`MAP_32BIT`, :data:`MAP_HASSEMAPHORE`, :data:`MAP_JIT`, + :data:`MAP_NOCACHE`, :data:`MAP_NOEXTEND`, :data:`MAP_NORESERVE`, + :data:`MAP_RESILIENT_CODESIGN`, :data:`MAP_RESILIENT_MEDIA`, + :data:`MAP_TPRO`, :data:`MAP_TRANSLATED_ALLOW_EXECUTE`, and + :data:`MAP_UNIX03` constants.