8e2f3ea4d6
In W^X mode (i.e., FLAG_write_protect_code), the Dart VM allocates code memory with is_executable==false and then later makes it executable with Protect(kReadExecute). However, on Fuchsia, this will require a VMO with ZX_RIGHT_EXECUTE (which soon will not be the default). This CL takes the approach of always adding ZX_RIGHT_EXECUTE when in W^X mode. This is suboptimal because it means all VM allocated memory can be changed to executable, but currently the OS-independent VirtualMemory::Allocate API doesn't provide us a way to identify memory that doesn't need to be executable now but will in the future. (Note that ZX_RIGHT_EXECUTE only *allows* mapping the memory as executable; the memory is still initially mapped by VirtualMemory::Allocate as non-executable.) Extending the VirtualMemory::Allocate API is tracked in FL-172. Bug: SEC-42 Change-Id: I20555c546c5ab1798c4c36b7394f6221d3993c9e Reviewed-on: https://dart-review.googlesource.com/c/90882 Reviewed-by: Zach Anderson <zra@google.com> Commit-Queue: Zach Anderson <zra@google.com>