[PATCH] D54080: [unittest] Skip W+X MappedMemoryTests when MPROTECT is enabled
Kamil Rytarowski via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sat Nov 3 15:07:11 PDT 2018
krytarowski added inline comments.
================
Comment at: unittests/Support/MemoryTest.cpp:90
+// MPROTECT prevents W+X mmaps
+#define CHECK_UNSUPPORTED() \
+ do { \
----------------
mgorny wrote:
> krytarowski wrote:
> > I would further refactor this into:
> >
> > ```
> > // MPROTECT prevents W+X mmaps
> > #define CHECK_UNSUPPORTED(f) \
> > do { \
> > if ((f & (Memory::MF_WRITE | Memory::MF_EXEC)) && \
> > IsMPROTECT()) \
> > return; \
> > } while (0)
> > ```
> >
> > And use `CHECK_UNSUPPORTED(Flags)` or `CHECK_UNSUPPORTED(Flags | Memory::MF_WRITE)` for `EnabledWrite`.
> Nah, that's too smart. Would go against KISS.
How about?
```
#define CHECK_UNSUPPORTED_RAW(f) \
do { \
if ((f & (Memory::MF_WRITE | Memory::MF_EXEC)) && \
IsMPROTECT()) \
return; \
} while (0)
```
and
`#define CHECK_UNSUPPORTED() CHECK_UNSUPPORTED_RAW(Flag)`
I would like to get rid of open-coding check in `EnabledWrite`.
In EnableWrite it would be: `CHECK_UNSUPPORTED_RAW(Flags | Memory::MF_WRITE)`.
https://reviews.llvm.org/D54080
More information about the llvm-commits
mailing list